תוכן עניינים:

תוכנית ציור Arduino TFT: 4 שלבים
תוכנית ציור Arduino TFT: 4 שלבים

וִידֵאוֹ: תוכנית ציור Arduino TFT: 4 שלבים

וִידֵאוֹ: תוכנית ציור Arduino TFT: 4 שלבים
וִידֵאוֹ: DIY touch screen painting canvas using arduino coading. #shorts #ytshorts #arduino #diytouchscreen 2024, יולי
Anonim
תוכנית ציור Arduino TFT
תוכנית ציור Arduino TFT
תוכנית ציור Arduino TFT
תוכנית ציור Arduino TFT
תוכנית ציור Arduino TFT
תוכנית ציור Arduino TFT

מדריך זה מפרט את הקוד הנכנס לביצוע תכנית ציור למסך TFT של Arduino. אולם תוכנית זו היא ייחודית מכיוון שהיא מאפשרת שמירה של ציור לכרטיס ה- SD וטעינתו מאוחר יותר לביצוע עריכות נוספות!

אספקה

  1. Arduino Uno - שיבוט מקורי או תואם
  2. מסך מגע TFT - השתמשתי במסך Elegoo, כלומר הייתי צריך מנהלי התקנים של Elegoo.
  3. לוח קורא מיקרו SD - משמש לאחסון נתוני ציור לכרטיס SD. למסך שלי היה קורא מובנה מתחת לתצוגה.
  4. חרט - המסך שלי הגיע עם אחד. גם ציפורניים עובדות היטב.
  5. כרטיס Micro SD - לא יותר מ- 32GB, בשל מגבלות עיצוב exFAT (ה- Arduino יכול לקרוא כרטיסים בפורמט FAT32 אך לא exFAT. רוב הכרטיסים הגדולים יותר מעוצבים ב- exFAT.). זה מהסוג שהיית מכניס לטלפון עם שטח אחסון הניתן להרחבה.
  6. מחשב עם Arduino IDE
  7. כבל תכנות - USB A ל- USB B. Arduino שלי הגיע עם אחד.
  8. מתאם כרטיס SD - משמש להמרת כרטיס ה- Micro SD לכדי SD רגיל להכניס לחריץ SD או כזה שמחבר כרטיס SD לחריץ USB.

שלב 1: פרמט את כרטיס ה- SD

פרמט את כרטיס ה- SD
פרמט את כרטיס ה- SD
פרמט את כרטיס ה- SD
פרמט את כרטיס ה- SD
  1. קח את כרטיס ה- Micro SD וחבר אותו למחשב באמצעות קורא כרטיסי ה- SD שלך
  2. פתח את סייר הקבצים ומצא את כרטיס ה- SD.
  3. לחץ עליו באמצעות לחצן העכבר הימני ובחר עיצוב.
  4. הגדר את האפשרויות על סמך צילום המסך.
  5. לחץ על התחל.
  6. הוצא את הכרטיס לאחר השלמת התהליך.

אם אינך מפעיל את Windows, נסה להשתמש ב- SD Formatter מאגודת ה- SD.

שלב 2: הכינו את הארדואינו

הכינו את הארדואינו
הכינו את הארדואינו
הכינו את הארדואינו
הכינו את הארדואינו
  1. לחץ את מגן המסך כלפי מטה אל הארדואינו, ודאג ליישר את הסיכות.
  2. הכנס את כרטיס ה- SD לתוך הקורא מתחת למסך.

שלב 3: סקיצה של ארדואינו

למרות שרשימת החלקים הייתה די פשוטה, יש המון קוד. אני אעבור על זה שלב אחר שלב כאן.

#לִכלוֹל

#include #include #include #include

Elegoo_GFX, _TFTLCD ו- TouchScreen הם כולם ספציפיים לחומרה. אם אתה משתמש במסך אחר, השתמש בספריות שסופקו על ידי היצרן.

SPI ו- SD משמשים לתקשורת עם כרטיס ה- SD. SPI הוא הפרוטוקול המשמש את בקר כרטיס ה- SD.

#if מוגדר (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

זה גם ספציפי לחומרה.

#הגדר YP A3 // חייב להיות סיכה אנלוגית #הגדר XM A2 // חייב להיות סיכה אנלוגית #הגדר YM 9 #הגדר XP 8

// גע ל ILI9341 TP חדש

#הגדר TS_MINX 120 #הגדר TS_MAXX 900 #הגדר TS_MINY 70 #הגדר TS_MAXY 920

#define CSPIN 10

#הגדרת LCD_CS A3

#הגדר LCD_CD A2 #הגדר LCD_WR A1 #הגדר LCD_RD A0 #הגדר LCD_RESET A4

כל אחד מהמשפטים #define האלה גורם ל- IDE להחליף את השם בערך. כאן הם הגדירו את סיכות ה- I/O של ה- LCD ו- SD.

// הקצה שמות לכמה ערכי צבע של 16 סיביות: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

אלה הם כמה מן הצבעים המשמשים את הקוד. #הגדרת אותם הופכת את קריאת הקוד לקלה יותר.

#define PENRADIUS 3

זה מגדיר את גודל עט הציור.

#define MINPRESSURE 10#הגדר MAXPRESSURE 1000

// לקבלת דיוק לחץ טוב יותר, עלינו לדעת את ההתנגדות

// בין X+ ו- X- השתמש בכל מולטימטר כדי לקרוא אותו // עבור זה שאני משתמש בו, 300 אוהם על פני לוח ה- X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

הצהרות אלה מגדירות את הלחץ הדרוש לרישום מגע, אתחול פונקציית המגע והפעלת המסך.

אחסון קבצים; int storageSize; int stoX = 1; int stoY = 1;

אלה משתנים עבור חלק האחסון של התוכנית.

הגדרת void (void) {Serial.begin (9600); Serial.println ("תוכנית צבע");

tft.reset ();

מזהה uint16_t = tft.readID ();

אם (מזהה == 0x0101) {מזהה = 0x9341; Serial.println (F ("נמצא מנהל התקן LCD 0x9341")); }

// הפעל את המסך

tft.begin (מזהה); tft.setRotation (2);

pinMode (13, OUTPUT);

// הפעל כרטיס SD

if (! SD.begin (CSPIN)) {Serial.println ("אתחול SD נכשל"); לַחֲזוֹר; } Serial.println ("אתחול SD");

// צייר את הרקע

drawBackground (); }

פונקציית ההתקנה מתחילה Serial אם היא זמינה, מאפסת את המסך, מזהה את מנהל ההתקן של TFT, מפעילה את המסך, מפעילה את הכרטיס וקוראת לפונקציה לצייר את הרקע.

אני אדלג לחלק העיקרי של פונקציית הלולאה. כל השאר משמש רק להנעת מסך המגע.

// זיהוי הקש על המסך ושמור אותו למשתנים אם (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - מפה (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//לצייר

if (p.y> 21) {// שמור נתונים לאחסון כרטיסי SD = SD.open ("storage.txt", FILE_WRITE); storage.print (עמ 'x); storage.print (","); storage.println (p.y); storage.close ();

// נקודה במיקום המגע

tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }

// כפתור מחק

if ((עמ '198) && (עמ' x <219)) {deleteStorage (); }

// טעינת פעולת כפתור

if ((עמ '219)) {loadStorage (); }}

אם זוהה עיתונות, הגדר משתנים למיקום העיתונות.

לאחר מכן, אם העיתונות נמצאת בתוך אזור הציור, שמור את הנקודה בכרטיס ה- SD ב- storage.txt וצייר עיגול בנקודה הנלחצת, עם גודל וצבע מוגדרים.

לאחר מכן, אם הלחיצה נמצאת במקום של לחצן המחיקה, הפעל פונקציה שמוחקת את הציור המאוחסן. אם אתה משתמש במסך בגודל אחר, נסה לשחק עם ערכי מיקום הלחצן.

לאחר מכן, אם הלחיצה נמצאת במקום של לחצן הטעינה, הפעל פונקציה הטוענת את הציור המאוחסן. אם אתה משתמש במסך בגודל אחר, נסה לשחק עם ערכי מיקום הלחצן.

כעת, אסביר את הפונקציות.

הפונקציה הראשונה נקראת בהגדרה כדי לצייר את הרקע והכפתורים.

void drawBackground () {// הגדר את הרקע tft.fillScreen (BLACK);

// צביעת טקסט

tft.setTextColor (לבן); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("צבע");

// כפתור טעינה

tft.fillRect (219, 0, 21, 21, ירוק);

// כפתור נקה

tft.fillRect (198, 0, 21, 21, אדום); }

הוא ממלא את המסך בשחור, כותב את המילה צייר ומצייר ריבועים צבעוניים לכפתורים. אם אתה משתמש במסך בגודל אחר, נסה לשחק עם ערכי מיקום הלחצן.

void deleteStorage () {// מחק את הקובץ SD.remove ("storage.txt");

// הגדר את הרקע

tft.fillScreen (שחור);

// מחק טקסט הצלחה

tft.setTextColor (לבן); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt נמחק");

// תן למשתמש לקרוא אותו

עיכוב (2000);

// המשך בציור

drawBackground (); }

הפונקציה deleteStorage מסירה storage.txt, ממלאת את המסך בשחור ומספקת הודעת הצלחה למחיקה. לאחר מכן הוא מכנה את הפונקציה drawBackground כדי לאפשר לך להתחיל לצייר משהו אחר.

void loadStorage () {// הימנע מחזרות מעיכוב איטי באצבעות (250);

// בדוק אם יש קובץ אחסון

אם (! SD.exists ("storage.txt")) {Serial.println ("אין קובץ storage.txt"); לַחֲזוֹר; }

// פתח קובץ במצב לקריאה בלבד

אחסון = SD.open ("storage.txt", FILE_READ);

// למרות שיש נתונים, while (stoY> 0) {// עדכן משתני מיקום stoX = storage.parseInt (); stoY = storage.parseInt ();

// צייר מאחסון

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // סגור את אחסון הקבצים.קלוז (); }

לבסוף, הפונקציה loadStorage בודקת קובץ אחסון, פותחת אותו במצב לקריאה בלבד ואז חוזרת על הלולאה הבאה:

כל עוד יש יותר נתונים,

  1. עדכן את משתני המיקום עם הנתונים המנותחים מ- storage.txt
  2. צייר עיגול בנקודה הטעונה

כאשר הלולאה מסתיימת ואין יותר נתונים, היא סוגרת את קובץ האחסון.

הקוד למערכון זה ניתן למצוא להלן. פשוט הורד אותו, פתח אותו בארדואינו והעלה אותו ללוח שלך!

שלב 4: שימוש בתוכנית זו

שימוש בתוכנית זו
שימוש בתוכנית זו

פשוט חבר את הארדואינו שלך למקור חשמל - מחשב, סוללה, יבלת קיר וכו 'והתחל לצייר. כדי למחוק את הציור ואת הנתונים המאוחסנים שלו, לחץ על הכפתור האדום. כדי לטעון ציור מאחסון ולהמשיך לעבוד עליו, לחץ על הכפתור הירוק. בדרך זו, תוכל לחזור על ציור פעמים רבות!

כהרחבה, נסה לתכנן את הציור במחשב שלך:

  1. חבר את כרטיס ה- SD עם הנתונים למחשב שלך.
  2. פתח את storage.txt בעורך הטקסט/קוד המועדף עליך.
  3. העתק את כל הערכים ב- storage.txt.
  4. עקוב אחר הקישור הזה לתוכנית לשרטוט נקודות.
  5. מחק את שתי הנקודות לדוגמה מצד שמאל.
  6. הדבק את הנתונים שלך היכן שהן הנקודות לדוגמה.

זוהי דרך מסודרת להשוויץ בציורים שלך - אולי אפילו לנסות לשנות את צבע הנקודה בארדואינו או בפלוטר הנקודות!

שינויים יתקבלו בברכה, ואשמח לראות כמה הצעות בתגובות. תודה שהסתכלת על זה ואני מקווה שתמצא לזה שימושים מסודרים בפרויקטים שלך!

מוּמלָץ: