Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Instruksi ini merinci kode yang digunakan untuk membuat program menggambar untuk layar TFT Arduino. Namun, program ini unik, karena memungkinkan penyimpanan gambar ke kartu SD dan memuatnya nanti untuk melakukan lebih banyak pengeditan!
Perlengkapan
- Arduino Uno - asli atau tiruan yang kompatibel
- Layar sentuh TFT - Saya menggunakan layar Elegoo, artinya saya membutuhkan driver Elegoo.
- Papan pembaca Micro SD - digunakan untuk menyimpan data gambar ke kartu SD. Layar saya memiliki pembaca bawaan di bawah layar.
- Stylus - layar saya datang dengan satu. Kuku juga bekerja dengan baik.
- Kartu Micro SD - tidak lebih dari 32GB, karena keterbatasan format exFAT (Arduino dapat membaca kartu berformat FAT32 tetapi BUKAN exFAT. Sebagian besar kartu yang lebih besar diformat dengan exFAT.). Ini adalah jenis yang akan Anda masukkan ke dalam ponsel dengan penyimpanan yang dapat diperluas.
- Komputer dengan Arduino IDE
- Kabel pemrograman - USB A ke USB B. Arduino saya datang dengan satu.
- Adaptor kartu SD - digunakan untuk mengubah kartu Micro SD menjadi SD biasa untuk dimasukkan ke dalam slot SD ATAU yang menghubungkan kartu SD ke slot USB.
Langkah 1: Format Kartu SD
- Ambil kartu Micro SD dan pasang ke komputer Anda menggunakan pembaca kartu SD
- Buka File Explorer dan temukan kartu SD.
- Klik kanan dan pilih Format.
- Atur opsi berdasarkan tangkapan layar.
- Klik Mulai.
- Keluarkan kartu saat proses selesai.
Jika Anda tidak menjalankan Windows, coba gunakan SD Formatter dari asosiasi SD.
Langkah 2: Siapkan Arduino
- Tekan pelindung layar Anda ke bawah ke Arduino, berhati-hatilah untuk menyejajarkan pin.
- Masukkan kartu SD ke pembaca di bawah layar.
Langkah 3: Sketsa Arduino
Meskipun daftar bagiannya cukup sederhana, ada banyak kode. Saya akan membahasnya selangkah demi selangkah di sini.
#termasuk
#sertakan #sertakan #sertakan #sertakan
Elegoo_GFX, _TFTLCD, dan TouchScreen semuanya khusus untuk perangkat keras. Jika Anda menggunakan layar yang berbeda, gunakan perpustakaan yang disediakan pabrikan.
SPI dan SD digunakan untuk berkomunikasi dengan kartu SD. SPI adalah protokol yang digunakan oleh pengontrol kartu SD.
#if didefinisikan(_SAM3X8E_)#undef _FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif
Ini juga khusus untuk perangkat keras.
#define YP A3 // harus pin analog#define XM A2 // harus pin analog #define YM 9 #define XP 8
//Sentuh Untuk TP ILI9341 Baru
#menentukan TS_MINX 120 #menentukan TS_MAXX 900 #menentukan TS_MINY 70 #menentukan TS_MAXY 920
#tentukan CSPIN 10
#definisikan LCD_CS A3
#menentukan LCD_CD A2 #menentukan LCD_WR A1 #menentukan LCD_RD A0 #menentukan LCD_RESET A4
Setiap pernyataan #define ini membuat IDE mengganti nama dengan nilai. Di sini, mereka mengatur pin LCD dan SD I/O.
// Tetapkan nama untuk beberapa nilai warna 16-bit:#define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define HIJAU 0x07E0
Ini adalah beberapa warna yang digunakan dalam kode. #define-ing mereka membuat membaca kode lebih mudah.
#definisikan PENRADIUS 3
Ini menentukan ukuran pena gambar.
#menentukan MINPRESSURE 10#menentukan MAXPRESSURE 1000
// Untuk presisi tekanan yang lebih baik, kita perlu mengetahui hambatannya
// antara X+ dan X- Gunakan multimeter apa pun untuk membacanya // Untuk yang saya gunakan, 300 ohmnya melintasi pelat X Layar Sentuh ts = Layar Sentuh(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 sentuh, dan memulai layar.
Penyimpanan file;int storageSize; int stoX = 1; int stoY = 1;
Ini adalah variabel untuk bagian penyimpanan program.
void setup(void) { Serial.begin(9600); Serial.println("Program pengecatan");
tft.reset();
pengenal uint16_t = tft.readID();
if (pengidentifikasi == 0x0101) { pengenal = 0x9341; Serial.println(F("Ditemukan driver LCD 0x9341")); }
//Mulai layar
tft.begin(pengidentifikasi); tft.setRotation(2);
pinMode(13, OUTPUT);
//Mulai kartu SD
if (!SD.begin(CSPIN)) { Serial.println("Inisialisasi SD gagal"); kembali; } Serial.println("SD diinisialisasi");
//Gambar latar belakang
gambarLatar Belakang(); }
Fungsi pengaturan memulai Serial jika tersedia, mengatur ulang layar, mendeteksi driver TFT, memulai layar, memulai kartu, dan memanggil fungsi untuk menggambar latar belakang.
Saya akan melompat ke bagian utama dari fungsi loop. Segala sesuatu yang lain hanya digunakan untuk menggerakkan layar sentuh.
//Deteksi tekanan layar dan simpan ke variabel if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { //Scale p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = (tft.height() - peta(p.y, TS_MINY, TS_MAXY, tft.height(), 0));
//Seri
if (p.y > 21) { //Menyimpan data ke penyimpanan kartu SD = SD.open("storage.txt", FILE_WRITE); penyimpanan.print(p.x); penyimpanan.print(", "); penyimpanan.println(p.y); penyimpanan.tutup();
//Titik pada posisi sentuh
tft.fillCircle(p.x, p.y, PENRADIUS, WHITE); }
//tombol hapus
if ((p.y 198) && (p.x < 219)) { deleteStorage(); }
//memuat aksi tombol
if ((p.y 219)) { loadStorage(); } }
Jika pers terdeteksi, atur variabel untuk lokasi pers.
Kemudian, jika pers berada di dalam area gambar, simpan titik ke kartu SD di storage.txt dan gambar lingkaran pada titik yang ditekan, dengan ukuran dan warna yang ditentukan.
Kemudian, jika pers berada di lokasi tombol hapus, jalankan fungsi yang menghapus gambar yang disimpan. Jika Anda menggunakan layar berukuran berbeda, coba mainkan dengan nilai lokasi tombol.
Kemudian, jika pers berada di lokasi tombol muat, jalankan fungsi yang memuat gambar yang disimpan. Jika Anda menggunakan layar berukuran berbeda, coba mainkan dengan nilai lokasi tombol.
Sekarang saya akan menjelaskan fungsinya.
Fungsi pertama dipanggil dalam pengaturan untuk menggambar latar belakang dan tombol.
void drawBackground() { //Menyetel latar belakang tft.fillScreen(HITAM);
//lukis teks
tft.setTextColor(PUTIH); tft.setTextSize(3); tft.setCursor(0, 0); tft.println("Cat");
//tombol muat
tft.fillRect(219, 0, 21, 21, HIJAU);
//Tombol Hapus
tft.fillRect(198, 0, 21, 21, MERAH); }
Ini mengisi layar hitam, menulis kata Paint, dan menggambar kotak berwarna untuk tombol. Jika Anda menggunakan layar berukuran berbeda, coba mainkan dengan nilai lokasi tombol.
void deleteStorage() { //Menghapus file SD.remove("storage.txt");
//Setel latar belakang
tft.fillScreen(HITAM);
//Hapus teks Sukses
tft.setTextColor(PUTIH); tft.setTextSize(2); tft.setCursor(0, 0); tft.println("storage.txt dihapus");
//Biarkan pengguna membacanya
penundaan(2000);
//Lanjutkan menggambar
gambarLatar Belakang(); }
Fungsi deleteStorage menghapus storage.txt, mengisi layar hitam, dan memberikan pesan sukses untuk dihapus. Kemudian memanggil fungsi drawBackground untuk memungkinkan Anda mulai melukis sesuatu yang lain.
void loadStorage() { //Hindari pengulangan dari penundaan jari lambat(250);
//Periksa file penyimpanan
if (!SD.exists("storage.txt")) { Serial.println("Tidak ada file storage.txt"); kembali; }
//Buka file dalam mode read-only
penyimpanan = SD.open("storage.txt", FILE_READ);
//Selagi ada data, while (stoY > 0) { //Memperbarui variabel posisi stoX = storage.parseInt(); stoY = penyimpanan.parseInt();
//Mengambil dari penyimpanan
tft.fillCircle(stoX, stoY, PENRADIUS, WHITE); } //Tutup penyimpanan file.close(); }
Terakhir, fungsi loadStorage memeriksa file penyimpanan, membukanya dalam mode hanya-baca, lalu mengulangi loop ini:
Selama ada lebih banyak data,
- Perbarui variabel posisi dengan data yang diuraikan dari storage.txt
- Gambarlah sebuah lingkaran pada titik yang dimuat
Ketika loop selesai dan tidak ada lagi data, file penyimpanan akan ditutup.
Kode untuk sketsa ini dapat ditemukan di bawah. Cukup unduh, buka di Arduino, dan unggah ke papan Anda!
Langkah 4: Menggunakan Program Ini
Cukup colokkan Arduino Anda ke sumber listrik - komputer, baterai, kutil dinding, dll. dan mulailah menggambar. Untuk menghapus gambar Anda dan data yang tersimpan, tekan tombol merah. Untuk memuat gambar dari penyimpanan dan terus mengerjakannya, klik tombol hijau. Dengan cara ini, Anda dapat mengulangi berkali-kali pada sebuah gambar!
Sebagai ekstensi, coba plot gambar di komputer Anda:
- Colokkan kartu SD dengan data ke komputer Anda.
- Buka storage.txt di editor teks/kode favorit Anda.
- Salin semua nilai di storage.txt.
- Ikuti tautan ini ke program plot titik.
- Hapus dua titik contoh di sebelah kiri.
- Tempelkan data Anda di tempat titik contoh berada.
Ini adalah cara yang rapi untuk memamerkan gambar Anda - bahkan mungkin mencoba mengubah warna titik di Arduino atau di plotter titik!
Modifikasi disambut, dan saya ingin melihat beberapa saran di komentar. Terima kasih telah melihat ini dan saya harap Anda akan menemukan kegunaan yang rapi untuk itu di proyek Anda sendiri!
Direkomendasikan:
Robot Arduino 5 in 1 - Ikuti Saya - Baris Mengikuti - Sumo - Menggambar - Menghindari Rintangan: 6 Langkah
Robot Arduino 5 in 1 | Ikuti Saya | Baris Mengikuti | Sumo | Menggambar | Menghindari Rintangan: Papan kontrol robot ini berisi mikrokontroler ATmega328P dan driver motor L293D. Tentu tidak berbeda dengan board Arduino Uno namun lebih bermanfaat karena tidak membutuhkan pelindung lain untuk menggerakkan motor! Ini bebas dari lompat
Menggunakan Robot Menggambar untuk Arduino Dengan Tutorial Hour of Code: 3 Langkah
Menggunakan Robot Menggambar untuk Arduino Dengan Tutorial Kode Jam: Saya membuat robot menggambar Arduino untuk lokakarya untuk membantu gadis remaja tertarik pada topik STEM (lihat https://www.instructables.com/id/Arduino-Drawing-Robot/ ). Robot ini dirancang untuk menggunakan perintah pemrograman ala Turtle seperti forward(distanc
Menggambar Robot untuk Arduino: 18 Langkah (dengan Gambar)
Menggambar Robot untuk Arduino: Catatan: Saya memiliki versi baru dari robot ini yang menggunakan papan sirkuit tercetak, lebih mudah dibuat, dan memiliki deteksi rintangan IR! Lihat di http://bit.ly/OSTurtleSaya merancang proyek ini untuk lokakarya 10 jam untuk ChickTech.org yang bertujuan untuk
Pelajari Cara Menggambar Lilin - Langkah demi Langkah: 6 Langkah
Pelajari Cara Menggambar Lilin - Langkah demi Langkah: Lilin ini membutuhkan waktu 10 menit untuk menggambar jika Anda mengikuti langkah saya dengan hati-hati. Selamat
Pena Menggambar Cahaya LED: Alat untuk Menggambar Doodle Ringan: 6 Langkah (dengan Gambar)
Pena Menggambar Cahaya LED: Alat untuk Menggambar Orat-oret Ringan: Istri saya Lori adalah pembuat doodle yang tak henti-hentinya dan saya telah bermain dengan fotografi eksposur panjang selama bertahun-tahun. Terinspirasi oleh kelompok seni cahaya PikaPika dan kemudahan kamera digital, kami mengambil bentuk seni gambar ringan untuk melihat apa yang dapat kami lakukan.Kami memiliki banyak