Мазмуну:

Arduino TFT Drawing программасы: 4 кадам
Arduino TFT Drawing программасы: 4 кадам

Video: Arduino TFT Drawing программасы: 4 кадам

Video: Arduino TFT Drawing программасы: 4 кадам
Video: Фоторамка с Понасенковым на TFT дисплее и Arduino: это очень просто! 2024, Июль
Anonim
Arduino TFT Drawing программасы
Arduino TFT Drawing программасы
Arduino TFT Drawing программасы
Arduino TFT Drawing программасы
Arduino TFT Drawing программасы
Arduino TFT Drawing программасы

Бул көрсөтмө Arduino TFT экраны үчүн чийме программасын түзүүгө кире турган кодду деталдаштырат. Бул программа уникалдуу, бирок ал чиймени SD картага сактоого жана кийинчерээк жүктөөгө көбүрөөк түзөтүүлөрдү киргизүү үчүн мүмкүнчүлүк берет!

Жабдуулар

  1. Arduino Uno - оригиналдуу же шайкеш клон
  2. TFT сенсордук экраны - Мен Elegoo экранын колдондум, демек мага Elegoo драйверлери керек болчу.
  3. Micro SD окуучу тактасы - чийүү маалыматын SD картага сактоо үчүн колдонулат. Менин экранымда дисплейдин астына курулган окурман болгон.
  4. Стилус - менин экраным бирөө менен келди. Тырмактар да жакшы иштейт.
  5. Micro SD карта - 32 ГБтан ашпайт, анткени exFAT форматтоо чектөөлөрүнөн улам (Arduino FAT32 форматталган карталарды окуй алат, бирок exFAT ЭМЕС. Эң чоң карттар exFAT менен форматталган.). Кеңейтилүүчү сактагычка ээ болгон телефонго салып койчу нерсе ушундай.
  6. Arduino IDE менен компьютер
  7. Программалоо кабели - USB A дан USB B. Менин Arduino бири менен келди.
  8. SD карта адаптери - Micro SD картаны кадимки SDге айландыруу үчүн колдонулат, же SD картаны USB уячасына туташтырат.

1 -кадам: SD картаны форматтаңыз

SD картаны форматтаңыз
SD картаны форматтаңыз
SD картаны форматтаңыз
SD картаны форматтаңыз
  1. Micro SD картасын алып, SD картты окугуч менен компьютериңизге тиркеңиз
  2. File Explorerди ачыңыз жана SD картаны табыңыз.
  3. Аны оң баскыч менен чыкылдатып, Форматты тандаңыз.
  4. Скриншоттун негизинде параметрлерди коюңуз.
  5. Старт басыңыз.
  6. Процесс аяктаганда картаны чыгарып салыңыз.

Эгерде сиз Windowsту иштетпей жатсаңыз, SD ассоциациясынан SD Formatter колдонуп көрүңүз.

2 -кадам: Arduino даярдаңыз

Arduino даярдаңыз
Arduino даярдаңыз
Arduino даярдаңыз
Arduino даярдаңыз
  1. Экран калканчыңызды Arduinoго басыңыз, казыктарды тизип коюңуз.
  2. SD картаны экрандын астындагы окурманга салыңыз.

3 -кадам: Arduino Sketch

Бөлүктөрдүн тизмеси абдан жөнөкөй болгону менен, бир топ код бар. Мен бул жерден этап-этабы менен өтөм.

#кошуу

#кошуу #кошуу #кошуу #кошуу

Elegoo_GFX, _TFTLCD жана TouchScreen бардыгы жабдыкка тиешелүү. Эгер башка экранды колдонсоңуз, өндүрүүчү тарабынан берилген китепканаларды колдонуңуз.

SPI жана SD SD карта менен байланышуу үчүн колдонулат. SPI - бул SD карта контроллери колдонгон протокол.

#эгер аныкталган болсо (_ 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

#аныктоо CSPIN 10

#define LCD_CS A3

#decine LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4

Бул #define билдирүүлөрүнүн ар бири IDEдин атын мааниси менен алмаштырууга мажбур кылат. Бул жерде алар LCD жана SD I/O казыктарын коюшат.

// Аттарды 16-бит түстүү баалуулуктарга дайындоо: #КАРА 0x0000 аныктоо #АК 0xFFFF #КЫЗЫЛ 0xF800 аныктоо КӨК 0x001F #Жашыл 0x07E0

Бул коддо колдонулган түстөрдүн бир нечеси. #аларды аныктоо кодду окууну жеңилдетет.

#аныктоо ПЕНРАДИУС 3

Бул чийме калеминин өлчөмүн аныктайт.

#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);

Бул билдирүүлөр тийүүнү каттоого, тийүү функциясын баштоого жана экранды баштоого керектүү кысымды аныктайт.

File storage; int storageSize; int stoX = 1; int stoY = 1;

Бул программанын сактоо бөлүгү үчүн өзгөрмөлөр.

void setup (void) {Serial.begin (9600); Serial.println ("Paint программасы");

tft.reset ();

uint16_t идентификатору = tft.readID ();

if (идентификатор == 0x0101) {идентификатор = 0x9341; Serial.println (F ("0x9341 LCD драйвери табылды")); }

// Экранды баштаңыз

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) {// Масштаб p.x = карта (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); сактоо.чап (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Тийүү абалында чекит

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

// Жок кылуу баскычы

if ((p.y 198) && (p.x <219)) {deleteStorage (); }

// Жүктөө баскычынын аракети

if ((p.y 219)) {loadStorage (); }}

Эгерде пресс табылса, пресстин жайгашкан жери үчүн өзгөрмөлөрдү коюңуз.

Андан кийин, эгер пресс чийүү чөйрөсүндө болсо, чекитти storage.txt ичиндеги SD картка сактаңыз жана басылган жерде тегеректи белгилеңиз, өлчөмү жана түсү менен.

Андан кийин, эгер басма сөз жок кылуу баскычынын ордунда болсо, сакталган чиймени жок кылган функцияны аткарыңыз. Эгерде сиз башка өлчөмдөгү экранды колдонуп жатсаңыз, баскычтын жайгашкан жеринин мааниси менен ойноп көрүңүз.

Андан кийин, эгер пресс жүктөө баскычынын жайгашкан жеринде болсо, сакталган чиймени жүктөгөн функцияны аткарыңыз. Эгерде сиз башка өлчөмдөгү экранды колдонуп жатсаңыз, баскычтын жайгашкан жеринин мааниси менен ойноп көрүңүз.

Эми мен функцияларды түшүндүрөм.

Биринчи функция фондо жана баскычтарды тартуу үчүн орнотууда чакырылган.

void drawBackground () {// Фонду коюу tft.fillScreen (BLACK);

// Текстти боё

tft.setTextColor (АК); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Боёк");

// Жүктөө баскычы

tft.fillRect (219, 0, 21, 21, GREEN);

// Тазалоо баскычы

tft.fillRect (198, 0, 21, 21, RED); }

Ал экранды кара кылып толтурат, Paint сөзүн жазат жана баскычтар үчүн түстүү төрт бурчтуктарды тартат. Эгерде сиз башка өлчөмдөгү экранды колдонуп жатсаңыз, баскычтын жайгашкан жеринин мааниси менен ойноп көрүңүз.

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);

// Сактоо файлын текшериңиз

if (! 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); } // Файлды жабуу. Storage.close (); }

Акыр-аягы, loadStorage функциясы сактоо файлын текшерет, аны окуу үчүн гана режимде ачат, андан кийин бул циклди кайталайт:

Дагы көп маалымат болгондо,

  1. Позициянын өзгөрмөлөрүн storage.txt талданган маалыматтар менен жаңыртыңыз
  2. Жүктөлгөн чекитке тегерек чийиңиз

Цикл бүткөндө жана башка маалымат жок болгондо, ал сактоо файлын жабат.

Бул эскиздин кодун төмөндө тапса болот. Жөн эле жүктөп алып, Arduinoдо ачып, тактаңызга жүктөңүз!

4 -кадам: Бул программаны колдонуу

Бул Программаны колдонуу
Бул Программаны колдонуу

Жөн гана Arduino'ну кубат булагына - компьютерге, батареяга, дубал сөөлүнө ж.б. сайып баштаңыз. Чиймеңизди жана анын сакталган маалыматын өчүрүү үчүн кызыл баскычты басыңыз. Чиймени сактагычтан жүктөө жана анын үстүндө иштөөнү улантуу үчүн, жашыл баскычты басыңыз. Ошентип, сиз чиймеде көп жолу кайталай аласыз!

Кеңейтүү катары чиймеңизди компьютериңизге салып көрүңүз:

  1. Маалыматты камтыган SD картты компьютериңизге сайыңыз.
  2. Сүйүктүү текст/код редакторунда storage.txt файлын ачыңыз.
  3. Storage.txtтеги бардык баалуулуктарды көчүрүү.
  4. Бул шилтеме аркылуу чекит коюу программасына өтүңүз.
  5. Сол жактагы эки мисал пунктун жок кылыңыз.
  6. Дайындарыңызды мисал болгон жерлерге чаптаңыз.

Бул сиздин чиймелериңизди көрсөтүүнүн тыкан жолу - балким, Arduinoдогу же чекит плоттериндеги чекиттин түсүн өзгөртүп көрүңүз!

Өзгөртүүлөр кабыл алынат, мен комментарийлерде кээ бир сунуштарды көргүм келет. Муну караганыңыз үчүн рахмат жана мен сиз муну өз долбоорлоруңузда тыкан колдонууну таба аласыз деп ишенем!

Сунушталууда: