Բովանդակություն:

Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա) ՝ 3 քայլ
Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա) ՝ 3 քայլ

Video: Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա) ՝ 3 քայլ

Video: Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա) ՝ 3 քայլ
Video: ԱՆՎՃԱՐ ԷՆԵՐԳԻԱ ԳԵՆԵՐԱՏՈՐ ՋՐՈՎ - ՋՐԱԾՆԱՅԻՆ ՇԱՐԺԻՉ 2024, Նոյեմբեր
Anonim
Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա)
Նիշերի հարմարեցված գեներատոր (Adafruit HT16k33 մատրիցա)

LCD- ների և լուսադիոդային մատրիցների վրա հատուկ կերպարների տպելը հիանալի ժամանց է: Հատուկ նիշերի կամ հատուկ նիշերի տպագրման կարգը յուրաքանչյուր տողի և սյունակի համար երկուական արժեքներով զանգված ստեղծելն է: Customանկացած կերպարի համար ճիշտ կոդը գտնելը կարող է բուռն լինել, հետևաբար, այս նախագիծը ավտոմատացնելու և ստեղծելու է ծածկագիր 8x8 առաջնորդվող մատրիցի համար, ինչպես նաև տպելու է անհատական կերպարը Adafruit HT16k33 8x8 երկգույն մատրիցով:

Adafruit HT16k33- ը, 1,2 '' 8x8 երկգույն Led Matrix- ը Arduino- ի հետ շփվում է I2C հաղորդակցության արձանագրության միջոցով:

Ըստ Ադաֆրուտի ՝ «LED ուսապարկի այս տարբերակը նախատեսված է 1.2» 8x8 մատրիցների համար: Նրանք ունեն ընդամենը 1.2 "x1.2" չափսեր, ուստի ամոթ է այն վերահսկելու համար օգտագործել չիպերի զանգվածային զանգված: Այս ուսապարկը լուծում է 16 կապում կամ մի քանի չիպսեր օգտագործելու վրդովմունքը ՝ ունենալով I2C մշտական հոսանքի մատրիցի վերահսկիչ, որը կոկիկ նստած է PCB- ի հետևի մասում: Հսկիչ չիպը հոգ է տանում ամեն ինչի մասին ՝ հետին պլանում գծելով բոլոր 64 LED- ները: Մնում է միայն տվյալներ գրել դրան ՝ օգտագործելով 2-փին I2C ինտերֆեյսը: Գոյություն ունեն հասցեների ընտրության երկու կապում, այնպես որ կարող եք ընտրել 8 հասցեներից մեկը `դրանցից մինչև 8-ը կառավարելու համար մեկ 2-պինանոց I2C ավտոբուսում (ինչպես նաև ցանկացած այլ I2C չիպ կամ սենսոր, որը Ձեզ դուր է գալիս): Վարորդի չիպը կարող է «մթնել» ամբողջ էկրանը 1/16 պայծառությունից մինչև լիարժեք պայծառություն 1/16 քայլերում: Այն չի կարող մարել առանձին LED- ները, միանգամից միայն ամբողջ էկրանը »:

Այս ուսանելի հոդվածում ես ձեզ կբացատրեմ, թե ինչպես ստանալ իրական ժամանակում ցանկացած հատուկ բնույթի ծածկագիր և տպել այդ բնույթը Led Matrix- ում:

Քայլ 1: Բաղադրիչներ

Սա ուսանելի է Adafruit HT16k33 Matrix- ի հիմնական նախագիծը: Քեզ պետք է:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 երկգույն Led Matrix.
  2. Arduino (նախընտրելի է ցանկացած տարբերակ, բայց Uno):
  3. Breadboard
  4. Էներգամատակարարում

Քայլ 2: Սխեմատիկ

Սխեմատիկ
Սխեմատիկ
Սխեմատիկ
Սխեմատիկ

Adafruit HT16k33 Led մատրիցը շատ հեշտ է, քանի որ մենք պետք է միացնենք ժամացույցը և տվյալների կապը, ինչպես սովորաբար անում ենք I2C սարքերի համար: Կապերը նման կլինեն.

  1. SCL (Matrix- ի ժամացույցի կապում) միացված է A5- ին (Arduino Uno- ի ժամացույցի քորոց: Arduino- ի այլ տարբերակների համար տե՛ս տվյալների թերթիկը)
  2. SDA (Matrix- ի տվյալների քորոց) միացված է A4- ին: (Տե՛ս Arduino- ի այլ տարբերակների տվյալների թերթիկը)
  3. VCC միացված է 5V:
  4. GND միացված է 0 Վ լարման:

Կարող եք նաև խորհրդակցել նկարում ներկայացված սխեմատիկ պատկերի հետ:

Քայլ 3: Կոդ

Կոդ
Կոդ
Կոդ
Կոդ

Arduino կոդ

Նախ, մենք կներառենք բոլոր անհրաժեշտ գրադարանները:

  1. Wire.h:- I2C հաղորդակցության համար
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Այս բոլոր գրադարանները հասանելի են բուն Arduino IDE- ում: Պարզապես պետք է դրանք տեղադրել Գրադարանի կառավարչից: Էսքիզներ >> Ներառել գրադարանը >> Կառավարել գրադարանները

Կարգավորման գործառույթ ()

8-բիթանոց անստորագիր ամբողջ զանգված սահմանելով strore8 երկուական արժեքների 8 տողերի համար, յուրաքանչյուրը 8 բիթ (8 սյունակ): Նշեք I2C հաղորդակցության հասցեն:

Օղակի գործառույթ ()

Քանի որ մենք պետք է տպագրենք կերպարը, մեզ անհրաժեշտ է բնույթի կոդը իրական ժամանակում: Ամենահարմար մեթոդը կոդի սերիական ուղարկումն է, և Arduino- ն կկարդա սերիական տվյալները և համապատասխանաբար կտպագրի բնույթը: Serանգվածի սերիական ուղարկումը կարող է բուռն աշխատանք լինել, հետևաբար մենք կարող ենք ուղարկել տող բոլոր 8 կոդերով (յուրաքանչյուրը 8 բիթ), որոնք բաժանված են ստորակետներով:

Սերիալային լարերի ընթերցում.

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (տվյալներ); }

Տեքստը կարդալուց հետո մենք պետք է վերծանենք այս տողը և վերադարձնենք երկուական արժեքները: Ինչպես գիտենք, մուտքագրման տողի ձևաչափը միշտ նույնն է լինելու: Մենք կարող ենք այն ծածկագրել ՝ ենթատողեր գտնելու և տողերը փոխելու իրենց տասնորդական համարժեք արժեքներին: Այնուհետև մենք կանցնենք գեներացվող տասնորդական զանգվածը (uint8_t) ՝ բնագիրը մատրիցով տպելու համար:

8 բիթերի տողը փոխակերպում տասնորդականի.

int val (լարային փող.) {int v = 0; համար (int i = 0; i <8; i ++) {if (str == '1') {v = v+հզորություն (2, (7-i)); }} վերադարձ v; }

Տասներորդ համարժեքը էներգիայի ֆունկցիայի միջոցով (pow ()) գնահատելու համար հարկավոր է զբաղվել կրկնակի տիպի արժեքներով, և, հետևաբար, մենք կարող ենք գրել մեր սեփական էներգիայի գործառույթը հետևյալ կերպ.

int հզորություն (int հիմք, int ցուցիչ) {int c = 1; համար (int i = 0; i {c = c*բազա;} վերադարձը c;}

Այժմ, վերջապես, մենք կգրենք ծածկագիրը ՝ նիշը տպելու համար ՝ օգտագործելով 8 տասնորդական արժեքների զանգված (մեկը յուրաքանչյուր տողի համար):

void print_emoji (uint8_t emoji , լարային գույն) {matrix.clear (); if (գույն == "կարմիր") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); ուշացում (500); }

Դուք հեշտությամբ կհասկանաք այս ծածկագիրը, քանի որ մենք նախ մաքրում ենք մատրիցան, այնուհետև ցուցադրում ենք նիշը ՝ օգտագործելով emoji զանգվածը ՝ օգտագործելով matrix.drawBitmap () գործառույթը: Չմոռանաք գրել «matrix.writeDisplay ()» ամբողջ ձևաչափումից հետո, քանի որ այս գործառույթը կցուցադրի միայն մատրիցայի վրա մինչ այժմ կատարված բոլոր ձևաչափերը:

Այժմ դուք կարող եք ուղարկել տողը բոլոր կոդի արժեքներով, և Arduino- ն տպելու է նիշը մատրիցի վրա: Ստորև կարող եք ներբեռնել Arduino ծածկագիրը: Փորձնական նպատակով կարող եք գրել

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

այս տողը Serial Monitor- ում է և կարող է տեսնել մատրիցի բնույթը:

Այժմ, մենք պետք է սերիական տվյալները ավտոմատ կերպով ուղարկենք ծրագրակազմից, երբ սեղմում ենք «Տպել» կոճակը: Դա ավտոմատացնելու համար մենք պատրաստելու ենք ցուցադրական 8x8 մատրիցա և օգտագործողին տրամադրելու ենք հնարավորություն ընտրելու, թե որ բջիջները պետք է գունավորվեն, այնուհետև ծրագրակազմը ինքնաբերաբար կստեղծի ծածկագիրը և տվյալները հաջորդաբար կուղարկի Arduino- ին լարային ձևաչափով: Մնացած աշխատանքների համար ընտրեցի Processing: Մշակման ընթացքում մենք կարող ենք մատրիցա պատրաստել ՝ օգտագործելով 64 կոճակ (սեղմված գործառույթ ունեցող ուղղանկյուններ) և սկզբում կարող ենք նշանակել որոշակի արժեք և գույն (թող լինի սպիտակ գույնը 0 արժեքով): Այժմ, երբ կոճակը սեղմվում է, մենք կոճակի գույնը փոխում ենք սևի և արժեքը կդարձնենք 1: Եթե օգտվողը նորից կտտացնի նույն կոճակը, դրա արժեքը կրկին կփոխվի 0 -ի, իսկ գույնը ՝ կրկին սպիտակ: Սա կօգնի օգտվողին կրկին ու կրկին հեշտությամբ փոխել կոդը և կարող է հեշտությամբ փոփոխություններ կատարել ՝ առանց նորից ջնջելու ամբողջ մատրիցան: «Տպել» կոճակի կտտոցով մենք կկատարենք տող, որը նման է ցուցադրման համար վերևում նշվածին: Այնուհետեւ տողը կուղարկվի կոնկրետ սերիական նավահանգիստ:

Ստորև կարող եք ներբեռնել մշակման կոդը: Սա իմ մշակման առաջին կոդն է: Կոդավորման ընդլայնված եղանակի վերաբերյալ առաջարկությունները բարձր են գնահատվում:

Դուք կարող եք տեսնել, թե ինչ տեսք ունի GUI- ն և ինչպես է կերպարը ստեղծվում համակարգի միջոցով: Հազիվ թե վայրկյաններ կպահանջվեն մատրիցայի վրա նույն կերպարը ստեղծելու համար:

Դուք կարող եք ներբեռնել այս ծրագրի կոդը և պատկերները իմ GitHub պահոցից:

Խորհուրդ ենք տալիս: