Talaan ng mga Nilalaman:

Pasadyang Tagabuo ng Character (Adafruit HT16k33 Matrix): 3 Mga Hakbang
Pasadyang Tagabuo ng Character (Adafruit HT16k33 Matrix): 3 Mga Hakbang

Video: Pasadyang Tagabuo ng Character (Adafruit HT16k33 Matrix): 3 Mga Hakbang

Video: Pasadyang Tagabuo ng Character (Adafruit HT16k33 Matrix): 3 Mga Hakbang
Video: Introduction to LCD2004 LCD display with I2C module for Arduino 2024, Hulyo
Anonim
Custom Character Generator (Adafruit HT16k33 Matrix)
Custom Character Generator (Adafruit HT16k33 Matrix)

Isang malaking kasiyahan ang pag-print ng Mga Espesyal na Character sa LCD at Led Matrices. Ang pamamaraan upang mag-print ng mga espesyal na character o pasadyang character ay upang makabuo ng isang array na may mga halagang binary para sa bawat hilera at haligi. Maaaring maging abala upang mahanap ang tamang code para sa anumang pasadyang character, samakatuwid, ang proyektong ito ay awtomatiko at bubuo ng code para sa isang 8x8 led matrix at mai-print din ang pasadyang character sa Adafruit HT16k33 8x8 Bicolor Matrix.

Ang Adafruit HT16k33, isang 1.2 "8x8 Bicolor Led Matrix ay nakikipag-usap kay Arduino sa pamamagitan ng isang protocol ng komunikasyon ng I2C

Ayon kay Adafruit, "Ang bersyon na ito ng LED backpack ay dinisenyo para sa 1.2" 8x8 matrices. Sinusukat lamang nila ang 1.2 "x1.2" kaya't nakakahiya na gumamit ng isang napakalaking hanay ng mga chips upang makontrol ito. Nalulutas ng backpack na ito ang inis ng paggamit ng 16 na mga pin o isang grupo ng mga chips sa pamamagitan ng pagkakaroon ng isang I2C pare-pareho na kasalukuyang matrix Controller na umupo nang maayos sa likod ng PCB. Ang chip chip ay nangangalaga sa lahat, iginuhit ang lahat ng 64 LEDs sa background. Ang kailangan mo lang gawin ay sumulat ng data dito gamit ang 2-pin na interface ng I2C. Mayroong dalawang mga piniling address na pin upang mapili mo ang isa sa 8 mga address upang makontrol ang hanggang 8 sa mga ito sa isang solong 2-pin I2C bus (pati na rin ang iba pang I2C chips o sensor na gusto mo). Ang driver chip ay maaaring 'malabo' ang buong pagpapakita mula sa 1/16 ningning hanggang sa buong ningning sa 1/16 na mga hakbang. Hindi nito madidilim ang mga indibidwal na LED, ang buong display lang nang sabay-sabay."

Sa itinuturo na ito, ipapaliwanag ko sa iyo kung paano makuha ang code para sa anumang pasadyang character nang real time at mai-print ang character na iyon sa Led Matrix.

Hakbang 1: Mga Bahagi

Ang itinuturo na ito ay isang pangunahing proyekto sa Adafruit HT16k33 Matrix. Kailangan mo:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (anumang variant ngunit mas gusto ang Uno).
  3. Breadboard
  4. Power Supply

Hakbang 2: Skematika

Skematika
Skematika
Skematika
Skematika

Ang Cable Adafruit HT16k33 Led matrix ay napakadaling kailangan namin upang ikonekta ang orasan at data pin tulad ng karaniwang ginagawa namin para sa mga I2C device. Ang mga koneksyon ay magiging tulad ng:

  1. Ang SCL (Clock pin ng Matrix) ay konektado sa A5 (Clock pin ng Arduino Uno. Sumangguni sa datasheet para sa iba pang mga variant ng Arduino)
  2. Ang SDA (Data pin ng Matrix) na konektado sa A4. (Sumangguni sa datasheet para sa iba pang mga variant ng Arduino)
  3. Ang VCC ay konektado sa 5V.
  4. Nakakonekta ang GND sa 0V.

Maaari ka ring kumunsulta sa eskematiko na ipinakita sa pigura.

Hakbang 3: Code

Code
Code
Code
Code

Code ng Arduino

Una, isasama namin ang lahat ng kinakailangang mga aklatan.

  1. Wire.h: - Para sa komunikasyon ng I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Ang lahat ng mga library na ito ay magagamit sa Arduino IDE mismo. Kailangan mo lamang i-install ang mga ito mula sa Library Manager. Sketch >> Isama ang Library >> Pamahalaan ang Mga Aklatan

Pag-andar ng pag-setup ()

Ang pagtatakda ng isang unsigned integer 8-bit array upang strore8 mga halagang binary para sa 8 mga hilera, ng 8 mga piraso bawat (8 mga haligi). Itakda ang address para sa komunikasyon ng I2C.

Pag-andar ng loop ()

Tulad ng kailangan naming i-print ang character, kailangan namin ang code para sa character sa real time. Ang pinaka-maginhawang pamamaraan ay upang ipadala ang code nang serial at babasahin ng Arduino ang serial data at mai-print ang character nang naaayon. Ang pagpapadala ng isang array nang serial ay maaaring maging isang abalang trabaho, kaya maaari kaming magpadala ng isang string na may lahat ng 8 mga code (8 bit bawat isa) na pinaghihiwalay ng mga kuwit.

Pagbabasa ng Serial String:

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

Matapos basahin ang teksto, kailangan nating i-decode ang string na ito at ibalik ang mga halagang binary. Tulad ng alam natin, ang format ng input string ay palaging magiging pareho. Maaari namin itong i-code upang makahanap ng mga substring at i-convert ang mga string sa kanilang katumbas na halaga na decimal. Pagkatapos ay ipapasa namin ang nabuong decimal array (uint8_t) upang mai-print ang character sa matrix.

Ang pag-convert ng String ng 8 bits sa decimal:

int val (String str) {int v = 0; para sa (int i = 0; i <8; i ++) {kung (str == '1') {v = v + power (2, (7-i)); }} ibalik ang v; }

Para sa pagsusuri ng katumbas ng decimal gamit ang power function (pow ()), kailangan mong harapin ang mga dobleng halaga ng uri at kaya maaari naming isulat ang aming sariling pagpapaandar ng kapangyarihan bilang:

int power (int base, int exponent) {int c = 1; para sa (int i = 0; i {c = c * base;} bumalik c;}

Ngayon, sa wakas, isusulat namin ang code upang mai-print ang character gamit ang nabuong array ng 8 decimal na halaga (isa para sa bawat hilera).

walang bisa print_emoji (uint8_t emoji , Kulay ng string) {matrix.clear (); kung (kulay == "pula") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } iba pa {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); pagkaantala (500); }

Madali mong mauunawaan ang code na ito habang nililinaw muna namin ang matrix at pagkatapos ay ipinapakita ang character na gumagamit ng emoji array gamit ang function na matrix.drawBitmap (). Huwag kalimutang isulat ang "matrix.writeDisplay ()" pagkatapos ng lahat ng pag-format dahil ipapakita lamang ng pagpapaandar na ito ang lahat ng mga pag-format na tapos na sa matrix.

Ngayon ay maaari mong ipadala ang string sa lahat ng mga halaga ng code at i-print ng Arduino ang character sa matrix. Maaari mong i-download ang Arduino code mula sa ibaba. Para sa pang-eksperimentong layunin, maaari kang sumulat

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

ang string na ito sa Serial Monitor at makikita ang character sa matrix.

Ngayon, kailangan naming magpadala ng serial data nang awtomatiko mula sa isang software kapag pinindot namin ang pindutang "I-print". Para sa pag-automate nito, gagawa kami ng isang demo na 8x8 matrix at magbibigay kami ng isang pasilidad sa gumagamit upang piliin kung aling mga cell ang dapat na may kulay at pagkatapos ay awtomatikong bubuo ang software ng code at ipadala ang data ng serial sa Arduino sa format ng string. Pinili ko ang Pagproseso para sa natitirang gawain ko. Sa pagproseso, maaari kaming gumawa ng isang matrix gamit ang 64 na mga pindutan (mga parihaba na may pinindot na pag-andar) at maaaring magtalaga ng isang partikular na halaga at kulay sa simula (Hayaan itong ang puting kulay na may halagang 0). Ngayon tuwing pinindot ang pindutan, babaguhin namin ang kulay ng pindutan sa itim at itatakda ang halaga sa 1. Kung ang gumagamit ay pindutin muli ang parehong pindutan, ang halaga nito ay muling babago sa 0 at kulay pabalik sa puti. Matutulungan nito ang gumagamit na baguhin ang code muli at muli nang madali at madaling makagawa ng mga pag-amyenda nang hindi binubura muli ang buong matrix. Sa pag-click sa pindutang "I-print", gagawa kami ng isang string na katulad sa ipinakita sa itaas para sa demo. Pagkatapos ang string ay ipapadala sa partikular na serial port.

Maaari mong i-download ang processing code mula sa ibaba. Ito ang aking unang code sa pagproseso. Ang mga mungkahi para sa pinahusay na paraan ng pag-coding ay lubos na pinahahalagahan.

Maaari mong makita kung paano ang hitsura ng GUI at kung paano nilikha ang character gamit ang system. Hindi ito magtatagal ng segundo upang lumikha ng parehong character sa matrix.

Maaari mong i-download ang code at mga imahe ng proyektong ito mula sa aking GitHub Repository.

Inirerekumendang: