Съдържание:
- Консумативи
- Стъпка 1: Форматирайте SD картата
- Стъпка 2: Подгответе Arduino
- Стъпка 3: Скица на Arduino
- Стъпка 4: Използване на тази програма
Видео: Arduino TFT програма за рисуване: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Тази инструкция подробно описва кода, който влиза в създаването на програма за рисуване за Arduino TFT екран. Тази програма обаче е уникална, тъй като позволява запазването на чертеж на SD картата и зареждането му по -късно, за да се направят повече редакции!
Консумативи
- Arduino Uno - оригинален или съвместим клонинг
- TFT сензорен екран - Използвах екран на Elegoo, което означава, че имах нужда от драйвери на Elegoo.
- Микро SD четец дъска - използва се за съхраняване на чертежни данни на SD карта. Моят екран имаше вграден четец под дисплея.
- Stylus - екранът ми дойде с такъв. Ноктите също работят добре.
- Micro SD карта - не повече от 32 GB, поради ограничения за форматиране exFAT (Arduino може да чете карти с формат FAT32, но НЕ exFAT. Повечето по -големи карти са форматирани с exFAT.). Това е видът, който бихте поставили в телефон с разширяема памет.
- Компютър с Arduino IDE
- Програмиращ кабел - USB A към USB B. Моят Arduino дойде с такъв.
- Адаптер за SD карта - използва се за преобразуване на Micro SD картата в нормална SD за поставяне в SD слот ИЛИ такъв, който свързва SD карта към USB слот.
Стъпка 1: Форматирайте SD картата
- Вземете Micro SD картата и я прикрепете към компютъра си, като използвате четеца на SD карти
- Отворете File Explorer и намерете SD картата.
- Щракнете с десния бутон върху него и изберете Форматиране.
- Задайте опциите въз основа на екранната снимка.
- Щракнете върху Старт.
- Извадете картата, когато процесът приключи.
Ако не използвате Windows, опитайте да използвате SD Formatter от SD асоциацията.
Стъпка 2: Подгответе Arduino
- Натиснете екрана си върху Arduino, като внимавате да подредите щифтовете.
- Поставете SD картата в четеца под екрана.
Стъпка 3: Скица на Arduino
Въпреки че списъкът с части беше доста прост, има много код. Ще го разгледам стъпка по стъпка тук.
#включва
#включи #включи #включи #включи
Всички 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
#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920
#дефинирайте CSPIN 10
#дефинирайте LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
Всеки от тези изявления #define кара IDE да замени името със стойността. Тук те задават LCD и SD I/O щифтове.
// Присвояване на имена на някои 16-битови стойности на цветовете: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 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 ("Програма за боядисване");
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 драйвера, стартира екрана, стартира картата и извиква функция за рисуване на фона.
Ще премина към по -голямата част от цикълната функция. Всичко останало се използва само за задвижване на сензорния екран.
// Откриваме натискане на екрана и го съхраняваме в променливи if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Мащабиране 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 (p.x); storage.print (","); storage.println (p.y); storage.close ();
// Точка в позицията на докосване
tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }
// Бутон за изтриване
if ((p.y 198) && (p.x <219)) {deleteStorage (); }
// Действие на бутона за зареждане
if ((p.y 219)) {loadStorage (); }}
Ако бъде открита преса, задайте променливи за местоположението на пресата.
След това, ако пресата е в зоната за рисуване, запишете точката на SD картата в storage.txt и нарисувайте кръг в натиснатата точка с определен размер и цвят.
След това, ако натискането е на мястото на бутона за изтриване, стартирайте функция, която изтрива съхранената рисунка. Ако използвате екран с различен размер, опитайте да играете със стойностите на местоположението на бутона.
След това, ако натискането е на мястото на бутона за зареждане, стартирайте функция, която зарежда съхранената чертеж. Ако използвате екран с различен размер, опитайте да играете със стойностите на местоположението на бутона.
Сега ще обясня функциите.
Първата функция се извиква в настройката за изчертаване на фона и бутоните.
void drawBackground () {// Задайте фона tft.fillScreen (BLACK);
// Боядисване на текст
tft.setTextColor (БЯЛ); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");
// Бутон за зареждане
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 ("No 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 проверява за файл за съхранение, отваря го в режим само за четене и след това повтаря този цикъл:
Докато има повече данни,
- Актуализирайте променливите на позицията с анализираните данни от storage.txt
- Начертайте кръг в заредената точка
Когато цикълът завърши и няма повече данни, той затваря файла за съхранение.
Кодът за тази скица може да бъде намерен по -долу. Просто го изтеглете, отворете го в Arduino и го качете на дъската си!
Стъпка 4: Използване на тази програма
Просто включете вашия Arduino към източник на захранване - компютър, батерия, брадавица и т.н. и започнете да рисувате. За да изтриете чертежа и неговите съхранени данни, натиснете червения бутон. За да заредите чертеж от хранилището и да продължите да работите върху него, щракнете върху зеления бутон. По този начин можете да повторите многократно рисунка!
Като разширение, опитайте да начертаете чертежа на вашия компютър:
- Включете SD картата с данни в компютъра си.
- Отворете storage.txt в любимия си редактор на текст/код.
- Копирайте всички стойности в storage.txt.
- Следвайте тази връзка към програма за начертаване на точки.
- Изтрийте двете примерни точки вляво.
- Поставете данните си там, където бяха примерните точки.
Това е чист начин да покажете вашите рисунки - може би дори да опитате да промените цвета на точката на Arduino или в точков плотер!
Промените са добре дошли и бих искал да видя някои предложения в коментарите. Благодаря ви, че разгледахте това и се надявам, че ще намерите чисти приложения за това във вашите собствени проекти!
Препоръчано:
Робот 5 в 1 Arduino - Следвай ме - Следване на ред - Сумо - Рисуване - Избягване на препятствия: 6 стъпки
Робот 5 в 1 Arduino | Следвай ме | Следване на ред | Сумо | Рисуване | Избягване на препятствия: Тази контролна платка за робот съдържа микроконтролер ATmega328P и драйвер за двигател L293D. Разбира се, той не се различава от платката Arduino Uno, но е по -полезен, защото не се нуждае от друг щит за задвижване на двигателя! Без скок
Китайско традиционно рисуване NeoPixel Wall Art (Powered by Arduino): 6 стъпки (със снимки)
Китайско традиционно рисуване NeoPixel Wall Art (Осъществено от Arduino): Чувствате ли се малко скучно за стената си? Нека днес направим красиво и лесно изкуство за стена, задвижвано от Arduino! Просто трябва да махнете с ръка пред рамката и да изчакате магията! В този урок ще обсъдим как да създадете свой собствен
Използване на робот за рисуване за Arduino с час на уроци по код: 3 стъпки
Използване на робот за рисуване за Arduino с часове на уроци по код: Създадох робот за рисуване на Arduino за работилница, за да помогна на тийнейджърките да се заинтересуват от STEM теми (вижте https://www.instructables.com/id/Arduino-Drawing-Robot/ ). Роботът е проектиран да използва команди за програмиране в стил Turtle, като например напред (distanc
Програма за рисуване VGA: 5 стъпки
Програма за рисуване на VGA: Проект от: Адам Клайн, Иън Страчан, Брандън Слейтър Проектът, който се стремяхме да завършим, беше да съхранява, анализира и показва информация от USB мишка под формата на програма за рисуване. Идеята зад проекта е да можете да включите мишката
Светодиодни писалки за рисуване: Инструменти за рисуване на леки драскулки: 6 стъпки (със снимки)
Светодиодни химикалки за рисуване: Инструменти за рисуване на леки драскулки: Съпругата ми Лори е непрекъснато рисувачка и от години играя с фотография с дълга експозиция. Вдъхновени от групата PikaPika за лека артистичност и лекотата на цифровите фотоапарати, ние се възползвахме от формата на изкуството за рисуване на светлина, за да видим какво можем да направим