Isi kandungan:

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

Video: Program Menggambar TFT Arduino: 4 Langkah

Video: Program Menggambar TFT Arduino: 4 Langkah
Video: TFT LCD Shield Arduino, Inisiasi Library dan Kalibrasi Touch | AKHISHOP ELECTRONICS #BelajarArduino 2024, November
Anonim
Program Menggambar TFT Arduino
Program Menggambar TFT Arduino
Program Menggambar TFT Arduino
Program Menggambar TFT Arduino
Program Menggambar TFT Arduino
Program Menggambar TFT Arduino

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

  1. Arduino Uno - klon asli atau serasi
  2. Skrin sentuh TFT - Saya menggunakan skrin Elegoo, yang bermaksud saya memerlukan pemandu Elegoo.
  3. Papan pembaca mikro SD - digunakan untuk menyimpan data lukisan ke kad SD. Skrin saya mempunyai pembaca terpasang di bawah paparan.
  4. Stylus - skrin saya disertakan dengan satu. Kuku jari kaki juga berfungsi dengan baik.
  5. 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.
  6. Komputer dengan Arduino IDE
  7. Kabel pengaturcaraan - USB A ke USB B. Arduino saya disertakan dengan satu.
  8. 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

Format Kad SD
Format Kad SD
Format Kad SD
Format Kad SD
  1. Ambil kad Micro SD dan pasangkan ke komputer anda menggunakan pembaca kad SD anda
  2. Buka File Explorer dan cari kad SD.
  3. Klik kanan dan pilih Format.
  4. Tetapkan pilihan berdasarkan tangkapan skrin.
  5. Klik Mula.
  6. Keluarkan kad apabila proses selesai.

Sekiranya anda tidak menjalankan Windows, cuba gunakan SD Formatter dari persatuan SD.

Langkah 2: Siapkan Arduino

Siapkan Arduino
Siapkan Arduino
Siapkan Arduino
Siapkan Arduino
  1. Tekan pelindung skrin anda ke Arduino, dengan berhati-hati untuk menyusun pin.
  2. 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,

  1. Kemas kini pemboleh ubah kedudukan dengan data yang dihuraikan dari storage.txt
  2. 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

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

  1. Pasangkan kad SD dengan data ke komputer anda.
  2. Buka storage.txt di editor teks / kod kegemaran anda.
  3. Salin semua nilai di storage.txt.
  4. Ikuti pautan ini ke program plot-point.
  5. Padamkan dua titik contoh di sebelah kiri.
  6. 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: