Isi kandungan:
- Bekalan
- Langkah 1: Format Kad SD
- Langkah 2: Siapkan Arduino
- Langkah 3: Lakaran Arduino
- Langkah 4: Menggunakan Program Ini
Video: Program Menggambar TFT Arduino: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Instruksional ini memperincikan kod yang diperlukan untuk membuat program menggambar untuk layar TFT Arduino. Program ini unik, bagaimanapun, kerana memungkinkan untuk menyimpan gambar ke kad SD dan memuatkannya kemudian untuk membuat lebih banyak pengeditan!
Bekalan
- Arduino Uno - klon asli atau serasi
- Skrin sentuh TFT - Saya menggunakan skrin Elegoo, yang bermaksud saya memerlukan pemandu Elegoo.
- Papan pembaca mikro SD - digunakan untuk menyimpan data lukisan ke kad SD. Skrin saya mempunyai pembaca terpasang di bawah paparan.
- Stylus - skrin saya disertakan dengan satu. Kuku jari kaki juga berfungsi dengan baik.
- Kad Micro SD - tidak lebih daripada 32GB, kerana had pemformatan exFAT (The Arduino dapat membaca kad berformat FAT32 tetapi TIDAK exFAT. Sebilangan besar kad yang lebih besar diformat dengan exFAT.). Ini adalah jenis yang anda masukkan ke dalam telefon dengan simpanan yang boleh diperluas.
- Komputer dengan Arduino IDE
- Kabel pengaturcaraan - USB A ke USB B. Arduino saya disertakan dengan satu.
- Penyesuai kad SD - digunakan untuk menukar kad Micro SD menjadi SD biasa untuk dimasukkan ke dalam slot SD ATAU yang menghubungkan kad SD ke slot USB.
Langkah 1: Format Kad SD
- Ambil kad Micro SD dan pasangkan ke komputer anda menggunakan pembaca kad SD anda
- Buka File Explorer dan cari kad SD.
- Klik kanan dan pilih Format.
- Tetapkan pilihan berdasarkan tangkapan skrin.
- Klik Mula.
- Keluarkan kad apabila proses selesai.
Sekiranya anda tidak menjalankan Windows, cuba gunakan SD Formatter dari persatuan SD.
Langkah 2: Siapkan Arduino
- Tekan pelindung skrin anda ke Arduino, dengan berhati-hati untuk menyusun pin.
- Masukkan kad SD ke dalam pembaca di bawah skrin.
Langkah 3: Lakaran Arduino
Walaupun senarai bahagiannya cukup mudah, terdapat banyak kod. Saya akan melaluinya selangkah demi selangkah di sini.
#sertakan
#sertakan #sertakan #sertakan #sertakan
Elegoo_GFX, _TFTLCD, dan TouchScreen semuanya khusus untuk perkakasan. Sekiranya anda menggunakan skrin yang berbeza, gunakan perpustakaan yang disediakan oleh pengeluar.
SPI dan SD digunakan untuk berkomunikasi dengan kad SD. SPI adalah protokol yang digunakan oleh pengawal kad SD.
#jika didefinisikan (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Ini juga khusus perkakasan.
#define YP A3 // mestilah pin analog # tentukan XM A2 // mestilah pin analog # tentukan YM 9 # tentukan XP 8
// Sentuh Untuk TP ILI9341 Baru
#tentukan TS_MINX 120 #tentukan TS_MAXX 900 #tentukan TS_MINY 70 #tentukan TS_MAXY 920
#tentukan CSPIN 10
#tentukan LCD_CS A3
#tentukan LCD_CD A2 #tentukan LCD_WR A1 #tentukan LCD_RD A0 #tentukan LCD_RESET A4
Setiap pernyataan #define ini menjadikan IDE mengganti nama dengan nilai. Di sini, mereka menetapkan pin LCD dan SD I / O.
// Tetapkan nama kepada beberapa nilai warna 16-bit: #tentukan BLACK 0x0000 #define WHITE 0xFFFF #define MERAH 0xF800 #tentukan BLUE 0x001F #define HIJAU 0x07E0
Ini adalah beberapa warna yang digunakan dalam kod. # mendefinisikan mereka menjadikan membaca kod lebih mudah.
#tentukan PENRADIUS 3
Ini menentukan ukuran pen lukisan.
#tentukan MINPRESSURE 10 # tentukan MAXPRESSURE 1000
// Untuk ketepatan tekanan yang lebih baik, kita perlu mengetahui rintangan
// antara X + dan X- Gunakan mana-mana multimeter untuk membacanya // Untuk yang saya gunakan, 300 ohmnya melintasi plat X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Pernyataan ini menentukan tekanan yang diperlukan untuk mendaftarkan sentuhan, menginisialisasi fungsi sentuhan, dan memulai layar.
Penyimpanan fail; storan int int stoX = 1; int stoY = 1;
Ini adalah pemboleh ubah untuk bahagian penyimpanan program.
persediaan kosong (tidak sah) {Serial.begin (9600); Serial.println ("Program cat");
tft.reset ();
pengenal uint16_t = tft.readID ();
jika (pengecam == 0x0101) {pengecam = 0x9341; Serial.println (F ("Dijumpai pemacu LCD 0x9341")); }
// Mulakan skrin
tft.begin (pengecam); tft.setRotation (2);
pinMode (13, OUTPUT);
// Mulakan kad SD
jika (! SD.begin (CSPIN)) {Serial.println ("Inisialisasi SD gagal"); kembali; } Serial.println ("SD dimulakan");
// Lukis latar belakang
drawBackground (); }
Fungsi penyediaan bermula Bersiri jika tersedia, mengatur ulang layar, mengesan pemacu TFT, memulai layar, memulai kad, dan memanggil fungsi untuk melukis latar belakang.
Saya akan melangkau ke bahagian utama fungsi gelung. Semua yang lain hanya digunakan untuk menggerakkan skrin sentuh.
// Kesan tekan skrin dan simpan ke pemboleh ubah jika (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Skala p.x = peta (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - peta (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
// Lukis
jika (p.y> 21) {// Simpan data ke simpanan kad SD = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); penyimpanan.tutup ();
// Titik pada kedudukan sentuhan
tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }
// butang Padam
jika ((ms. 198) && (p.x <219)) {deleteStorage (); }
// Muatkan tindakan butang
jika ((ms. 219)) {loadStorage (); }}
Sekiranya tekan dikesan, tetapkan pemboleh ubah untuk lokasi akhbar.
Kemudian, jika penekan berada di dalam kawasan gambar, simpan titik ke kad SD di storage.txt dan lukis bulatan pada titik yang ditekan, dengan ukuran dan warna yang ditentukan.
Kemudian, jika tekan berada di lokasi butang hapus, jalankan fungsi yang menghapus gambar yang disimpan. Sekiranya anda menggunakan skrin dengan ukuran berbeza, cuba mainkan dengan nilai lokasi butang.
Kemudian, jika tekan berada di lokasi butang muat, jalankan fungsi yang memuatkan gambar yang disimpan. Sekiranya anda menggunakan skrin dengan ukuran berbeza, cuba mainkan dengan nilai lokasi butang.
Sekarang, saya akan menerangkan fungsinya.
Fungsi pertama dipanggil dalam persediaan untuk menarik latar belakang dan butang.
batal drawBackground () {// Tetapkan latar belakang tft.fillScreen (HITAM);
// Cat teks
tft.setTextColor (PUTIH); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Cat");
// Butang muat
tft.fillRect (219, 0, 21, 21, HIJAU);
// Butang kosong
tft.fillRect (198, 0, 21, 21, MERAH); }
Ini memenuhi skrin hitam, menulis kata Cat, dan menarik kotak berwarna untuk butang. Sekiranya anda menggunakan skrin dengan ukuran berbeza, cuba mainkan dengan nilai lokasi butang.
batal deleteStorage () {// Padamkan fail SD.remove ("storage.txt");
// Tetapkan latar belakang
tft.fillScreen (HITAM);
// Padamkan teks Kejayaan
tft.setTextColor (PUTIH); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt dihapuskan");
// Biarkan pengguna membacanya
kelewatan (2000);
// Teruskan melukis
drawBackground (); }
Fungsi deleteStorage membuang storage.txt, mengisi hitam skrin, dan memberikan mesej kejayaan untuk penghapusan. Ia kemudian memanggil fungsi drawBackground untuk membolehkan anda mula melukis sesuatu yang lain.
void loadStorage () {// Elakkan pengulangan daripada kelewatan jari perlahan (250);
// Periksa fail simpanan
jika (! SD.exists ("storage.txt")) {Serial.println ("Tanpa fail storage.txt"); kembali; }
// Buka fail dalam mod baca sahaja
storage = SD.open ("storage.txt", FILE_READ);
// Walaupun ada data, while (stoY> 0) {// Kemas kini pemboleh ubah kedudukan stoX = storage.parseInt (); stoY = storage.parseInt ();
// Lukis dari simpanan
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Tutup penyimpanan fail.tutup (); }
Akhirnya, fungsi loadStorage memeriksa fail penyimpanan, membukanya dalam mod baca sahaja, dan mengulangi gelung ini:
Selagi ada lebih banyak data,
- Kemas kini pemboleh ubah kedudukan dengan data yang dihuraikan dari storage.txt
- Lukis bulatan pada titik yang dimuatkan
Apabila gelung selesai dan tidak ada lagi data, ia menutup fail simpanan.
Kod untuk lakaran ini boleh didapati di bawah. Muat turun sahaja, buka di Arduino, dan muat naik ke papan anda!
Langkah 4: Menggunakan Program Ini
Cukup pasangkan Arduino anda ke sumber kuasa - komputer, bateri, kutil dinding, dan lain-lain dan mula melukis. Untuk menghapus gambar dan datanya yang tersimpan, tekan butang merah. Untuk memuatkan gambar dari storan dan terus mengerjakannya, klik butang hijau. Dengan cara ini, anda boleh berulang kali pada lukisan!
Sebagai lanjutan, cuba buat gambar pada komputer anda:
- Pasangkan kad SD dengan data ke komputer anda.
- Buka storage.txt di editor teks / kod kegemaran anda.
- Salin semua nilai di storage.txt.
- Ikuti pautan ini ke program plot-point.
- Padamkan dua titik contoh di sebelah kiri.
- Tampal data anda di mana titik contohnya.
Ini adalah kaedah yang rapi untuk memamerkan gambar anda - mungkin juga cuba menukar warna titik pada Arduino atau dalam plotter titik!
Pengubahsuaian dialu-alukan, dan saya ingin melihat beberapa cadangan dalam komen. Terima kasih kerana melihatnya dan saya harap anda dapat menjumpai kegunaan yang rapi dalam projek anda sendiri!
Disyorkan:
Cara Membuat Jam Realtime Menggunakan Arduino dan TFT Display - Arduino Mega RTC Dengan Paparan TFT 3.5 Inch: 4 Langkah
Cara Membuat Jam Realtime Menggunakan Arduino dan TFT Display | Arduino Mega RTC Dengan Paparan TFT 3,5 Inci: Lawati Saluran Youtube Saya. Pengenalan: - Dalam posting ini saya akan membuat "Jam masa nyata" menggunakan LCD sentuh TFT 3,5 inci, Arduino Mega 2560 dan modul RTC DS3231…. Sebelum memulakan… periksa video dari saluran YouTube saya..Catatan: - Sekiranya anda menggunakan Arduin
Pena Lukisan Cahaya LED: Alat untuk Menggambar Doodle Cahaya: 6 Langkah (dengan Gambar)
Pena Lukisan Cahaya LED: Alat untuk Menggambar Doodle Cahaya: Isteri saya Lori adalah tukang coret yang tidak henti-henti dan saya telah bermain dengan fotografi pendedahan yang lama selama bertahun-tahun. Diilhamkan oleh kumpulan seni cahaya PikaPika dan kemudahan kamera digital, kami mengambil bentuk seni lukisan cahaya untuk melihat apa yang dapat kami lakukan. Kami mempunyai
Cara Menggambar Main Sekolah Tinggi (Baik): 6 Langkah (dengan Gambar)
Cara Menggambar Main Sekolah Tinggi (Baik): Hai semua- Sepanjang tahun saya di Sekolah Menengah, saya benar-benar terlibat dengan program drama, khususnya dengan kru. Bermula dalam pembinaan, beralih ke jalan raya, kemudian ke pencahayaan, dan sekarang setelah saya lulus, saya ditarik kembali untuk membantu penerangan
Menggambar Bingkai Gambar Jantung LED: 8 Langkah
Memukul Bingkai Gambar Jantung LED: Untuk hari valentine, saya memutuskan untuk menjadikan valentine saya sebagai bingkai gambar yang perlahan-lahan berdenyut dan mati (seperti degupan jantung) ketika ia diambil. Anda boleh menggunakan tequnices yang sama untuk membuat kesan cahaya berdenyut pada projek lain seperti mod casing komputer. Tukar
Menipu Menggambar Dengan GIMP: 6 Langkah
Cheat at Drawing With the GIMP: Instructable ini memberitahu orang yang tidak suka melukis (seperti diri saya) bagaimana membuat seni lukis untuk digunakan / diedit di media digital