Orodha ya maudhui:

Jenereta ya Tabia ya Kawaida (Adafruit HT16k33 Matrix): 3 Hatua
Jenereta ya Tabia ya Kawaida (Adafruit HT16k33 Matrix): 3 Hatua

Video: Jenereta ya Tabia ya Kawaida (Adafruit HT16k33 Matrix): 3 Hatua

Video: Jenereta ya Tabia ya Kawaida (Adafruit HT16k33 Matrix): 3 Hatua
Video: 7 проектов. Сборка светодиодного ЖК-будильника с использованием DS1307 и Arduino | Урок 105 2024, Novemba
Anonim
Jenereta ya Tabia maalum (Adafruit HT16k33 Matrix)
Jenereta ya Tabia maalum (Adafruit HT16k33 Matrix)

Kuchapisha Wahusika Maalum kwenye LCD na Matrices ya Led ni raha kubwa. Utaratibu wa kuchapisha wahusika maalum au wahusika wa kawaida ni kutengeneza safu na maadili ya binary kwa kila safu na safu. Inaweza kuwa ngumu kupata nambari sahihi ya mhusika yeyote, kwa hivyo, mradi huu utatengeneza na kutoa nambari ya tumbo iliyoongozwa na 8x8 na pia itachapisha tabia ya kawaida kwenye Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, 1.2 "8x8 Bicolor Led Matrix inawasiliana na Arduino kupitia itifaki ya mawasiliano ya I2C

Kulingana na Adafruit, "Toleo hili la mkoba wa LED limetengenezwa kwa matrices 1.2" 8x8. Wanapima 1.2 "x1.2" tu kwa hivyo ni aibu kutumia safu kubwa ya chips kudhibiti. Mkoba huu hutatua kero ya kutumia pini 16 au rundo la chips kwa kuwa na mtawala wa tumbo la mara kwa mara wa I2C kukaa vizuri nyuma ya PCB. Chip ya mtawala hutunza kila kitu, kuchora LED zote 64 kwa nyuma. Unachohitajika kufanya ni kuiandikia data kwa kutumia kiwambo cha pini 2 cha I2C. Kuna pini mbili za kuchagua anwani ili uweze kuchagua moja ya anwani 8 kudhibiti hadi 8 ya hizi kwenye basi moja ya pini 2 za I2C (na vile vile chips zingine za I2C au sensorer unazopenda). Chip ya dereva inaweza "kupunguza" onyesho lote kutoka mwangaza wa 1/16 hadi mwangaza kamili katika hatua ya 1/16. Haiwezi kufifisha taa za LED za kibinafsi, lakini onyesho lote kwa wakati mmoja."

Katika hii inayoweza kufundishwa, nitakuelezea jinsi ya kupata nambari ya mhusika yeyote kwa wakati halisi na uchapishe tabia hiyo kwenye Led Matrix.

Hatua ya 1: Vipengele

Inaweza kufundishwa ni mradi wa msingi kwenye Matrix ya Adafruit HT16k33. Unahitaji:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (tofauti yoyote lakini Uno inapendelea).
  3. Bodi ya mkate
  4. Ugavi wa Umeme

Hatua ya 2: Mpangilio

Mpangilio
Mpangilio
Mpangilio
Mpangilio

Wiring Adafruit HT16k33 Led matrix ni rahisi sana kwani tunahitaji kuunganisha saa na pini ya data kama kawaida tunavyofanya kwa vifaa vya I2C. Uunganisho utakuwa kama:

  1. SCL (Pini ya saa ya Matrix) iliyounganishwa na A5 (Pini ya Saa ya Arduino Uno. Rejelea data ya data kwa anuwai zingine za Arduino)
  2. SDA (Pini ya data ya Matrix) iliyounganishwa na A4. (Rejelea hati ya data kwa anuwai zingine za Arduino)
  3. VCC imeunganishwa na 5V.
  4. GND imeunganishwa na 0V.

Unaweza pia kushauriana na skimu iliyoonyeshwa kwenye takwimu.

Hatua ya 3: Kanuni

Kanuni
Kanuni
Kanuni
Kanuni

Msimbo wa Arduino

Kwanza, tutajumuisha maktaba zote zinazohitajika.

  1. Wire.h: - Kwa mawasiliano ya I2C
  2. Adafruit_LedBackpack
  3. Matunda_GFX

Maktaba hizi zote zinapatikana katika Arduino IDE yenyewe. Lazima uzisakinishe kutoka kwa Meneja wa Maktaba. Mchoro >> Jumuisha Maktaba >> Simamia Maktaba

Kazi ya usanidi ()

Kuweka safu isiyo na saini ya nambari 8 -b kwa viwango str8 vya binary kwa safu 8, ya bits 8 kila (nguzo 8). Weka anwani ya mawasiliano ya I2C.

Kazi ya kitanzi ()

Kama tunavyohitaji kuchapisha mhusika, tunahitaji nambari ya mhusika katika wakati halisi. Njia rahisi zaidi ni kutuma nambari mfululizo na Arduino atasoma data ya serial na kuchapisha mhusika ipasavyo. Kutuma safu mfululizo inaweza kuwa kazi ngumu, kwa hivyo tunaweza kutuma kamba na nambari zote 8 (bits 8 kila moja) zilizotengwa na koma.

Kusoma Kamba ya Serial:

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

Baada ya kusoma maandishi, tunahitaji kung'amua kamba hii na kurudisha maadili ya binary. Kama tunavyojua, fomati ya kamba ya kuingiza itakuwa sawa kila wakati. Tunaweza kuisimbo ili kupata mistari na kubadilisha masharti kuwa nambari sawa za desimali. Kisha tutapitisha safu ya desimali iliyotengenezwa (uint8_t) kuchapisha tabia kwenye tumbo.

Kubadilisha Kamba ya bits 8 kuwa decimal:

int val (Kamba str) {int v = 0; kwa (int i = 0; i <8; i ++) {if (str == '1') {v = v + power (2, (7-i)); }} kurudi v; }

Kwa kutathmini sawa na desimali kutumia nguvu kazi (pow ()), unahitaji kushughulika na maadili ya aina mbili na kwa hivyo tunaweza kuandika kazi yetu ya nguvu kama:

int int (int base, int exponent) {int c = 1; kwa (int i = 0; i {c = c * msingi;} kurudi c;}

Sasa, mwishowe, tutaandika nambari ili kuchapisha herufi kwa kutumia safu iliyotengenezwa ya nambari 8 za desimali (moja kwa kila safu).

batili print_emoji (uint8_t emoji , Rangi ya kamba) {matrix.clear (); ikiwa (rangi == "nyekundu") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } mwingine {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } tumbo.andikaDisplay (); kuchelewesha (500); }

Utaelewa nambari hii kwa urahisi tunapofuta tumbo kwanza na kisha kuonyesha tabia kwa kutumia safu ya emoji kutumia matrix.drawBitmap () kazi. Usisahau kuandika "matrix.writeDisplay ()" baada ya muundo wote kwani kazi hii itaonyesha tu mipangilio yote iliyofanywa hadi sasa kwenye tumbo.

Sasa unaweza kutuma kamba na maadili yote ya kificho na Arduino atachapisha tabia kwenye tumbo. Unaweza kupakua nambari ya Arduino kutoka chini. Kwa kusudi la majaribio, unaweza kuandika

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

kamba hii katika Serial Monitor na inaweza kuona mhusika kwenye tumbo.

Sasa, tunahitaji kutuma data ya serial moja kwa moja kutoka kwa programu wakati tunabonyeza kitufe cha "Chapisha". Kwa kusanikisha hii, tutafanya onyesho la matrix 8x8 na tutatoa kituo kwa mtumiaji kuchagua ni seli zipi zinapaswa kupakwa rangi na kisha programu hiyo itazalisha nambari moja kwa moja na kutuma data kwa mfululizo kwa Arduino katika fomati ya kamba. Nilichagua Usindikaji kwa kazi yangu yote. Katika usindikaji, tunaweza kutengeneza tumbo kutumia vifungo 64 (mstatili na kazi iliyoshinikizwa) na tunaweza kupeana thamani fulani na rangi mwanzoni (Iwe rangi nyeupe na thamani 0). Sasa wakati wowote kitufe kinapobanwa, tutabadilisha rangi ya kitufe kuwa nyeusi na kuweka thamani kuwa 1. Ikiwa mtumiaji atabonyeza kitufe kimoja tena, thamani yake itabadilika tena kuwa 0 na kupaka rangi tena kuwa nyeupe. Hii itasaidia mtumiaji kubadilisha nambari tena na tena kwa urahisi na inaweza kufanya marekebisho kwa urahisi bila kufuta tumbo lote tena. Kwenye bonyeza ya kitufe cha "Chapisha", tutafanya kamba sawa na ile iliyoonyeshwa hapo juu kwa onyesho. Kisha kamba itatumwa kwa bandari fulani ya serial.

Unaweza kupakua nambari ya usindikaji kutoka chini. Hii ndio nambari yangu ya kwanza katika usindikaji. Mapendekezo ya njia iliyoboreshwa ya usimbuaji yanathaminiwa sana.

Unaweza kuona jinsi GUI inavyoonekana na jinsi mhusika ameundwa kwa kutumia mfumo. Haitachukua sekunde kuunda mhusika sawa kwenye tumbo.

Unaweza kupakua nambari na picha za mradi huu kutoka Hifadhi yangu ya GitHub.

Ilipendekeza: