İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bu talimat, bir Arduino TFT ekranı için bir çizim programı oluşturmaya giden kodu detaylandırır. Ancak bu program benzersizdir, çünkü bir çizimin SD karta kaydedilmesine ve daha sonra daha fazla düzenleme yapmak için yüklenmesine izin verir!
Gereçler
- Arduino Uno - orijinal veya uyumlu bir klon
- TFT dokunmatik ekran - Bir Elegoo ekranı kullandım, yani Elegoo sürücülerine ihtiyacım vardı.
- Micro SD okuyucu kartı - çizim verilerini SD karta depolamak için kullanılır. Ekranımın altında yerleşik bir okuyucu vardı.
- Stylus - ekranım bir tane ile geldi. Tırnaklar da iyi çalışır.
- Micro SD kart - exFAT formatlama sınırlamaları nedeniyle 32GB'tan fazla değil (Arduino FAT32 formatlı kartları okuyabilir ancak exFAT DEĞİLDİR. Çoğu büyük kart exFAT ile formatlanmıştır.). Bu, genişletilebilir depolama alanına sahip bir telefona koyacağınız türdendir.
- Arduino IDE'li bilgisayar
- Programlama kablosu - USB A'dan USB B'ye. Arduino'm bir tane ile geldi.
- SD kart adaptörü - Micro SD kartı, SD yuvasına takmak için normal bir SD'ye VEYA bir SD kartı bir USB yuvasına bağlayan bir SD'ye dönüştürmek için kullanılır.
1. Adım: SD Kartı Biçimlendirin
- Micro SD kartı alın ve SD kart okuyucunuzu kullanarak bilgisayarınıza takın
- Dosya Gezgini'ni açın ve SD kartı bulun.
- Sağ tıklayın ve Format'ı seçin.
- Ekran görüntüsüne göre seçenekleri ayarlayın.
- Başlat'a tıklayın.
- İşlem tamamlandığında kartı çıkarın.
Windows çalıştırmıyorsanız, SD ilişkilendirmesinden SD Formatter kullanmayı deneyin.
Adım 2: Arduino'yu Hazırlayın
- Pinleri hizalamaya dikkat ederek ekran koruyucunuzu Arduino'nun üzerine bastırın.
- SD kartı ekranın altındaki okuyucuya takın.
Adım 3: Arduino Kroki
Parça listesi oldukça basit olmasına rağmen, bir ton kod var. Burada adım adım anlatacağım.
#Dahil etmek
#include #include #include #include
Elegoo_GFX, _TFTLCD ve TouchScreen'in tümü donanıma özeldir. Farklı bir ekran kullanıyorsanız, üretici tarafından sağlanan kitaplıkları kullanın.
SPI ve SD, SD kart ile iletişim kurmak için kullanılır. SPI, SD kart denetleyicisi tarafından kullanılan protokoldür.
#if tanımlı(_SAM3X8E_)#undef _FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif
Bu aynı zamanda donanıma özeldir.
#define YP A3 // analog pin olmalı#define XM A2 // analog pin olmalı #define YM 9 #define XP 8
//Yeni ILI9341 TP İçin Dokunun
#tanımla TS_MINX 120 #tanımla TS_MAXX 900 #tanımla TS_MINY 70 #tanımla 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
Bu #define ifadelerinin her biri, IDE'nin adı değerle değiştirmesini sağlar. Burada LCD ve SD I/O pinlerini ayarlarlar.
// Bazı 16 bitlik renk değerlerine ad atayın:#define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Bunlar kodda kullanılan renklerden birkaçı. #define-ing onları kodu okumayı kolaylaştırır.
#define PENRADIUS 3
Bu, çizim kaleminin boyutunu tanımlar.
#define MINPRESSURE 10#define MAXPRESSURE 1000
// Daha iyi basınç hassasiyeti için direnci bilmemiz gerekir
// X+ ve X- arasında Okumak için herhangi bir multimetre kullanın // Kullandığım için, X plakası boyunca 300 ohm'u Dokunmatik Ekran ts = Dokunmatik Ekran(XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Bu ifadeler bir dokunuşu kaydetmek, dokunma işlevini başlatmak ve ekranı başlatmak için gereken basıncı tanımlar.
Dosya depolama;int depolamaBoyutu; int stoX = 1; int stok = 1;
Bunlar, programın depolama kısmı için değişkenlerdir.
void setup(void) { Serial.begin(9600); Serial.println("Boya programı");
tft.reset();
uint16_t tanımlayıcı = tft.readID();
if (tanımlayıcı == 0x0101) { tanımlayıcı = 0x9341; Serial.println(F("0x9341 LCD sürücüsü bulundu")); }
//Ekranı başlat
tft.begin(tanımlayıcı); tft.setRotation(2);
pinMode(13, ÇIKIŞ);
//SD kartı başlat
if (!SD.begin(CSPIN)) { Serial.println("SD başlatma başarısız"); dönüş; } Serial.println("SD başlatıldı");
//Arka planı çiz
drawBackground(); }
Kurulum işlevi, varsa Seri'yi başlatır, ekranı sıfırlar, TFT sürücüsünü algılar, ekranı başlatır, kartı başlatır ve arka planı çizmek için bir işlev çağırır.
Döngü fonksiyonunun ana kısmına atlayacağım. Diğer her şey sadece dokunmatik ekranı sürmek için kullanılıyor.
//Ekranı algıla ve eğer (p.z > MINPRESSURE && p.z < MAXPRESSURE) { //Scale p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = (tft.height() - harita(p.y, TS_MINY, TS_MAXY, tft.height(), 0));
//Çizmek
if (p.y > 21) { //Verileri SD kart deposuna kaydet = SD.open("storage.txt", FILE_WRITE); depolama.baskı(p.x); depolama.print(", "); depolama.println(p.y); depolama.close();
//Dokunma konumunda nokta
tft.fillCircle(p.x, p.y, PENRADIUS, BEYAZ); }
//Sil düğmesi
if ((p.y 198) && (p.x < 219)) { deleteStorage(); }
//Düğme eylemi yükle
if ((p.y 219)) { loadStorage(); } }
Bir pres algılanırsa, presin konumu için değişkenleri ayarlayın.
Ardından, eğer baskı çizim alanı içindeyse, noktayı depolama.txt dosyasındaki SD karta kaydedin ve basılan noktada tanımlanmış bir boyut ve renk ile bir daire çizin.
Ardından, pres sil düğmesinin bulunduğu yerdeyse, saklanan çizimi silen bir işlevi çalıştırın. Farklı boyutta bir ekran kullanıyorsanız, düğme konum değerleriyle oynamayı deneyin.
Ardından, pres, yükle düğmesinin bulunduğu yerdeyse, saklanan çizimi yükleyen bir işlevi çalıştırın. Farklı boyutta bir ekran kullanıyorsanız, düğme konum değerleriyle oynamayı deneyin.
Şimdi fonksiyonları anlatacağım.
İlk işlev, arka planı ve düğmeleri çizmek için kurulumda çağrılır.
void drawBackground() { //Arka planı ayarlayın tft.fillScreen(BLACK);
// Metni boya
tft.setTextColor(BEYAZ); tft.setTextSize(3); tft.setCursor(0, 0); tft.println("Boya");
//Yükle düğmesi
tft.fillRect(219, 0, 21, 21, YEŞİL);
//Temizle düğmesi
tft.fillRect(198, 0, 21, 21, KIRMIZI); }
Ekranı siyah doldurur, Paint kelimesini yazar ve düğmeler için renkli kareler çizer. Farklı boyutta bir ekran kullanıyorsanız, düğme konum değerleriyle oynamayı deneyin.
void deleteStorage() { //SD.remove("storage.txt") dosyasını silin;
//Arka planı ayarla
tft.fillScreen(SİYAH);
// Başarı metnini sil
tft.setTextColor(BEYAZ); tft.setTextSize(2); tft.setCursor(0, 0); tft.println("storage.txt silindi");
//Kullanıcının okumasına izin ver
gecikme(2000);
//Çizime devam et
drawBackground(); }
deleteStorage işlevi, storage.txt dosyasını kaldırır, ekranı siyahla doldurur ve silinmesi için bir başarı mesajı verir. Ardından, başka bir şey boyamaya başlamanıza izin vermek için drawBackground işlevini çağırır.
void loadStorage() { //Parmakların yavaş gecikmesinden dolayı tekrarlardan kaçının(250);
//Depolama dosyasını kontrol et
if (!SD.exists("storage.txt")) { Serial.println("Depolama.txt dosyası yok"); dönüş; }
//Dosyayı salt okunur modda aç
depolama = SD.open("storage.txt", FILE_READ);
//Veri varken, while (stoY > 0) { //Konum değişkenlerini güncelle stoX = storage.parseInt(); stoY = depolama.parseInt();
//Depodan çiz
tft.fillCircle(stoX, stoY, PENRADIUS, BEYAZ); } //depolama dosyasını kapatın.close(); }
Son olarak loadStorage işlevi bir depolama dosyası olup olmadığını kontrol eder, onu salt okunur modda açar ve ardından şu döngüyü tekrarlar:
Daha fazla veri olduğu sürece,
- Storage.txt dosyasındaki ayrıştırılmış verilerle konum değişkenlerini güncelleyin
- Yüklenen noktada bir daire çizin
Döngü tamamlandığında ve başka veri kalmadığında, depolama dosyasını kapatır.
Bu eskizin kodu aşağıda bulunabilir. Sadece indirin, Arduino'da açın ve panonuza yükleyin!
Adım 4: Bu Programı Kullanma
Arduino'nuzu bir güç kaynağına (bilgisayar, pil, duvar siğili vb.) takın ve çizmeye başlayın. Çiziminizi ve saklanan verilerini silmek için kırmızı düğmeye basın. Depodan bir çizim yüklemek ve üzerinde çalışmaya devam etmek için yeşil düğmeye tıklayın. Bu şekilde, bir çizim üzerinde birçok kez yineleme yapabilirsiniz!
Bir uzantı olarak, çizimi bilgisayarınızda çizmeyi deneyin:
- Verileri içeren SD kartı bilgisayarınıza takın.
- En sevdiğiniz metin/kod düzenleyicide storage.txt dosyasını açın.
- Storage.txt içindeki tüm değerleri kopyalayın.
- Bir nokta çizme programı için bu bağlantıyı takip edin.
- Soldaki iki örnek noktayı silin.
- Verilerinizi örnek noktaların olduğu yere yapıştırın.
Bu, çizimlerinizi göstermenin güzel bir yoludur - belki Arduino'da veya nokta çizicide nokta rengini değiştirmeyi deneyin!
Değişiklikler memnuniyetle karşılanır ve yorumlarda bazı öneriler görmeyi çok isterim. Buna bir göz attığınız için teşekkürler ve umarım kendi projelerinizde bunun için düzgün kullanımlar bulursunuz!
Önerilen:
5'i 1 Arada Arduino Robotu - Beni Takip Et - Satır Takip - sumo - Çizim - Engelden Kaçınma: 6 Adım
5'i 1 Arada Arduino Robotu | Beni Takip Et | Satır Takip | sumo | Çizim | Engelden Kaçınma: Bu robot kontrol panosu, bir ATmega328P mikro denetleyici ve bir L293D motor sürücüsü içerir. Elbette bir Arduino Uno kartından farkı yok ama motoru sürmek için başka bir kalkana ihtiyaç duymadığı için daha kullanışlı! Zıplamaktan muaftır
Arduino Uno Eğitimi #1 - Temel Göz Kırpma Programı: 4 Adım
Arduino Uno Eğitimi #1 - Temel Yanıp Sönme Programı: Herkese merhaba!İlk öğretilebilir kitabımı yayınlamaktan mutluluk duyuyorum! Bu fikir, Arduino Uno'yu çalıştırmakta zorlandığımda aklıma geldi, bu yüzden bazı zorluklar yaşadım, buradaki tüm acemilere, benim gibi pek bilmediğim bir açıklama yapacağım
Arduino için Çizim Robotu Kullanma ve Kodlama Öğreticileri: 3 Adım
Saatlik Kod Öğreticileri ile Arduino için Çizim Robotu Kullanma: Genç kızların STEM konularıyla ilgilenmesine yardımcı olmak için bir atölye çalışması için bir Arduino çizim robotu oluşturdum (bkz. https://www.instructables.com/id/Arduino-Drawing-Robot/ ). Robot, ileri (uzak) gibi Kaplumbağa tarzı programlama komutlarını kullanmak üzere tasarlandı
Arduino Uno Kullanarak Arduino Pro Mini 328P Programı Nasıl Yüklenir: 6 Adım
Arduino Uno Kullanarak Arduino Pro Mini 328P Programı Nasıl Yüklenir: Arduino Pro Mini, 14 I/O pinine sahip en küçük yonga levhadır, 3.3 volt - 5 volt DC ile çalışır ve kodu programlama cihazına yüklemek kolaydır.Özellik: 14 dijital giriş/çıkış bağlantı noktaları RX, TX, D2~D13, 8 analog giriş bağlantı noktası A0~A7 1
LED Işıklı Çizim Kalemleri: Işıklı Doodles Çizim Araçları: 6 Adım (Resimlerle)
LED Işıklı Çizim Kalemleri: Işıklı Doodles Çizim Araçları: Karım Lori aralıksız bir doodle'cı ve yıllardır uzun pozlama fotoğrafçılığı ile oynadım. PikaPika light artistry grubundan ve dijital kameraların kolaylığından esinlenerek, neler yapabileceğimizi görmek için ışıkla çizim sanat formunu aldık