Мазмұны:

Arduino TFT сурет салу бағдарламасы: 4 қадам
Arduino TFT сурет салу бағдарламасы: 4 қадам

Бейне: Arduino TFT сурет салу бағдарламасы: 4 қадам

Бейне: Arduino TFT сурет салу бағдарламасы: 4 қадам
Бейне: Урок №2. Ползунки и кисти. BeyondRobotics 2024, Шілде
Anonim
Arduino TFT сурет салу бағдарламасы
Arduino TFT сурет салу бағдарламасы
Arduino TFT сурет салу бағдарламасы
Arduino TFT сурет салу бағдарламасы
Arduino TFT сурет салу бағдарламасы
Arduino TFT сурет салу бағдарламасы

Бұл нұсқаулық 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. My Arduino бірімен бірге келді.
  8. SD картасының адаптері - Micro SD картасын SD ұяшығына немесе SD картасын USB ұяшығына қосатын стандартты SD картасына түрлендіру үшін қолданылады.

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 эскизі

Бөлшектер тізімі өте қарапайым болғанымен, көптеген код бар. Мен мұнда кезең-кезеңмен өтемін.

#қосу

#қосу #қосу #қосу #қосу

Elegoo_GFX, _TFTLCD және TouchScreen барлығы аппараттық құралдарға тән. Егер сіз басқа экранды қолдансаңыз, өндіруші ұсынған кітапханаларды пайдаланыңыз.

SD картасымен байланыс үшін SPI және 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 анықтаңыз

#LCD_CS A3 анықтаңыз

#LCD_CD A2 анықтау #LCD_WR A1 анықтау #LCD_RD A0 анықтау #LCD_RESET A4

Осы #define операторларының әрқайсысы IDE атауын мәнмен алмастырады. Мұнда олар СКД мен SD енгізу -шығару түйреуіштерін орнатады.

// Кейбір 16-разрядтық түс мәндеріне аттарды тағайындаңыз: #ҚАРА 0x0000 анықтаңыз #ақты анықтаңыз 0xFFFF #анықтаңыз ҚЫЗЫЛ 0xF800 #анықтаңыз КӨК 0x001F #анықтаңыз ЖАСЫЛ 0x07E0

Бұл кодта қолданылатын бірнеше түстер. #оларды анықтау кодты оқуды жеңілдетеді.

#анықтаңыз PENRADIUS 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);

Бұл мәлімдемелер сенсорды тіркеуге, сенсорлық функцияны инициализациялауға және экранды іске қосуға қажетті қысымды анықтайды.

Файлдарды сақтау; 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 («,»); сақтау.println (p.y); storage.close ();

// Нүкте сенсорлық күйде

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

// Жою батырмасы

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

// Жүктеу батырмасының әрекеті

if ((p. 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, ҚЫЗЫЛ); }

Ол экранды қара етіп толтырады, 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 немесе нүкте -плоттердегі нүктенің түсін өзгертуге тырысыңыз!

Өзгерістер құпталады, мен түсініктемелерде кейбір ұсыныстарды көргім келеді. Мұны қарағаныңыз үшін рахмет, мен сіз оны өзіңіздің жобаларыңызда ұқыпты қолдана аласыз деп үміттенемін!

Ұсынылған: