
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



В этой инструкции подробно описан код, который используется для создания программы рисования для экрана Arduino TFT. Однако эта программа уникальна тем, что позволяет сохранить рисунок на SD-карту и загрузить его позже, чтобы внести больше правок!
Запасы
- Arduino Uno - оригинал или совместимый клон
- Сенсорный экран TFT - я использовал экран Elegoo, то есть мне нужны драйверы Elegoo.
- Плата считывателя Micro SD - используется для хранения данных чертежей на SD-карте. У моего экрана был встроенный ридер под дисплеем.
- Стилус - мой экран был с ним. Ногти тоже подойдут.
- Карта Micro SD - не более 32 ГБ из-за ограничений форматирования exFAT (Arduino может читать карты, отформатированные в FAT32, но НЕ exFAT. Большинство карт большего размера отформатированы с помощью exFAT). Это тот тип, который вы бы поместили в телефон с расширяемой памятью.
- Компьютер с Arduino IDE
- Кабель для программирования - USB A - USB B. В моем Arduino он был.
- Адаптер SD-карты - используется для преобразования карты Micro SD в обычную SD для установки в слот SD ИЛИ тот, который подключает SD-карту к слоту USB.
Шаг 1. Отформатируйте SD-карту


- Возьмите карту Micro SD и прикрепите ее к компьютеру с помощью устройства чтения SD-карт.
- Откройте проводник и найдите SD-карту.
- Щелкните его правой кнопкой мыши и выберите Формат.
- Установите параметры на основе снимка экрана.
- Щелкните "Пуск".
- Извлеките карту, когда процесс будет завершен.
Если вы не используете Windows, попробуйте использовать SD Formatter из ассоциации SD.
Шаг 2: подготовьте Arduino


- Прижмите экранный экран к Arduino, стараясь совместить контакты.
- Вставьте SD-карту в считывающее устройство под экраном.
Шаг 3: эскиз Arduino
Хотя список деталей был довольно простым, кода там много. Я рассмотрю это шаг за шагом здесь.
#включают
#include #include #include #include
Elegoo_GFX, _TFTLCD и TouchScreen зависят от оборудования. Если вы используете другой экран, используйте библиотеки, предоставленные производителем.
SPI и SD используются для связи с SD-картой. SPI - это протокол, используемый контроллером SD-карты.
#if defined (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Это также зависит от оборудования.
#define YP A3 // должен быть аналоговым выводом # define XM A2 // должен быть аналоговым выводом #define YM 9 #define XP 8
// Touch для нового ILI9341 TP
#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920
#define CSPIN 10
#define LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
Каждый из этих операторов #define заставляет среду IDE заменять имя значением. Здесь они устанавливают контакты ввода-вывода LCD и SD.
// Присваиваем имена некоторым 16-битным значениям цвета: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Это несколько цветов, используемых в коде. # их определение упрощает чтение кода.
#define ПЕНРАДИУС 3
Это определяет размер пера для рисования.
#define MINPRESSURE 10 # define 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 («Найден драйвер ЖК-дисплея 0x9341»)); }
// Запускаем экран
tft.begin (идентификатор); tft.setRotation (2);
pinMode (13, ВЫХОД);
// Запускаем SD-карту
if (! SD.begin (CSPIN)) {Serial.println («Ошибка инициализации SD»); возвращение; } Serial.println ("SD инициализирована");
// Рисуем фон
drawBackground (); }
Функция настройки запускает последовательный порт, если он доступен, сбрасывает экран, обнаруживает драйвер 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-карту storage = SD.open ("storage.txt", FILE_WRITE); хранилище. печать (p.x); storage.print (","); storage.println (p.y); storage.close ();
// Точка в месте касания
tft.fillCircle (p.x, p.y, ПЕНРАДИУС, БЕЛЫЙ); }
// Кнопка удаления
если ((стр. 198) && (стр. x <219)) {deleteStorage (); }
// Загрузить действие кнопки
если ((стр. 219)) {loadStorage (); }}
Если пресс обнаружен, установите переменные для местоположения пресса.
Затем, если печатная машина находится в области рисования, сохраните точку на SD-карту в storage.txt и нарисуйте круг в нажатой точке определенного размера и цвета.
Затем, если пресс находится в месте кнопки удаления, запустите функцию, которая удаляет сохраненный рисунок. Если вы используете экран другого размера, попробуйте поиграть со значениями расположения кнопок.
Затем, если пресс находится в месте кнопки загрузки, запустите функцию, загружающую сохраненный рисунок. Если вы используете экран другого размера, попробуйте поиграть со значениями расположения кнопок.
Теперь я объясню функции.
Первая функция вызывается в настройке для рисования фона и кнопок.
void drawBackground () {// Устанавливаем фон tft.fillScreen (ЧЕРНЫЙ);
// Закрашиваем текст
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 () {// Избегайте повторов из-за медленных пальцев delay (250);
// Проверяем наличие файла для хранения
if (! SD.exists ("storage.txt")) {Serial.println ("Нет файла storage.txt"); возвращение; }
// Открываем файл в режиме только для чтения
storage = SD.open ("storage.txt", FILE_READ);
// Пока есть данные, while (stoY> 0) {// Обновляем переменные позиции stoX = storage.parseInt (); stoY = storage.parseInt ();
// Рисуем из хранилища
tft.fillCircle (stoX, stoY, PENRADIUS, БЕЛЫЙ); } // Закрываем файл storage.close (); }
Наконец, функция loadStorage проверяет наличие файла хранилища, открывает его в режиме только для чтения, а затем повторяет этот цикл:
Пока есть больше данных,
- Обновите переменные позиции с помощью проанализированных данных из storage.txt
- Нарисуйте круг в загруженной точке
Когда цикл завершается и данных больше нет, он закрывает файл хранилища.
Код этого скетча можно найти ниже. Просто скачайте его, откройте в Arduino и загрузите на свою плату!
Шаг 4: Использование этой программы

Просто подключите Arduino к источнику питания - компьютеру, батарее, бородавке и т. Д. И начинайте рисовать. Чтобы стереть рисунок и сохраненные в нем данные, нажмите красную кнопку. Чтобы загрузить рисунок из хранилища и продолжить работу с ним, нажмите зеленую кнопку. Таким образом, вы можете многократно повторять рисунок!
В качестве расширения попробуйте нарисовать рисунок на своем компьютере:
- Подключите SD-карту с данными к компьютеру.
- Откройте storage.txt в своем любимом текстовом редакторе / редакторе кода.
- Скопируйте все значения в storage.txt.
- Перейдите по этой ссылке к программе точечного построения.
- Удалите две примерные точки слева.
- Вставьте свои данные туда, где были точки для примера.
Это отличный способ продемонстрировать свои рисунки - возможно, даже попробуйте изменить цвет точки на Arduino или в плоттере!
Модификации приветствуются, и я хотел бы увидеть некоторые предложения в комментариях. Спасибо, что взглянули на это, и я надеюсь, что вы найдете ему полезное применение в своих собственных проектах!
Рекомендуемые:
Трейси - Машина для рисования: 22 шага (с изображениями)

Tracey - Drawing Machine: Работа над этим руководством находится в стадии разработки - мы приложим все усилия, чтобы упростить его, но начальные черновики потребуют опыта создателя, 3D-печати, сборки деталей, пайки электронных деталей, опыта работы с Arduino IDE и т. Д
Программа рисования VGA: 5 шагов

Программа рисования VGA: Проект: Адам Кляйн, Ян Страчан, Брэндон Слейтер. Проект, который мы намеревались завершить, состоял в том, чтобы сохранять, анализировать и отображать информацию с USB-мыши в форме программы рисования. Идея проекта состоит в том, чтобы можно было подключить мышь
Машина для рисования крупномасштабного полярографа с выдвижной головкой ручки: 4 шага (с изображениями)

Крупномасштабная машина для рисования полярографа с выдвижной головкой ручки: * Крупномасштабная установка этой машины была задумана и выполнена с Руи Перьера. Это дизайн для рисунка с открытым исходным кодом для полярографа (http://www.polargraph.co.uk/) проект. Он оснащен выдвижной головкой пера и оборудованием, позволяющим
Машина для рисования: 4 шага (с изображениями)

Машина для рисования: как я сделал свою машину для рисования и в процессе сделал художников устаревшими. Когда я впервые переехал в свою новую студию, у меня не было никаких важных проектов, и я еще не чувствовал себя комфортно в этом пространстве. Я построил эту "Чертежную машину" чтобы я мог быть
Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: 6 шагов (с изображениями)

Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: Моя жена Лори - ярый рисовальщик, и я много лет играл с фотографией с длинной выдержкой. Вдохновленные группой художников по свету PikaPika и простотой цифровых фотоаппаратов, мы взяли на вооружение искусство рисования светом, чтобы увидеть, что мы можем сделать. У нас есть большой