Setiap radio amatur, selepas beberapa kerja DIY yang ringkas, mencapai matlamat untuk membina sesuatu yang hebat menggunakan penderia dan butang. Lagipun, adalah lebih menarik untuk memaparkan data pada paparan daripada pada monitor port. Tetapi kemudian timbul persoalan: paparan mana yang hendak dipilih? Dan secara umum, bagaimana untuk menyambungkannya, apa yang diperlukan untuk menyambung? Jawapan kepada soalan ini akan dibincangkan dalam artikel ini.
LCD 1602
Di antara banyak pilihan antara paparan, saya ingin memilih paparan LCD1602 berdasarkan pengawal HD4478. Terdapat paparan ini dalam dua warna: huruf putih pada latar belakang biru, huruf hitam pada latar belakang kuning. Menyambungkan LCD 1602 ke Arduino juga tidak akan menyebabkan sebarang masalah, kerana terdapat perpustakaan terbina dalam, dan anda tidak perlu memuat turun apa-apa tambahan. Paparan berbeza bukan sahaja dalam harga, tetapi juga dalam saiz. Selalunya amatur radio menggunakan 16x 2, iaitu 2 baris 16 aksara. Tetapi terdapat juga 20 x 4, di mana terdapat 4 baris 20 aksara. Dimensi dan warna tidak memainkan sebarang peranan dalam menyambungkan paparan lcd 1602 ke Arduno, ia disambungkan dengan cara yang sama. Sudut tontonan ialah 35 darjah, masa tindak balas paparan ialah 250 ms. Boleh bekerja pada suhu dari -20 hingga 70 darjah Celsius. Semasa bekerja, ia menggunakan 4 mA untuk skrin dan 120 mA untuk lampu latar.
Di manakah ia digunakan?
Paparan ini mempunyai populariti bukan sahaja dalam kalangan radio amatur, tetapi juga dalam kalangan pengeluar besar. Sebagai contoh, pencetak, mesin kopi juga menggunakan LCD1602. Ini disebabkan oleh harganya yang rendah, paparan ini berharga 200-300 rubel di tapak Cina. Berbaloi membeli di sana, kerana di kedai kami margin untuk paparan ini sangat tinggi.
Sambung ke Arduino
Menyambungkan LCD 1602 ke Arduino Nano dan Uno tidak berbeza. Anda boleh bekerja dengan paparan dalam dua mod: 4 bit dan 8. Apabila bekerja dengan paparan 8-bit, kedua-dua bit yang lebih rendah dan lebih tinggi digunakan, dan dengan yang 4-bit, hanya yang lebih rendah. Tiada titik tertentu dalam bekerja dengan 8-bit, kerana 4 lagi kenalan akan ditambah untuk menyambung, yang tidak digalakkan, kerana kelajuan tidak akan lebih tinggi, had kemas kini paparan ialah 10 kali sesaat. Secara umum, banyak wayar digunakan untuk menyambungkan lcd 1602 ke Arduino, yang menyebabkan beberapa kesulitan, tetapi terdapat perisai khas, tetapi lebih lanjut mengenainya kemudian. Foto menunjukkan sambungan paparan ke Arduino Uno:
Contoh kod:
termasuk //Tambah perpustakaan yang diperlukan LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Tetapkan dimensi skrin lcd.setCursor(0, 0); // Tetapkan kursor ke permulaan baris 1 lcd.print("Hello, world!"); // Paparkan teks lcd.setCursor(0, 1); // Tetapkan kursor ke permulaan baris 2 lcd.print("fb.ru"); // Teks output } void loop(){ }
Apakah fungsi kod tersebut? Pertama sekali, perpustakaan untuk bekerja dengan paparan disambungkan. Seperti yang dinyatakan di atas, perpustakaan ini telah pun disertakan dalam IDE Arduino dan anda tidak perlu memuat turun dan memasangnya tambahan. Seterusnya, kenalan yang disambungkan ke pin ditakrifkan: RS, E, DB4, DB5, DB6, DB7, masing-masing. Kemudian saiz skrin ditetapkan. Memandangkan kami bekerja dengan versi dengan 16 aksara dan 2 baris, kami menulis nilai sedemikian. Kami menetapkan kursor ke permulaan baris pertama dan memaparkan teks pertama Hello World. Seterusnya, letakkan kursor pada baris kedua dan paparkan nama tapak. Itu sahaja! Menyambung lcd 1602 ke Arduino Uno telah dipertimbangkan.
Apakah I2C dan mengapa ia diperlukan?
Seperti yang dinyatakan di atas, menyambungkan paparan memerlukan banyak pin. Sebagai contoh, apabila bekerja dengan berbilang penderia dan paparan LCD 1602 kenalan mungkin tidak mencukupi. Selalunya, amatur radio menggunakan versi Uno atau Nano, di mana tidak banyak kenalan. Kemudian orang datang dengan perisai khas. Contohnya, I2C. Ia membolehkan anda menyambungkan paparan dengan hanya 4 pin. Ini adalah dua kali lebih sedikit. Modul I2C dijual secara berasingan, di mana anda perlu menyoldernya sendiri, dan sudah dipateri kePaparan LCD 1602.
Sambungan dengan modul I2C
Menyambungkan LCD 1602 ke Arduino Nano dengan I2C mengambil sedikit ruang, hanya 4 pin: pembumian, kuasa dan 2 output data. Kami menyambungkan kuasa dan tanah kepada 5V dan GND pada Arduino, masing-masing. Baki dua kenalan: SCL dan SDA disambungkan kepada mana-mana pin analog. Dalam foto anda boleh melihat contoh menyambung lcd 1602 ke arduino dengan modul I2C:
Kod program
Jika perlu menggunakan hanya satu perpustakaan untuk berfungsi dengan paparan tanpa modul, maka dua perpustakaan diperlukan untuk berfungsi dengan modul. Salah satunya sudah ada dalam Arduino IDE - Wire. Perpustakaan lain, LiquidCrystal I2C, perlu dimuat turun secara berasingan dan dipasang. Untuk memasang perpustakaan dalam Arduino, kandungan arkib yang dimuat turun mesti dimuat naik ke folder akar Perpustakaan. Contoh kod menggunakan I2C:
termasuk termasuk lcd LiquidCrystal_I2C(0x27, 16, 2); // Sediakan persediaan void paparan() { lcd.init(); lcd.backlight();// Hidupkan lampu latar paparan lcd.print("FB.ru"); lcd.setCursor(8, 1); lcd.print("LCD 1602"); } void loop() { // Tetapkan kursor kepada baris kedua dan aksara nol. lcd.setCursor(0, 1); // Cetak bilangan saat sejak arduino memulakan lcd.print(millis()/1000); }
Seperti yang anda lihat, kodnya hampir sama.
Bagaimanakah cara saya menambah simbol saya sendiri?
Masalah dengan paparan ini ialah tiadasokongan untuk Cyrillic dan simbol. Sebagai contoh, anda perlu memuatkan beberapa aksara ke dalam paparan supaya ia dapat mencerminkannya. Untuk melakukan ini, paparan membolehkan anda mencipta sehingga 7 aksara anda. Bentangkan jadual:
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 |
Jika 0 - tiada apa-apa di sana, jika 1 - ia adalah kawasan berlorek. Dalam contoh di atas, anda boleh melihat penciptaan watak "smiling smiley". Menggunakan contoh program dalam Arduino, ia akan kelihatan seperti ini:
include include // Sertakan perpustakaan yang diperlukan // Simbol senyuman bitmask byte smile[8]={ B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; lcd LiquidCrystal(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Tetapkan dimensi skrin lcd.createChar(1, smile); // Cipta nombor aksara 1 lcd.setCursor(0, 0); // Tetapkan kursor ke permulaan baris 1 lcd.print("\1"); // Paparkan smiley (aksara nombor 1) - "\1" } void loop(){ }
Seperti yang anda lihat, telah diciptabitmask adalah sama dengan jadual. Setelah dibuat, ia boleh dikeluarkan sebagai pembolehubah kepada paparan. Ingat bahawa hanya 7 aksara boleh disimpan dalam ingatan. Pada dasarnya, ini sudah cukup. Contohnya, jika anda ingin menunjukkan simbol darjah.
Masalah di mana paparan mungkin tidak berfungsi
Ada kalanya paparan tidak berfungsi. Sebagai contoh, ia dihidupkan, tetapi tidak menunjukkan aksara. Atau ia tidak menyala sama sekali. Mula-mula, lihat jika anda menyambungkan kenalan dengan betul. Jika anda pernah menyambungkan lcd 1202 ke Arduino tanpa I2C, maka sangat mudah untuk kusut dalam wayar, yang boleh menyebabkan paparan berfungsi dengan tidak betul. Anda juga harus memastikan bahawa kontras paparan ditingkatkan, kerana kontras minimum ia tidak dapat dilihat sama ada LCD 1602 dihidupkan atau tidak. Jika ini tidak membantu, maka mungkin masalahnya mungkin terletak pada pematerian kenalan, ini adalah apabila menggunakan modul I2C. Juga, sebab biasa mengapa paparan mungkin tidak berfungsi ialah tetapan alamat I2C yang salah. Hakikatnya ialah terdapat banyak pengeluar, dan mereka boleh menetapkan alamat yang berbeza, anda perlu membetulkannya di sini:
LiquidCrystal_I2C lcd(0x27, 16, 2);
Dalam kurungan anda boleh melihat dua nilai, 0x27 dan 16, 2 (16, 2 ialah saiz paparan dan 0x27 hanyalah alamat I2C). Daripada nilai ini, anda boleh cuba meletakkan 0x37 atau 0x3F. Nah, sebab lain hanyalah LCD 1602 yang rosak. Memandangkan hampir segala-galanya untuk Arduino dibuat di China, anda tidak boleh 100% pasti bahawa yang dibeliproduk tidak rosak.
LCD 1602 kebaikan dan keburukan
Mari kita lihat kebaikan dan keburukan LCD 1602.
Kebaikan
- Harga. Modul ini boleh dibeli dengan harga yang sangat berpatutan di kedai Cina. Harganya ialah 200-300 rubel. Kadangkala dijual dengan modul I2C.
- Mudah disambungkan. Mungkin tiada siapa yang menyambungkan LCD 1602 tanpa I2C hari ini. Dan dengan modul ini, sambungan hanya memerlukan 4 pin, tidak akan ada "jaring" wayar.
- Pengaturcaraan. Terima kasih kepada perpustakaan siap pakai, bekerja dengan modul ini adalah mudah, semua fungsi sudah didaftarkan. Dan jika anda perlu menambah watak anda, ia hanya mengambil masa beberapa minit.
Kontra
Sepanjang masa penggunaan oleh beribu-ribu radio amatur, tiada kelemahan besar telah dikenal pasti, cuma terdapat kes membeli perkahwinan, kerana pilihan paparan bahasa Cina digunakan terutamanya
Artikel ini membincangkan cara menyambungkan paparan LCD 1602 ke Arduino, dan juga membentangkan program sampel untuk bekerja dengan paparan ini. Ia benar-benar antara yang terbaik dalam kategorinya, bukan sahaja beribu-ribu radio amatur memilihnya untuk projek mereka!