Daftar Isi:

Program Menggambar Arduino TFT: 4 Langkah
Program Menggambar Arduino TFT: 4 Langkah

Video: Program Menggambar Arduino TFT: 4 Langkah

Video: Program Menggambar Arduino TFT: 4 Langkah
Video: Membuat Kalkulator Layar Sentuh Menggunakan 2.4 inch TFT LCD - Arduino Project Indonesia 2024, Juli
Anonim
Program Menggambar Arduino TFT
Program Menggambar Arduino TFT
Program Menggambar Arduino TFT
Program Menggambar Arduino TFT
Program Menggambar Arduino TFT
Program Menggambar Arduino TFT

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

  1. Arduino Uno - asli atau tiruan yang kompatibel
  2. Layar sentuh TFT - Saya menggunakan layar Elegoo, artinya saya membutuhkan driver Elegoo.
  3. Papan pembaca Micro SD - digunakan untuk menyimpan data gambar ke kartu SD. Layar saya memiliki pembaca bawaan di bawah layar.
  4. Stylus - layar saya datang dengan satu. Kuku juga bekerja dengan baik.
  5. 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.
  6. Komputer dengan Arduino IDE
  7. Kabel pemrograman - USB A ke USB B. Arduino saya datang dengan satu.
  8. 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

Memformat Kartu SD
Memformat Kartu SD
Memformat Kartu SD
Memformat Kartu SD
  1. Ambil kartu Micro SD dan pasang ke komputer Anda menggunakan pembaca kartu SD
  2. Buka File Explorer dan temukan kartu SD.
  3. Klik kanan dan pilih Format.
  4. Atur opsi berdasarkan tangkapan layar.
  5. Klik Mulai.
  6. Keluarkan kartu saat proses selesai.

Jika Anda tidak menjalankan Windows, coba gunakan SD Formatter dari asosiasi SD.

Langkah 2: Siapkan Arduino

Siapkan Arduinonya
Siapkan Arduinonya
Siapkan Arduinonya
Siapkan Arduinonya
  1. Tekan pelindung layar Anda ke bawah ke Arduino, berhati-hatilah untuk menyejajarkan pin.
  2. 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,

  1. Perbarui variabel posisi dengan data yang diuraikan dari storage.txt
  2. 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

Menggunakan Program Ini
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:

  1. Colokkan kartu SD dengan data ke komputer Anda.
  2. Buka storage.txt di editor teks/kode favorit Anda.
  3. Salin semua nilai di storage.txt.
  4. Ikuti tautan ini ke program plot titik.
  5. Hapus dua titik contoh di sebelah kiri.
  6. 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: