Innholdsfortegnelse:

Moduler for Arduino og TM1638 LED -skjerm: 11 trinn
Moduler for Arduino og TM1638 LED -skjerm: 11 trinn

Video: Moduler for Arduino og TM1638 LED -skjerm: 11 trinn

Video: Moduler for Arduino og TM1638 LED -skjerm: 11 trinn
Video: Tutorial : TM1638 Led and Key module for arduino 2024, Juli
Anonim
Arduino og TM1638 LED -displaymoduler
Arduino og TM1638 LED -displaymoduler

Hvis du trenger en rask og enkel måte å legge til brukerinngang og utdata til et prosjekt, er disse visningsmodulene interessante og morsomme.

De inneholder åtte 7-segmenters røde LED-sifre, åtte røde/grønne lysdioder og åtte knapper for brukerinngang. Enhetene kan også være daisy-lenket, slik at opptil fem på en gang, og en kort kabel er inkludert i hver modul, samt noen korte avstandsstykker og bolter, som vist på bildet.

Trinn 1:

Bilde
Bilde

Avstandsstykkene er akkurat lange nok til å heve kretskortet over en overflate, men for å montere brettene hvor som helst som er nyttig, trenger du lengre. Det kan også være lurt å fjerne IDC -kontaktene hvis du vil montere modulen nær overflaten på et panel. Dette ville være en enkel avlodingsoppgave ettersom de er gjennomgående hull.

Steg 2:

Bilde
Bilde

Brettet styres av en TM1638 IC.

Dette er en LED og grensesnittdriver IC fra "Titan Micro Electronics". Du kan også kjøpe disse IC -ene fra PMD Way. Du kan også laste ned databladet for mer informasjon.

Trinn 3: Komme i gang - Maskinvare

Komme i gang - Maskinvare
Komme i gang - Maskinvare

Maskinvare-Tilkobling til et Arduino-kompatibelt kort (eller annen MCU) er ganske enkelt. Pinoutene er vist på baksiden av kretskortet, og matcher beslaget på båndkabelen. Hvis du ser på enden av kabelen som sådan.

Det øverste høyre hullet er pinne ett, med topp-venstre er pinne to, nederst til høyre pinne ni og nederst til venstre pinne ti. Derfor er pinoutene:

  1. Vcc (5V)
  2. GND
  3. CLK
  4. DIO
  5. STB1
  6. STB2
  7. STB3
  8. STB4
  9. STB5
  10. ikke tilkoblet.

For Arduino -bruk er pinnene 1 ~ 4 minimum nødvendig for å bruke en modul. Hver tilleggsmodul vil kreve en annen digital pinne koblet til STB2, STB3, etc. Mer om dette senere. Vær oppmerksom på at hver modul satt til full lysstyrke for hver LED på, bruker 127mA, så det ville være lurt å bruke ekstern strøm med mer enn én modul og andre tilkoblinger med Arduino -kort.

Trinn 4: Komme i gang - Programvare

Programvare - last ned og installer T1638 -biblioteket herfra. Takk og ros til rjbatista på gmail dot com for biblioteket. Det er enkelt å initialisere moduler i skissen. Inkluder biblioteket med:

#inkludere

bruk deretter ett av følgende for hver modul:

TM1638 -modul (x, y, z);

x er den digitale Arduino -pinnen som er koblet til modulens kabelpinne 4, y er den digitale Arduino -pinnen som er koblet til modulens kabelpinne 3, og z er strobetappen. Så hvis du hadde en modul med data, klokke og strobe koblet til pinne 8, 7 og 6, ville du brukt:

TM1638 -modul (8, 7, 6);

Hvis du hadde to moduler, med modulens strobe koblet til Arduino digital 6, og modul tos strobe koblet til digital 5, ville du bruke:

TM1638 -modul (8, 7, 6); TM1638 -modul (8, 7, 5);

og så videre for flere moduler. Nå for å kontrollere skjermen …

Trinn 5: Bi-farge lysdioder

Bi-farge lysdioder
Bi-farge lysdioder

Det er enkelt å kontrollere de røde/grønne lysdiodene. Til referanse er de nummerert null til syv fra venstre til høyre. For å slå på eller av en enkelt LED, bruk følgende:

module.setLED (TM1638_COLOR_RED, x); // sett LED -nummer x til redmodule.setLED (TM1638_COLOR_GREEN, x); // sett LED -nummer x til grønn modul.setLED (TM1638_COLOR_RED+TM1638_COLOR_GREEN, 0); // sett LED nummer x til rødt og grønt

Å bruke metoden ovenfor kan være enkel, den er litt ineffektiv. En bedre måte er å adressere alle lysdiodene i en uttalelse. For å gjøre dette sender vi to byte med data i heksadesimal til skjermen. MSB (mest signifikante byte) består av åtte bits, hver representerer en grønn LED som er på (1) eller av (0). LSB (minst signifikant byte) representerer de røde lysdiodene.

En enkel måte å bestemme den heksadesimale verdien for å kontrollere lysdiodene på er enkel, bildet du har en rad med lysdioder - den første åtte er grønn og den andre åtte er rød. Sett hvert siffer til 1 for på og 0 for av. Konverter de to binære tallene til heksadesimale og bruk denne funksjonen:

module.setLEDs (0xgrønn);

Hvor grønt er det heksadesimale tallet for de grønne lysdiodene og rødt er det heksadesimale tallet for de røde lysdiodene. For eksempel, for å slå på de tre første lysdiodene som røde, og de tre siste som grønne, vil den binære representasjonen være:

00000111 11100000 som i heksadesimal er E007.

Så vi vil bruke:

module.setLEDs (0xE007);

som produserer bildet som vist ovenfor.

Trinn 6: 7-segmentet Display

For å slette det numeriske displayet (men ikke lysdiodene nedenfor), bruker du bare:

module.clearDisplay ();

eller for å slå på hvert segment OG alle lysdiodene, bruk følgende

module.setupDisplay (true, 7); // hvor 7 er intensitet (fra 0 ~ 7)

For å vise desimaltall, bruk funksjonen:

module.setDisplayToDecNumber (a, b, false);

hvor a er heltall, b er posisjonen for desimaltegnet (0 for ingen, 1 for siffer 8, 2, for siffer 7, 4 for siffer 6, 8 for siffer 4, etc) og den siste parameteren (true/ false) slår på eller av ledende nuller. Følgende skisse viser bruken av denne funksjonen:

#include // definere en modul på datapinne 8, klokkepinne 9 og stroppinne 7 TM1638 -modul (8, 9, 7); usignert lang a = 1; void setup () {} void loop () {for (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 4, false); forsinkelse (1); } for (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 0, true); forsinkelse (1); }}

… med resultatene vist i videoen.

Trinn 7:

Image
Image

En av de mest interessante funksjonene er muligheten til å rulle tekst over en eller flere skjermer. For å gjøre dette trenger du egentlig ikke en forklaring som den medfølgende demonstrasjonsskissen:

tm_1638_scrolling_modules_example.pde

følger med TM1638 -biblioteket er lett å følge. Bare sett inn teksten din i const char -strengen , sørg for at modulen (e) er koblet i henhold til moduldefinisjonen i begynnelsen av skissen, og du er klar. For å se de tilgjengelige tegnene, gå til funksjonssiden. Vær oppmerksom på at displayet bare er syv segmenter, så noen tegn ser kanskje ikke perfekte ut, men i kontekst vil det gi deg en god idé-se videoen i dette trinnet.

Trinn 8:

Til slutt kan du også individuelt adressere hvert segment av hvert siffer. Vurder innholdet i denne matrisen:

byteverdier = {1, 2, 4, 8, 16, 32, 64, 128};

hvert element representerer sifrene 1 ~ 8. Verdien av hvert element bestemmer hvilket segment av sifferet som slås på. For segmenter a ~ f, dp er verdiene 1, 2, 4, 6, 16, 32, 64, 128. Så resultatene av å bruke matrisen ovenfor i følgende funksjon:

module.setDisplay (verdier);

vil være per bildet.

Trinn 9:

Bilde
Bilde

Naturligvis kan du kombinere verdier for hvert siffer for å lage dine egne tegn, symboler osv. For eksempel ved å bruke følgende verdier:

byteverdier = {99, 99, 99, 99, 99, 99, 99, 99};

vi opprettet i henhold til bildet i dette trinnet.

Trinn 10: Knappene

Verdiene til knappene returneres som en byteverdi fra funksjonen:

module.getButtons ();

Siden det er åtte knapper, representerer hver enkelt en bit av et binært tall som returneres som en byte. Knappen til venstre returnerer desimal en, og høyre returnerer 128. Den kan også returnere samtidige trykk, så trykk på knappene en og åtte returnerer 129. Vurder følgende skisse, som returnerer verdiene til knappetrykkene i desimalform, og viser deretter verdien:

#include // definere en modul på datapinne 8, klokkepinne 9 og stroppinne 7 TM1638 -modul (8, 9, 7); byte knapper; void setup () {} void loop () {buttons = module.getButtons (); module.setDisplayToDecNumber (knapper, 0, usanne); }

og resultatene i videoen.

Disse skjermtavlene er nyttige og finner forhåpentligvis et hjem i prosjektene dine. Dette innlegget ble brakt til deg av pmdway.com - og tilbyr alt for produsenter og elektronikkentusiaster, med gratis levering over hele verden.

Anbefalt: