Pustaka LiquidCrystal memudahkan penggunaan LCD dengan Arduino. Fungsi yang sangat menarik dari perpustakaan itu adalah fungsi createChar():Anda dapat membuat mesin terbang khusus (karakter), masing-masing dijelaskan oleh larik delapan byte, satu untuk setiap baris. Lima bit paling tidak signifikan dari setiap byte menentukan piksel di baris itu. Menulis byte dengan tangan untuk menciptakan seni bukanlah proses ideal seorang seniman, jadi Saya telah membuat alat web di mana Anda dapat menggambar mesin terbang, dan kode dibuat untuk Anda .
Dalam artikel ini saya akan menunjukkan cara membuat animasi kustom yang hanya memiliki papan Arduino dan LCD - yang dapat Anda gunakan untuk membuat banyak proyek:Anda dapat membuat game, atau cerita pendek, atau video musik, atau menghias panel status.
Hubungkan LCD ke Arduino - tergantung pada model layar Anda, koneksi yang berbeda mungkin bekerja lebih baik. Untuk salah satu layar saya, skema di bawah ini bekerja dengan baik - tetapi untuk yang lain, saya harus menggunakan potensiometer (seperti dalam tutorial di bawah tautan ini) dan mengubah nilai resistor untuk mendapatkan kontras terbaik.
Lihat simulasi di TinkerCad di bawah tautan ini.
Buka alat di https://tusindfryd.github.io/screenduino/ dan buat karya seni Anda. Hingga 8 bagian dapat digunakan sekaligus, jadi jika Anda tidak dapat memilih kotak baru, pastikan Anda belum menggunakan 8 bagian.
Pastikan kode Anda disimpan. Anda sekarang dapat membuat bingkai kedua. Hanya menggambar gambar lain. Setelah selesai, periksa yang kotak "hanya yang fungsi" . Salin fungsi dan tempel di akhir kode Anda. Ganti nama fungsi baru menjadi sesuatu yang lain - seperti image01()
, sehingga Anda dapat melacak. Sekarang Anda perlu memindahkan panggilan ke image()
dari setup()
fungsi ke loop()
fungsi, tambahkan penundaan, panggil image01()
, dan tambahkan penundaan lagi. Pertimbangkan untuk mengganti nama image()
ke image00()
untuk konsistensi. loop()
. Anda fungsi akan terlihat seperti ini:
Unggah sketsa ke Arduino Anda. Coba tambahkan lebih banyak bingkai atau ubah waktu tunda.
Kode
- Animasi Metamorfosis Kupu-kupu
Animasi Metamorfosis Kupu-kupuArduino
Ini adalah contoh kode (kode di balik animasi metamorfosis kupu-kupu dari gif)./* animasi metamorfosis kupu-kupu 2021 ~ oleh tusindfryd kode ini ada di domain publik*/#include LiquidCrystal lcd(12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup(){ lcd.begin(16, 2);}void loop(){ image00(); penundaan (250); gambar01(); penundaan (250); gambar02(); penundaan (250); gambar03(); penundaan (700); gambar04(); penundaan (250); gambar05(); penundaan (250); gambar06(); penundaan (700); gambar07(); delay(1250);}void image00(){ lcd.clear(); byte image22[8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; byte image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B000000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.tulis(byte(0)); lcd.setCursor(6, 1); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image01(){ lcd.clear(); byte image22[8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B000000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; byte image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image06[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image06); lcd.setCursor(5, 1); lcd.tulis(byte(0)); lcd.setCursor(6, 1); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4)); lcd.setCursor(5, 0); lcd.write(byte(5));}void image02(){ lcd.clear(); byte image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B000000}; byte image07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; byte image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.tulis(byte(0)); lcd.setCursor(6, 1); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image03(){ lcd.clear(); byte image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B000000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24[8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B000000}; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image24); lcd.setCursor(5, 1); lcd.tulis(byte(0)); lcd.setCursor(6, 1); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4)); lcd.setCursor(7, 1); lcd.write(byte(5));}void image04(){ lcd.clear(); byte image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B000000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24[8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; byte image25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image24); lcd.createChar(6, image25); lcd.setCursor(5, 1); lcd.tulis(byte(0)); lcd.setCursor(6, 1); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4)); lcd.setCursor(7, 1); lcd.write(byte(5)); lcd.setCursor(8, 1); lcd.write(byte(6));}gambar kosong05(){ lcd.clear(); byte image24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; byte image25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; byte image23[8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; byte image08[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; lcd.createChar(0, image24); lcd.createChar(1, image25); lcd.createChar(2, image23); lcd.createChar(3, image07); lcd.createChar(4, image08); lcd.setCursor(7, 1); lcd.tulis(byte(0)); lcd.setCursor(8, 1); lcd.write(byte(1)); lcd.setCursor(6, 1); lcd.write(byte(2)); lcd.setCursor(6, 0); lcd.write(byte(3)); lcd.setCursor(7, 0); lcd.write(byte(4));}void image06(){ lcd.clear(); byte image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; byte image24[8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; byte image25[8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar(0, image08); lcd.createChar(1, image07); lcd.createChar(2, image09); lcd.createChar(3, image24); lcd.createChar(4, image25); lcd.setCursor(7, 0); lcd.tulis(byte(0)); lcd.setCursor(6, 0); lcd.write(byte(1)); lcd.setCursor(8, 0); lcd.write(byte(2)); lcd.setCursor(7, 1); lcd.write(byte(3)); lcd.setCursor(8, 1); lcd.write(byte(4));}void image07(){ lcd.clear(); byte image24[8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; byte image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; lcd.createChar(0, image24); lcd.createChar(1, image08); lcd.createChar(2, image07); lcd.createChar(3, image09); lcd.setCursor(7, 1); lcd.tulis(byte(0)); lcd.setCursor(7, 0); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write(byte(2)); lcd.setCursor(8, 0); lcd.write(byte(3));}
Skema