Përmbajtje:
Video: Gjenerator i Karakterit të Përshtatur (Adafruit HT16k33 Matrix): 3 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Shtypja e Karaktereve Speciale në LCD dhe Matricat Led është një argëtim i madh. Procedura për të printuar karaktere speciale ose karaktere të personalizuara është krijimi i një grupi me vlera binare për secilën rresht dhe kolonë. Mund të jetë e lodhshme të gjesh kodin e duhur për çdo karakter të personalizuar, prandaj, ky projekt do të automatizojë dhe gjenerojë kod për një matricë të udhëhequr 8x8 dhe gjithashtu do të shtypë karakterin e personalizuar në Adafruit HT16k33 8x8 Matrix Bicolor.
Adafruit HT16k33, një matricë 1.2 inç 8x8 me dy ngjyra komunikon me Arduino përmes një protokolli komunikimi I2C
Sipas Adafruit, "Ky version i shpinës LED është projektuar për matricat 1.2" 8x8. Ato kanë përmasa vetëm 1.2 "x1.2" kështu që është turp të përdorësh një grup masiv patate të skuqura për ta kontrolluar atë. Ky çantë shpine zgjidh shqetësimin e përdorimit të 16 kunjave ose një bandë patate të skuqura duke pasur një kontrollues të matricës me rrymë konstante I2C të ulet mirë në pjesën e pasme të PCB. Çipi i kontrolluesit kujdeset për gjithçka, duke tërhequr të gjitha 64 LED në sfond. E tëra çfarë ju duhet të bëni është t'i shkruani të dhënat duke përdorur ndërfaqen I2C me 2 kunja. Ekzistojnë dy kunja të përzgjedhura të adresave, kështu që ju mund të zgjidhni një nga 8 adresat për të kontrolluar deri në 8 prej tyre në një autobus të vetëm 2-pin I2C (si dhe çfarëdo patate të skuqura ose sensorë të tjerë I2C që ju pëlqen). Çipi i drejtuesit mund të "zbehë" të gjithë ekranin nga shkëlqimi 1/16 deri në shkëlqimin e plotë në hapat e 1/16. Nuk mund të zbehë LED -të individuale, vetëm të gjithë ekranin në të njëjtën kohë."
Në këtë udhëzues, unë do t'ju shpjegoj se si të merrni kodin për çdo karakter të personalizuar në kohë reale dhe ta printoni atë karakter në Led Matrix.
Hapi 1: Përbërësit
Ky udhëzues është një projekt themelor në Adafruit HT16k33 Matrix. Ju duhet:
- Adafruit HT16k33 1.2 "x 1.2" 8x8 Matricë Led me ngjyra.
- Arduino (çdo variant por Uno preferohet).
- Breadboard
- Furnizimi me energji elektrike
Hapi 2: Skematike
Lidhja e matricës Adafruit HT16k33 Led është shumë e lehtë pasi kemi nevojë të lidhim orën dhe pinin e të dhënave siç bëjmë zakonisht për pajisjet I2C. Lidhjet do të jenë si më poshtë:
- SCL (Pika e orës e Matricës) e lidhur me A5 (Kodi i orës i Arduino Uno. Referojeni fletën e të dhënave për variantet e tjera të Arduino)
- SDA (Kodi i të dhënave të Matricës) i lidhur me A4. (Referojuni fletës së të dhënave për variantet e tjera të Arduino)
- VCC e lidhur me 5V.
- GND i lidhur me 0V.
Ju gjithashtu mund të konsultoheni me skemën e treguar në figurë.
Hapi 3: Kodi
Kodi Arduino
Së pari, ne do të përfshijmë të gjitha bibliotekat e kërkuara.
- Wire.h:- Për komunikimin I2C
- Adafruit_LedBackpack
- Adafruit_GFX
Të gjitha këto biblioteka janë të disponueshme në vetë Arduino IDE. Thjesht duhet t'i instaloni ato nga Menaxheri i Bibliotekës. Skica >> Përfshi Bibliotekën >> Menaxhoni Bibliotekat
Funksioni i konfigurimit ()
Vendosja e një grupi të plotë të panënshkruar 8-bit në vlerat binare strore8 për 8 rreshta, me nga 8 bit secila (8 kolona). Vendosni adresën për komunikimin I2C.
Funksioni i lakut ()
Ndërsa kemi nevojë të shtypim karakterin, ne kemi nevojë për kodin për personazhin në kohë reale. Metoda më e përshtatshme është dërgimi i kodit në mënyrë serike dhe Arduino do të lexojë të dhënat serike dhe do të printojë karakterin në përputhje me rrethanat. Dërgimi i një grupi në mënyrë serike mund të jetë një punë e vrullshme, kështu që ne mund të dërgojmë një varg me të gjitha 8 kodet (8 bit secila) të ndara me presje.
Vargu Serial i Leximit:
if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (të dhëna); }
Pas leximit të tekstit, ne duhet të deshifrojmë këtë varg dhe të marrim përsëri vlerat binare. Siç e dimë, formati i vargut hyrës do të jetë gjithmonë i njëjtë. Ne mund ta kodojmë për të gjetur nënvargje dhe për t'i kthyer vargjet në vlerat e tyre ekuivalente dhjetore. Pastaj do të kalojmë grupin dhjetor të gjeneruar (uint8_t) për të printuar karakterin në matricë.
Konvertimi i vargut prej 8 bitësh në dhjetëshe:
int val (String str) {int v = 0; për (int i = 0; i <8; i ++) {if (str == '1') {v = v+fuqi (2, (7-i)); }} kthimi v; }
Për të vlerësuar ekuivalentin dhjetor duke përdorur funksionin e fuqisë (pow ()), ju duhet të merreni me vlera të tipit të dyfishtë dhe kështu ne mund të shkruajmë funksionin tonë të fuqisë si:
fuqia int (baza int, eksponenti int) {int c = 1; për (int i = 0; i {c = c*bazë;} kthimi c;}
Tani, më në fund, ne do të shkruajmë kodin për të printuar karakterin duke përdorur grupin e gjeneruar prej 8 vlerash dhjetore (një për secilën rresht).
void print_emoji (uint8_t emoji , String color) {matrix.clear (); nëse (ngjyra == "e kuqe") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); vonesë (500); }
Ju lehtë do ta kuptoni këtë kod pasi po pastrojmë matricën së pari dhe më pas shfaqim karakterin duke përdorur grupin emoji duke përdorur funksionin matrix.drawBitmap (). Mos harroni të shkruani "matrix.writeDisplay ()" pas të gjitha formatimeve pasi ky funksion do të shfaq vetëm të gjitha formatimet e bëra deri më tani në matricë.
Tani mund të dërgoni vargun me të gjitha vlerat e kodit dhe Arduino do të printojë karakterin në matricë. Kodin Arduino mund ta shkarkoni nga poshtë. Për qëllime eksperimentale, mund të shkruani
B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100
ky varg në Serial Monitor dhe mund të shohë karakterin në matricë.
Tani, ne duhet të dërgojmë të dhënat serike automatikisht nga një softuer kur shtypim butonin "Print". Për automatizimin e kësaj, ne do të bëjmë një matricë demo 8x8 dhe do t'i sigurojmë përdoruesit një mundësi për të zgjedhur se cilat qeliza duhet të jenë të ngjyrosura dhe më pas softueri automatikisht do të gjenerojë kodin dhe do t'i dërgojë të dhënat në mënyrë serike në Arduino në formatin e vargut. Zgjodha Përpunimin për pjesën tjetër të punës sime. Në përpunim, ne mund të bëjmë një matricë duke përdorur 64 butona (drejtkëndësha me funksion të shtypur) dhe mund të caktojmë një vlerë dhe ngjyrë të veçantë në fillim (Le të jetë ngjyra e bardhë me vlerën 0). Tani sa herë që shtypet butoni, ne do ta kthejmë ngjyrën e butonit në të zezë dhe do ta vendosim vlerën 1. Nëse përdoruesi shtyp përsëri të njëjtin buton, vlera e tij përsëri do të ndryshojë në 0 dhe ngjyra përsëri në të bardhë. Kjo do të ndihmojë përdoruesin të ndryshojë kodin përsëri dhe përsëri me lehtësi dhe mund të bëjë ndryshime lehtësisht pa e fshirë përsëri të gjithë matricën. Me klikimin e butonit "Print", ne do të bëjmë një varg të ngjashëm me atë të treguar më lart për demonstrimin. Pastaj vargu do të dërgohet në portin serik të veçantë.
Ju mund të shkarkoni kodin e përpunimit nga poshtë. Ky është kodi im i parë në përpunim. Sugjerimet për mënyrën e zgjeruar të kodimit vlerësohen shumë.
Ju mund të shihni se si duket GUI dhe si krijohet karakteri duke përdorur sistemin. Nuk do të duhen sekonda për të krijuar të njëjtin karakter në matricë.
Ju mund të shkarkoni kodin dhe imazhet e këtij projekti nga depoja ime GitHub.
Recommended:
Rrota e Steringut të Përshtatur (tenxhere si sensor i pozicionit): 10 hapa
Rrota e Steringut të Përshtatur (tenxhere si Pensor i Pozicionit): mohim: mos më fajësoni që nuk po tregoj hap pas hapi kjo thjesht supozohet të jetë një referencë dhe unë thjesht po them atë që kam bërë dhe rezultatin, ajo ka disa të meta thelbësore si zhurmë kështu që mos bëni pikërisht ashtu siç bëra unë dhe prisni një rezultat të jashtëzakonshëm, dhe f
Raspberry Pi Bordi i Zgjerimit të Përshtatur në shtëpi: 8 hapa
Bordi i Zgjerimit të Raspberry Pi Homemade: Që nga viti 2015 unë jam duke e përmirësuar këtë projekt të mrekullueshëm për të pasur një qendër mediatike me porosi pothuajse të pakufizuar në makinën time. Një ditë vendosa të sjell organizatën në tela atje me një dërrasë PCB të bërë në shtëpi. Fotografitë e mësipërme janë në skenë të gjerë prototipi, kështu që
Mbajtësi i Karakterit K`nex Infinity: 4 Hapa
Mbajtësi i Karakterit të Infinitit K`nex: Ky është Mbajtësi i Karakterit të K`nex Infinity. Compactshtë kompakt dhe është shumë i përshtatshëm. Unë e rekomandoj këtë për njerëzit që kanë karakteret e tyre të pafundme të gjithë të mbushur në një sirtar, duke u shkatërruar
Gjenerator - Gjenerator DC duke përdorur kallamin e kallamit: 3 hapa
Gjenerator - Gjeneratori DC duke përdorur kallamin e kallamit: Gjenerator i thjeshtë DC Një gjenerator i rrymës së drejtpërdrejtë (DC) është një makinë elektrike e cila konverton energjinë mekanike në energji elektrike me rrymë të drejtpërdrejtë. E rëndësishme: Një gjenerator i rrymës direkte (DC) mund të përdoret si motor DC pa ndonjë konstruktiv ndryshimet
Përshtatës i karakterit LCD I2c (Shembull i lidhjes I2c): 12 hapa (me fotografi)
Përshtatës LCD I2c Karakteri (Shembulli i Lidhjes I2c): Unë jam duke bërë një skemë lidhjeje për një përshtatës të shfaqjes së karaktereve i2c. Kontrolloni përditësimet në faqen time. Tani shtoj gjithashtu një skemë të lidhjes së telave për të përdorur bibliotekën origjinale që nuk është e pirunuar. për ekranet e karakterit LCD, projekt i pirunizuar