Isi kandungan:

Penjana Karakter Custom (Adafruit HT16k33 Matrix): 3 Langkah
Penjana Karakter Custom (Adafruit HT16k33 Matrix): 3 Langkah

Video: Penjana Karakter Custom (Adafruit HT16k33 Matrix): 3 Langkah

Video: Penjana Karakter Custom (Adafruit HT16k33 Matrix): 3 Langkah
Video: 3D-печатные светодиодные украшения на суставы пальцев #3dthursday 2024, Julai
Anonim
Penjana Karakter Tersuai (Adafruit HT16k33 Matrix)
Penjana Karakter Tersuai (Adafruit HT16k33 Matrix)

Mencetak Karakter Khas pada LCD dan Matriks Led sangat menyeronokkan. Prosedur untuk mencetak watak khas atau watak khas adalah menghasilkan array dengan nilai binari untuk setiap baris dan lajur. Mungkin sibuk mencari kod yang betul untuk mana-mana watak tersuai, oleh itu, projek ini akan mengautomatikkan dan menghasilkan kod untuk matriks 8x8 led dan juga akan mencetak watak khusus pada Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, 1.2 "8x8 Bicolor Led Matrix berkomunikasi dengan Arduino melalui protokol komunikasi I2C

Menurut Adafruit, "Ransel LED versi ini direka untuk matriks 1.2" 8x8. Mereka berukuran hanya 1.2 "x1.2" jadi memalukan untuk menggunakan pelbagai cip untuk mengawalnya. Beg galas ini menyelesaikan kegelisahan menggunakan 16 pin atau sekumpulan cip dengan pengawal matriks arus terus I2C duduk dengan rapi di bahagian belakang PCB. Cip pengawal menguruskan semuanya, melukis semua 64 LED di latar belakang. Yang harus anda lakukan ialah menulis data dengannya menggunakan antara muka I2C 2-pin. Terdapat dua pin pilih alamat supaya anda dapat memilih salah satu daripada 8 alamat untuk mengawal sehingga 8 daripadanya pada bas I2C 2-pin tunggal (serta cip atau sensor I2C lain yang anda suka). Cip pemacu dapat 'redup' keseluruhan paparan dari kecerahan 1/16 hingga kecerahan penuh dalam langkah 1/16. Ia tidak dapat meredupkan LED individu, hanya keseluruhan paparan sekaligus."

Dalam arahan ini, saya akan menerangkan kepada anda bagaimana untuk mendapatkan kod untuk watak khusus dalam masa nyata dan mencetak watak tersebut di Led Matrix.

Langkah 1: Komponen

Instruksional ini adalah projek asas pada Adafruit HT16k33 Matrix. Awak perlu:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (mana-mana varian tetapi Uno lebih disukai).
  3. Papan roti
  4. Bekalan Kuasa

Langkah 2: Skematik

Skema
Skema
Skema
Skema

Wiring Adafruit HT16k33 Led matriks sangat mudah kerana kita perlu menyambungkan jam dan pin data seperti yang biasa kita lakukan untuk peranti I2C. Sambungan akan seperti:

  1. SCL (Pin jam Matrix) disambungkan ke A5 (Pin jam Arduino Uno. Rujuk lembar data untuk varian Arduino lain)
  2. SDA (Pin data Matrix) disambungkan ke A4. (Rujuk lembar data untuk varian Arduino lain)
  3. VCC disambungkan ke 5V.
  4. GND disambungkan ke 0V.

Anda juga boleh melihat skema yang ditunjukkan dalam gambar.

Langkah 3: Kod

Kod
Kod
Kod
Kod

Kod Arduino

Pertama, kami akan memasukkan semua perpustakaan yang diperlukan.

  1. Wire.h: - Untuk komunikasi I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Semua perpustakaan ini terdapat di Arduino IDE itu sendiri. Anda hanya perlu memasangnya dari Pengurus Perpustakaan. Lakarkan >> Sertakan Perpustakaan >> Urus Perpustakaan

Fungsi persediaan ()

Menetapkan susunan 8-bit integer yang tidak bertanda untuk nilai perduaan strore8 untuk 8 baris, masing-masing 8 bit (8 lajur). Tetapkan alamat untuk komunikasi I2C.

Fungsi gelung ()

Oleh kerana kita perlu mencetak watak, kita memerlukan kod untuk watak tersebut dalam masa nyata. Kaedah yang paling mudah adalah menghantar kod secara bersiri dan Arduino akan membaca data bersiri dan mencetak watak dengan sewajarnya. Menghantar array secara bersiri mungkin merupakan pekerjaan yang sibuk, oleh itu kita boleh menghantar rentetan dengan semua 8 kod (masing-masing 8 bit) dipisahkan dengan koma.

Membaca Rentetan Bersiri:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (data); }

Setelah membaca teks, kita perlu menyahkod rentetan ini dan mendapatkan kembali nilai perduaan. Seperti yang kita ketahui, format rentetan input akan selalu sama. Kita boleh mengkodkannya untuk mencari substring dan menukar rentetan ke nilai setara perpuluhan mereka. Kemudian kita akan meneruskan susunan perpuluhan yang dihasilkan (uint8_t) untuk mencetak watak pada matriks.

Menukar Rentetan 8 bit ke perpuluhan:

int val (String str) {int v = 0; untuk (int i = 0; i <8; i ++) {if (str == '1') {v = v + kuasa (2, (7-i)); }} kembali v; }

Untuk menilai setara perpuluhan menggunakan fungsi kuasa (pow ()), anda perlu menangani nilai jenis ganda dan oleh itu kita dapat menulis fungsi daya kita sendiri sebagai:

int power (int base, int exponent) {int c = 1; untuk (int i = 0; i {c = c * base;} kembali c;}

Sekarang, akhirnya, kita akan menulis kod untuk mencetak watak menggunakan susunan 8 nilai perpuluhan yang dihasilkan (satu untuk setiap baris).

batal print_emoji (uint8_t emoji , String color) {matrix.clear (); jika (warna == "merah") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } lain {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); kelewatan (500); }

Anda akan memahami kod ini dengan mudah kerana kami membersihkan matriks terlebih dahulu dan kemudian memaparkan watak menggunakan array emoji menggunakan fungsi matrix.drawBitmap (). Jangan lupa menulis "matrix.writeDisplay ()" setelah semua pemformatan kerana fungsi ini hanya akan memaparkan semua format yang dilakukan setakat ini di matriks.

Sekarang anda boleh menghantar rentetan dengan semua nilai kod dan Arduino akan mencetak watak pada matriks. Anda boleh memuat turun kod Arduino dari bawah. Untuk tujuan eksperimen, anda boleh menulis

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

rentetan ini di Serial Monitor dan dapat melihat watak di matriks.

Sekarang, kita perlu menghantar data bersiri secara automatik dari perisian ketika kita menekan butang "Cetak". Untuk mengotomatisasi ini, kami akan membuat matriks demo 8x8 dan kami akan memberi kemudahan kepada pengguna untuk memilih sel mana yang harus diwarnakan dan kemudian perisian akan menghasilkan kod secara automatik dan mengirimkan data secara bersiri ke Arduino dalam format rentetan. Saya memilih Pemprosesan untuk sepanjang kerja saya. Dalam pemprosesan, kita dapat membuat matriks menggunakan 64 butang (segi empat tepat dengan fungsi ditekan) dan dapat memberikan nilai dan warna tertentu pada awalnya (Biarkan ia menjadi warna putih dengan nilai 0). Sekarang setiap kali butang ditekan, kita akan menukar warna butang menjadi hitam dan menetapkan nilainya menjadi 1. Jika pengguna menekan butang yang sama sekali lagi, nilainya akan kembali berubah menjadi 0 dan warnanya kembali menjadi putih. Ini akan membantu pengguna untuk menukar kod berulang-ulang dengan mudah dan dapat membuat pindaan dengan mudah tanpa menghapus keseluruhan matriks lagi. Pada klik butang "Cetak", kami akan membuat tali yang serupa dengan yang ditunjukkan di atas untuk demo. Kemudian rentetan akan dihantar ke port bersiri tertentu.

Anda boleh memuat turun kod pemprosesan dari bawah. Ini adalah kod pertama saya dalam pemprosesan. Cadangan untuk kaedah pengekodan yang dipertingkatkan sangat dihargai.

Anda dapat melihat bagaimana GUI kelihatan dan bagaimana watak itu dibuat menggunakan sistem. Hampir tidak memerlukan beberapa saat untuk mencipta watak yang sama di matriks.

Anda boleh memuat turun kod dan gambar projek ini dari GitHub Repository saya.

Disyorkan: