Innehållsförteckning:

Arduino och TM1638 LED -displaymoduler: 11 steg
Arduino och TM1638 LED -displaymoduler: 11 steg

Video: Arduino och TM1638 LED -displaymoduler: 11 steg

Video: Arduino och TM1638 LED -displaymoduler: 11 steg
Video: PIR sensor Arduino code with 7 segment display. (Language Hindi) 2024, November
Anonim
Arduino och TM1638 LED -displaymoduler
Arduino och TM1638 LED -displaymoduler

Om du behöver ett snabbt och enkelt sätt att lägga till användarinmatning och utdata till ett projekt är dessa visningsmoduler intressanta och roliga.

De innehåller åtta 7-segment röda LED-siffror, åtta röda/gröna lysdioder och även åtta knappar för användarinmatning. Enheterna kan också kopplas ihop med tusensköna, vilket möjliggör upp till fem samtidigt, och en kort kabel medföljer varje modul samt några korta distanser och bultar, som visas på bilden.

Steg 1:

Bild
Bild

Distanserna är precis tillräckligt långa för att lyfta kretskortet ovanför en yta, men för att montera brädorna var som helst användbart skulle du behöva längre sådana. Du kanske också vill ta bort IDC -uttagen om du vill montera modulen nära panelens yta. Detta skulle vara en enkel avlödningsuppgift eftersom de är genomgående hål.

Steg 2:

Bild
Bild

Kortet styrs av en TM1638 IC.

Detta är en LED och gränssnittsdrivrutin IC från "Titan Micro Electronics". Du kan också köpa dessa IC: er från PMD Way. Du kan också ladda ner databladet för mer information.

Steg 3: Komma igång - Hårdvara

Komma igång - hårdvara
Komma igång - hårdvara

Hårdvara-Anslutning till ett Arduino-kompatibelt kort (eller annan MCU) är ganska enkelt. Pinouterna visas på baksidan av kretskortet och matchar kopplingen på bandkabeln. Om du tittar på kabeländen som sådan.

Det övre högra hålet är stift ett, med det övre vänstra är stift två, det nedre högra stiftet nio och det nedre vänstra stiftet tio. Därför är pinouts:

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

För Arduino -användning är stift 1 ~ 4 det minimum som krävs för att använda en modul. Varje ytterligare modul kommer att kräva en annan digital stift ansluten till STB2, STB3, etc. Mer om detta senare. Observera att varje modul som är inställd på full ljusstyrka med varje lysdiod tänd förbrukar 127mA, så det vore klokt att använda extern ström med mer än en modul och andra anslutningar med Arduino -kort.

Steg 4: Komma igång - Programvara

Programvara - ladda ner och installera T1638 -biblioteket härifrån. Tack och kudos till rjbatista på gmail dot com för biblioteket. Att initialisera moduler i skissen är enkelt. Inkludera biblioteket med:

#omfatta

använd sedan något av följande för varje modul:

TM1638 -modul (x, y, z);

x är den Arduino digitala stift som är ansluten till modulens kabelstift 4, y är den Arduino digitala stift som är ansluten till modulens kabelstift 3 och z är strobetappen. Så om du hade en modul med data, klocka och strobe ansluten till stift 8, 7 och 6 skulle du använda:

TM1638 -modul (8, 7, 6);

Om du hade två moduler, med modulens strobe ansluten till Arduino digital 6 och modul tvås strobe ansluten till digital 5, skulle du använda:

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

och så vidare för fler moduler. Nu för att styra displayen …

Steg 5: Bifärgade lysdioder

Bifärgade lysdioder
Bifärgade lysdioder

Det är enkelt att styra de röda/gröna lysdioderna. Som referens är de numrerade noll till sju från vänster till höger. För att slå på eller stänga av en enda lysdiod, använd följande:

module.setLED (TM1638_COLOR_RED, x); // ställ in LED -nummer x till redmodule.setLED (TM1638_COLOR_GREEN, x); // ställ in LED -nummer x till grön modul.setLED (TM1638_COLOR_RED+TM1638_COLOR_GREEN, 0); // ställ LED nummer x till rött och grönt

Att använda metoden ovan kan vara enkel, det är något ineffektivt. Ett bättre sätt är att adressera alla lysdioder i ett uttalande. För att göra detta skickar vi två byte med data i hexadecimal till displayen. MSB (mest signifikanta byte) består av åtta bitar, var och en representerar en grön lysdiod som är på (1) eller av (0). LSB (minst signifikant byte) representerar de röda lysdioderna.

Ett enkelt sätt att bestämma det hexadecimala värdet för att styra lysdioderna är enkelt, bilden du har en rad lysdioder - de första åtta är gröna och de andra åtta är röda. Ställ in varje siffra på 1 för på och 0 för av. Konvertera de två binära talen till hexadecimal och använd den här funktionen:

module.setLED (0xgrön);

Där grönt är hexadecimaltalet för de gröna lysdioderna och rött är hexadecimaltalet för de röda lysdioderna. Till exempel, för att slå på de tre första lysdioderna som röda och de tre sista som gröna, kommer den binära representationen att vara:

00000111 11100000 som i hexadecimal är E007.

Så vi skulle använda:

module.setLEDs (0xE007);

som producerar bilden enligt ovan.

Steg 6: 7-segmentskärmen

För att rensa den numeriska displayen (men inte lysdioderna nedan), använd helt enkelt:

module.clearDisplay ();

eller för att slå på varje segment OCH alla lysdioder, använd följande

module.setupDisplay (true, 7); // där 7 är intensitet (från 0 ~ 7)

Använd funktionen för att visa decimaltal:

module.setDisplayToDecNumber (a, b, false);

där a är heltalet, b är positionen för decimalpunkten (0 för ingen, 1 för siffra 8, 2, för siffra 7, 4 för siffra 6, 8 för siffra 4, etc) och den sista parametern (true/ false) slår på eller av ledande nollor. Följande skiss visar användningen av denna funktion:

#include // definiera en modul på datastift 8, klockstift 9 och strobstift 7 TM1638 -modul (8, 9, 7); osignerad lång a = 1; void setup () {} void loop () {för (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 4, false); fördröjning (1); } för (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 0, true); fördröjning (1); }}

… med resultaten som visas i videon.

Steg 7:

Image
Image

En av de mest intressanta funktionerna är möjligheten att rulla text över en eller flera skärmar. För att göra det behöver du inte riktigt en förklaring eftersom den medföljande demonstrationsskissen:

tm_1638_scrolling_modules_example.pde

som ingår i TM1638 -biblioteket följs enkelt. Sätt bara in din text i const char -strängen , se till att modulen / modulerna är anslutna enligt moduldefinitionen i början av skissen och du är klar. Besök funktionssidan för att se de tillgängliga tecknen. Observera att displayen bara är sju segment, så vissa tecken kanske inte ser perfekta ut, men i sammanhanget kommer du att få en bra idé-se videon i det här steget.

Steg 8:

Slutligen kan du också individuellt adressera varje segment i varje siffra. Tänk på innehållet i den här matrisen:

bytevärden = {1, 2, 4, 8, 16, 32, 64, 128};

varje element representerar siffrorna 1 ~ 8. Värdet på varje element avgör vilket segment av siffran som slås på. För segment a ~ f, dp är värdena 1, 2, 4, 6, 16, 32, 64, 128. Resultaten av att använda arrayen ovan i följande funktion:

module.setDisplay (värden);

kommer att vara enligt bilden.

Steg 9:

Bild
Bild

Naturligtvis kan du kombinera värden för varje siffra för att skapa dina egna tecken, symboler, etc. Till exempel med följande värden:

byte -värden = {99, 99, 99, 99, 99, 99, 99, 99};

vi skapade enligt bilden i detta steg.

Steg 10: Knapparna

Knapparnas värden returneras som ett byte -värde från funktionen:

module.getButtons ();

Eftersom det finns åtta knappar representerar var och en en bit av ett binärt tal som returneras som en byte. Knappen till vänster returnerar en decimal, och den högra returnerar 128. Den kan också returnera samtidiga tryckningar, så att trycka på knapparna ett och åtta returnerar 129. Tänk på följande skiss, som returnerar knapptryckningarnas värden i decimalform och visar sedan värdet:

#include // definiera en modul på datastift 8, klockstift 9 och strobstift 7 TM1638 -modul (8, 9, 7); byte -knappar; void setup () {} void loop () {buttons = module.getButtons (); module.setDisplayToDecNumber (knappar, 0, false); }

och resultaten i videon.

Dessa displayskivor är användbara och hittar förhoppningsvis ett hem i dina projekt. Det här inlägget kommer till dig av pmdway.com - erbjuder allt för tillverkare och elektronikentusiaster, med gratis leverans över hela världen.

Rekommenderad: