Indholdsfortegnelse:

Arduino og TM1638 LED Display moduler: 11 trin
Arduino og TM1638 LED Display moduler: 11 trin

Video: Arduino og TM1638 LED Display moduler: 11 trin

Video: Arduino og TM1638 LED Display moduler: 11 trin
Video: TM1638 Display Module with Arduino Mega Pro (#142) 2024, November
Anonim
Arduino og TM1638 LED Display moduler
Arduino og TM1638 LED Display moduler

Hvis du har brug for en hurtig og nem måde at tilføje brugerindgang og output til et projekt, er disse displaymoduler interessante og sjove.

De indeholder otte 7-segmenters røde LED-cifre, otte røde/grønne lysdioder og også otte knapper til brugerindgang. Enhederne kan også være daisy-chainet, hvilket giver mulighed for op til fem på én gang, og der følger et kort kabel med hvert modul samt nogle korte afstandsstykker og bolte, som vist på billedet.

Trin 1:

Billede
Billede

Afstandsstykkerne er lige lange nok til at hæve printet over en overflade, men for at montere brædderne hvor som helst brugbart, ville du have brug for længere. Du vil måske også fjerne IDC -stikkene, hvis du vil montere modulet tæt på overfladen af et panel. Dette ville være en simpel aflodningsopgave, da de er gennemgående huller.

Trin 2:

Billede
Billede

Brættet styres af en TM1638 IC.

Dette er en LED og interface driver IC fra "Titan Micro Electronics". Du kan også købe disse IC'er fra PMD Way. Du kan også downloade databladet for flere detaljer.

Trin 3: Kom godt i gang - Hardware

Kom godt i gang - Hardware
Kom godt i gang - Hardware

Hardware-Tilslutning til et Arduino-kompatibelt kort (eller anden MCU) er ganske enkel. Pinouterne er vist på bagsiden af printkortet og matcher beslaget på båndkablet. Hvis du ser på enden af kablet som sådan.

Det øverste højre hul er pin et, hvor top-venstre er pin to, den nederste højre pin ni og nederste venstre pin ti. Derfor er pinouts:

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

Til Arduino -brug er ben 1 ~ 4 minimum nødvendige for at bruge et modul. Hvert ekstra modul kræver en anden digital pin, der er forbundet til STB2, STB3, osv. Mere om dette senere. Bemærk, at hvert modul indstillet til fuld lysstyrke med hver LED tændt bruger 127mA, så det ville være klogt at bruge ekstern strøm med mere end et modul og andre forbindelser med Arduino -kort.

Trin 4: Kom godt i gang - Software

Software - download og installer T1638 -biblioteket herfra. Tak og ros til rjbatista på gmail dot com for biblioteket. Initialisering af moduler i skitsen er enkel. Inkluder biblioteket med:

#omfatte

brug derefter et af følgende for hvert modul:

TM1638 modul (x, y, z);

x er Arduino digital pin tilsluttet modul kabel pin 4, y er Arduino digital pin tilsluttet modul kabel pin 3, og z er strobe pin. Så hvis du havde et modul med data, ur og strobe forbundet til ben 8, 7 og 6, ville du bruge:

TM1638 modul (8, 7, 6);

Hvis du havde to moduler, hvor modulets strobe var forbundet til Arduino digital 6 og modul tos strobe tilsluttet digital 5, ville du bruge:

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

og så videre for flere moduler. Nu for at styre displayet …

Trin 5: Bi-farve LED'erne

Bi-farve LED'er
Bi-farve LED'er

Det er let at kontrollere de røde/grønne lysdioder. Til reference er de nummereret fra nul til syv fra venstre mod højre. For at tænde eller slukke en enkelt LED skal du bruge følgende:

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

Brug af metoden ovenfor kan være enkel, den er lidt ineffektiv. En bedre måde er at adressere alle lysdioderne i en erklæring. For at gøre dette sender vi to bytes med data i hexadecimal til displayet. MSB (mest signifikante byte) består af otte bits, der hver repræsenterer en grøn LED, der er tændt (1) eller slukket (0). LSB (mindst signifikant byte) repræsenterer de røde lysdioder.

En let måde at bestemme den hexadecimale værdi for at styre lysdioderne er enkel, billede du har en række lysdioder - de første otte er grønne og de anden otte er røde. Indstil hvert ciffer til 1 for on og 0 for off. Konverter de to binære tal til hexadecimal og brug denne funktion:

module.setLED'er (0xgrønne);

Hvor grønt er det hexadecimale tal for de grønne lysdioder og rødt er det hexadecimale tal for de røde lysdioder. For eksempel for at tænde de første tre lysdioder som rødt og de sidste tre som grøn vil den binære repræsentation være:

00000111 11100000 som i hexadecimal er E007.

Så vi ville bruge:

modul.setLED'er (0xE007);

som producerer billedet som vist ovenfor.

Trin 6: 7-segmentet Display

For at slette det numeriske display (men ikke lysdioderne herunder) skal du blot bruge:

module.clearDisplay ();

eller for at tænde hvert segment OG alle lysdioderne, skal du bruge følgende

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

Brug funktionen til at vise decimaltal:

module.setDisplayToDecNumber (a, b, false);

hvor a er heltalet, b er positionen for decimalpunktet (0 for ingen, 1 for ciffer 8, 2, for ciffer 7, 4 for ciffer 6, 8 for ciffer 4 osv.) og den sidste parameter (true/ false) tænder eller deaktiverer førende nuller. Følgende skitse viser brugen af denne funktion:

#include // definer et modul på datapind 8, urpind 9 og strobepind 7 TM1638 -modul (8, 9, 7); usigneret 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 resultaterne vist i videoen.

Trin 7:

Image
Image

En af de mest interessante funktioner er muligheden for at rulle tekst hen over en eller flere skærme. For at gøre det behøver du ikke rigtig en forklaring som den medfølgende demonstrationsskitse:

tm_1638_scrolling_modules_example.pde

inkluderet i TM1638 -biblioteket følges let. Indsæt bare din tekst i const char -strengen , sørg for at modulet / modulerne er kablet i henhold til moduldefinitionen i starten af skitsen, og du er indstillet. Besøg funktionssiden for at se de tilgængelige tegn. Bemærk, at displayet kun er syv segmenter, så nogle tegn ser måske ikke perfekte ud, men i kontekst vil det give dig en god idé-se videoen i dette trin.

Trin 8:

Endelig kan du også individuelt adressere hvert segment af hvert ciffer. Overvej indholdet af denne matrix:

byte værdier = {1, 2, 4, 8, 16, 32, 64, 128};

hvert element repræsenterer cifrene 1 ~ 8. Værdien af hvert element bestemmer, hvilket segment af cifret der tændes. For segmenter a ~ f, dp er værdierne 1, 2, 4, 6, 16, 32, 64, 128. Så resultaterne af at bruge arrayet ovenfor i følgende funktion:

module.setDisplay (værdier);

vil være pr. billede.

Trin 9:

Billede
Billede

Naturligvis kan du kombinere værdier for hvert ciffer for at oprette dine egne tegn, symboler osv. For eksempel ved at bruge følgende værdier:

byte værdier = {99, 99, 99, 99, 99, 99, 99, 99};

vi skabte i henhold til billedet i dette trin.

Trin 10: Knapperne

Knappernes værdier returneres som en byteværdi fra funktionen:

module.getButtons ();

Da der er otte knapper, repræsenterer hver enkelt en bit af et binært tal, der returneres som en byte. Knappen til venstre returnerer en decimal, og den højre returnerer 128. Den kan også returnere samtidige tryk, så tryk på knapperne et og otte returnerer 129. Overvej følgende skitse, der returnerer værdierne for knappetrykkene i decimalform, og derefter viser værdien:

#include // definer et modul på datapind 8, urpind 9 og strobepind 7 TM1638 -modul (8, 9, 7); byte knapper; void setup () {} void loop () {buttons = module.getButtons (); module.setDisplayToDecNumber (knapper, 0, falsk); }

og resultaterne i videoen.

Disse displaybrætter er nyttige og finder forhåbentlig et hjem i dine projekter. Dette indlæg blev bragt til dig af pmdway.com - tilbyder alt til producenter og elektronikentusiaster, med gratis levering over hele verden.

Anbefalede: