Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
Ta instrukcja szczegółowo opisuje kod, który służy do tworzenia programu do rysowania dla ekranu Arduino TFT. Ten program jest jednak wyjątkowy, ponieważ pozwala na zapisanie rysunku na karcie SD i wczytanie go później w celu wprowadzenia większej liczby edycji!
Kieszonkowe dzieci
- Arduino Uno - oryginalny lub kompatybilny klon
- Ekran dotykowy TFT - korzystałem z ekranu Elegoo, co oznacza, że potrzebowałem sterowników Elegoo.
- Płytka czytnika Micro SD - służy do przechowywania danych rysunkowych na karcie SD. Mój ekran miał wbudowany czytnik pod wyświetlaczem.
- Rysik - mój ekran był wyposażony w jeden. Paznokcie też działają dobrze.
- Karta Micro SD - nie więcej niż 32GB, ze względu na ograniczenia formatowania exFAT (Arduino może czytać karty sformatowane w systemie FAT32, ale NIE exFAT. Większość większych kart jest sformatowana w systemie exFAT.). Jest to rodzaj, który można umieścić w telefonie z możliwością rozszerzenia pamięci.
- Komputer z Arduino IDE
- Kabel do programowania - USB A do USB B. Mój Arduino został dostarczony z jednym.
- Adapter karty SD - służy do konwersji karty Micro SD na normalną kartę SD, aby umieścić ją w gnieździe SD LUB taki, który łączy kartę SD z gniazdem USB.
Krok 1: Sformatuj kartę SD
- Weź kartę Micro SD i podłącz ją do komputera za pomocą czytnika kart SD
- Otwórz Eksplorator plików i znajdź kartę SD.
- Kliknij go prawym przyciskiem myszy i wybierz Format.
- Ustaw opcje na podstawie zrzutu ekranu.
- Kliknij Start.
- Wysuń kartę po zakończeniu procesu.
Jeśli nie używasz systemu Windows, spróbuj użyć programu SD Formatter z powiązania SD.
Krok 2: Przygotuj Arduino
- Dociśnij osłonę ekranu do Arduino, uważając, aby wyrównać szpilki.
- Włóż kartę SD do czytnika pod ekranem.
Krok 3: Szkic Arduino
Chociaż lista części była dość prosta, jest mnóstwo kodu. Przejdę przez to krok po kroku tutaj.
#włączać
#include #include #include #include
Elegoo_GFX, _TFTLCD i TouchScreen są specyficzne dla sprzętu. Jeśli używasz innego ekranu, skorzystaj z bibliotek dostarczonych przez producenta.
SPI i SD służą do komunikacji z kartą SD. SPI to protokół używany przez kontroler kart SD.
#if defined(_SAM3X8E_)#undef _FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif
Jest to również specyficzne dla sprzętu.
#define YP A3 // musi być pinem analogowym#define XM A2 // musi być pinem analogowym #define YM 9 #define XP 8
//Dotknij dla nowego ILI9341 TP
#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920
#zdefiniuj CSPIN 10
#define LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
Każda z tych instrukcji #define powoduje, że IDE zastępuje nazwę wartością. Tutaj ustawiają piny LCD i SD I/O.
// Przypisz nazwy do niektórych 16-bitowych wartości kolorów:#define CZARNY 0x0000 #define BIAŁY 0xFFFF #define CZERWONY 0xF800 #define NIEBIESKI 0x001F #define ZIELONY 0x07E0
Oto kilka kolorów użytych w kodzie. #definiowanie ich ułatwia czytanie kodu.
#define PENRADIUS 3
To definiuje rozmiar pióra do rysowania.
#zdefiniuj CIŚNIENIE MINIMALNE 10#zdefiniuj CIŚNIENIE MAKSYMALNE 1000
// Aby uzyskać lepszą precyzję docisku, musimy znać opór
// między X+ i X- Użyj dowolnego multimetru, aby go odczytać // Dla tego, którego używam, jego 300 omów na płycie X TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Stwierdzenia te definiują nacisk potrzebny do zarejestrowania dotyku, zainicjowania funkcji dotyku i uruchomienia ekranu.
Przechowywanie plików;int storageSize; int stoX = 1; int stoY = 1;
Są to zmienne części pamięci programu.
void setup(void) { Serial.begin(9600); Serial.println("Program do malowania");
tft.reset();
identyfikator uint16_t = tft.readID();
if (identyfikator == 0x0101) { identyfikator = 0x9341; Serial.println(F("Znaleziono sterownik LCD 0x9341")); }
//Uruchom ekran
tft.begin(identyfikator); tft.setRotation(2);
pinMode(13, WYJŚCIE);
//Uruchom kartę SD
if (!SD.begin(CSPIN)) { Serial.println("Inicjalizacja SD nie powiodła się"); powrót; } Serial.println("Zainicjowano SD");
//Narysuj tło
narysujTło(); }
Funkcja konfiguracji uruchamia Serial, jeśli jest dostępny, resetuje ekran, wykrywa sterownik TFT, uruchamia ekran, uruchamia kartę i wywołuje funkcję rysowania tła.
Przejdę do głównej części funkcji pętli. Cała reszta służy tylko do obsługi ekranu dotykowego.
//Wykryj naciśnięcie ekranu i zapisz go do zmiennych if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { //Scale p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = (tft.height() - mapa(p.y, TS_MINY, TS_MAXY, tft.height(), 0));
//Remis
if (p.y > 21) { //Zapisz dane na karcie SD = SD.open("storage.txt", FILE_WRITE); przechowywanie.drukuj(p.x); przechowywanie.print(", "); przechowywanie.println(s.y); przechowywanie.zamknij();
//Kropka w pozycji dotykowej
tft.fillCircle(p.x, p.y, PENRADIUS, BIAŁY); }
//Przycisk Usuń
if ((s.y 198) && (p.x < 219)) { deleteStorage(); }
//Załaduj działanie przycisku
if ((s.y 219)) { loadStorage(); } }
Jeśli prasa zostanie wykryta, ustaw zmienne dla lokalizacji prasy.
Następnie, jeśli prasa znajduje się w obszarze rysowania, zapisz punkt na karcie SD w pliku storage.txt i narysuj okrąg w miejscu naciśnięcia o określonym rozmiarze i kolorze.
Następnie, jeśli naciśnięcie znajduje się w miejscu przycisku usuwania, uruchom funkcję, która usunie zapisany rysunek. Jeśli używasz ekranu o innym rozmiarze, spróbuj pobawić się wartościami lokalizacji przycisków.
Następnie, jeśli prasa znajduje się w miejscu przycisku ładowania, uruchom funkcję, która wczytuje zapisany rysunek. Jeśli używasz ekranu o innym rozmiarze, spróbuj pobawić się wartościami lokalizacji przycisków.
Teraz wyjaśnię funkcje.
Pierwsza funkcja jest wywoływana w konfiguracji, aby narysować tło i przyciski.
void drawBackground() { //Ustaw tło tft.fillScreen(BLACK);
//Pomaluj tekst
tft.setTextColor(BIAŁY); tft.setRozmiarTekstu(3); tft.setCursor(0, 0); tft.println("Farba");
//Przycisk ładowania
tft.fillRect(219, 0, 21, 21, ZIELONY);
//Wyczyść przycisk
tft.fillRect(198, 0, 21, 21, CZERWONY); }
Wypełnia ekran na czarno, zapisuje słowo Paint i rysuje kolorowe kwadraty dla przycisków. Jeśli używasz ekranu o innym rozmiarze, spróbuj pobawić się wartościami lokalizacji przycisków.
void deleteStorage() { //Usuń plik SD.remove("storage.txt");
//Ustaw tło
tft.fillScreen(CZARNY);
//Usuń tekst sukcesu
tft.setTextColor(BIAŁY); tft.setRozmiarTekstu(2); tft.setCursor(0, 0); tft.println("storage.txt usunięty");
//Niech użytkownik to przeczyta
opóźnienie (2000);
//Kontynuuj rysowanie
narysujTło(); }
Funkcja deleteStorage usuwa plik storage.txt, wypełnia ekran na czarno i wyświetla komunikat o pomyślnym usunięciu. Następnie wywołuje funkcję drawBackground, aby umożliwić rozpoczęcie malowania czegoś innego.
void loadStorage() { //Unikaj powtórzeń powolnych palców delay(250);
//Sprawdź plik do przechowywania
if (! SD.exists("storage.txt")) { Serial.println("Brak pliku storage.txt"); powrót; }
//Otwórz plik w trybie tylko do odczytu
przechowywanie = SD.open("storage.txt", FILE_READ);
//Dopóki są dane, while (stoY > 0) { //Aktualizuj zmienne pozycji stoX = storage.parseInt(); stoY = przechowywanie.parseInt();
//Pobierz z magazynu
tft.fillCircle(stoX, stoY, PENRADIUS, WHITE); } //Zamknij plik storage.close(); }
Na koniec funkcja loadStorage sprawdza, czy istnieje plik pamięci, otwiera go w trybie tylko do odczytu, a następnie powtarza tę pętlę:
Dopóki jest więcej danych,
- Zaktualizuj zmienne pozycji za pomocą przeanalizowanych danych z pliku storage.txt
- Narysuj okrąg w obciążonym punkcie
Gdy pętla się zakończy i nie ma więcej danych, zamyka plik magazynu.
Kod tego szkicu można znaleźć poniżej. Wystarczy go pobrać, otworzyć w Arduino i przesłać na swoją tablicę!
Krok 4: Korzystanie z tego programu
Wystarczy podłączyć Arduino do źródła zasilania - komputera, baterii, brodawki ściennej itp. i rozpocząć rysowanie. Aby usunąć rysunek i zapisane w nim dane, naciśnij czerwony przycisk. Aby wczytać rysunek z pamięci i kontynuować pracę nad nim, kliknij zielony przycisk. W ten sposób możesz wielokrotnie powtarzać rysunek!
Jako rozszerzenie spróbuj wydrukować rysunek na komputerze:
- Podłącz kartę SD z danymi do komputera.
- Otwórz storage.txt w swoim ulubionym edytorze tekstu/kodu.
- Skopiuj wszystkie wartości z pliku storage.txt.
- Skorzystaj z tego łącza, aby przejść do programu do nanoszenia punktów.
- Usuń dwa przykładowe punkty po lewej stronie.
- Wklej swoje dane tam, gdzie były przykładowe punkty.
To fajny sposób na pokazanie swoich rysunków - może nawet spróbuj zmienić kolor punktu na Arduino lub w ploterze punktowym!
Modyfikacje są mile widziane i chciałbym zobaczyć kilka sugestii w komentarzach. Dziękuję za przyjrzenie się temu i mam nadzieję, że znajdziecie dla niego fajne zastosowania w swoich własnych projektach!
Zalecana:
Tracey - Maszyna do rysowania: 22 kroki (ze zdjęciami)
Tracey - Maszyna do rysowania: Ta instrukcja jest w toku - będziemy ciężko pracować, aby ułatwić projekt, ale początkowe szkice będą wymagały doświadczenia producenta, drukowania 3D, montażu części, lutowania części elektronicznych, doświadczenia z Arduino IDE itp
Jak malować za pomocą zwykłego pędzla i wody do rysowania na tablecie lub telefonie komórkowym: 4 kroki
Jak malować za pomocą zwykłego pędzla i wody do rysowania na tablecie lub telefonie komórkowym: Malowanie pędzlem to świetna zabawa. Niesie ze sobą wiele innych możliwości rozwoju dla dzieci
Wielkoskalowa maszyna do rysowania Polargraph z wysuwaną głowicą pióra: 4 kroki (ze zdjęciami)
Wielkoskalowa maszyna do rysowania Polargraph z wysuwaną głowicą pióra: * Instalacja na dużą skalę tej maszyny została wymyślona i wykonana z Rui Periera. Jest to projekt rysunku otwartego oprogramowania Polargraph (http://www.polargraph.co.uk/) projekt. Posiada wysuwaną głowicę pióra i osprzęt, aby
Ramię do rysowania sterowane dźwiękiem - projekt Arduino School: 4 kroki (ze zdjęciami)
Ramię rysunkowe sterowane dźwiękiem - projekt Arduino School: To mój pierwszy raz, kiedy pracuję z Arduino i pracuję z czymś takim w historii, przepraszam, jeśli popełniłem jakieś błędy! Wpadłem na ten pomysł, gdy pomyślałem o moich hobby, którymi są rysunek i muzyka. Więc spróbowałem połączyć te dwie rzeczy w to! Sel
Długopisy LED do rysowania: Narzędzia do rysowania lekkich gryzmołów: 6 kroków (ze zdjęciami)
Długopisy LED do rysowania: Narzędzia do rysowania lekkich gryzmołów: Moja żona Lori jest nieustannym doodlerem i od lat bawię się fotografią z długim czasem ekspozycji. Zainspirowani grupą artyzmu świetlnego PikaPika i łatwością cyfrowych aparatów fotograficznych przyjęliśmy formę sztuki rysowania światłem, aby zobaczyć, co możemy zrobić.Mamy duży