Inhoudsopgave:

Arduino en TM1638 LED-displaymodules - Ajarnpa
Arduino en TM1638 LED-displaymodules - Ajarnpa

Video: Arduino en TM1638 LED-displaymodules - Ajarnpa

Video: Arduino en TM1638 LED-displaymodules - Ajarnpa
Video: Tutorial : TM1638 Led and Key module for arduino 2024, Juli-
Anonim
Arduino en TM1638 LED-displaymodules
Arduino en TM1638 LED-displaymodules

Als je een snelle en gemakkelijke manier nodig hebt om wat gebruikersinvoer en -uitvoer aan een project toe te voegen, zijn deze weergavemodules interessant en leuk.

Ze bevatten acht 7-segments rode LED-cijfers, acht rood/groene LED's en ook acht knoppen voor gebruikersinvoer. De units kunnen ook in serie worden geschakeld, zodat er maximaal vijf tegelijk kunnen worden gebruikt, en bij elke module wordt een korte kabel meegeleverd, evenals enkele korte afstandhouders en bouten, zoals weergegeven in de afbeelding.

Stap 1:

Afbeelding
Afbeelding

De afstandhouders zijn net lang genoeg om de printplaat boven een oppervlak te brengen, maar om de printplaten overal te monteren waar u maar wilt, heeft u langere nodig. U kunt ook de IDC-sockets verwijderen als u de module dicht bij het oppervlak van een paneel wilt monteren. Dit zou een eenvoudige desoldeertaak zijn, omdat het doorlopende sockets zijn.

Stap 2:

Afbeelding
Afbeelding

Het bord wordt aangestuurd door een TM1638 IC.

Dit is een LED en interface driver IC van "Titan Micro Electronics". U kunt deze IC's ook kopen bij PMD Way. U kunt ook de datasheet downloaden voor meer details.

Stap 3: Aan de slag - Hardware

Aan de slag - Hardware
Aan de slag - Hardware

Hardware - Aansluiting op een Arduino-compatibel bord (of andere MCU) is vrij eenvoudig. De pinouts staan op de achterkant van de print en komen overeen met de fitting op de lintkabel. Als je het uiteinde van de kabel als zodanig bekijkt.

Het gat rechtsboven is pin één, linksboven pin twee, pin rechtsonder negen en pin linksonder tien. Daarom zijn de pinouts:

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

Voor Arduino-gebruik zijn pinnen 1 ~ 4 het minimum dat nodig is om één module te gebruiken. Elke extra module heeft een andere digitale pin nodig die is aangesloten op STB2, STB3, enz. Hierover later meer. Houd er rekening mee dat elke module die op volledige helderheid is ingesteld met elke LED aan 127mA verbruikt, dus het zou verstandig zijn om externe voeding te gebruiken met meer dan één module en andere verbindingen met Arduino-kaarten.

Stap 4: Aan de slag - Software

Software - download en installeer de T1638-bibliotheek vanaf hier. Bedankt en een pluim voor rjbatista op gmail dot com voor de bibliotheek. Het initialiseren van modules in de schets is eenvoudig. Voeg de bibliotheek toe met:

#erbij betrekken

gebruik dan een van de volgende voor elke module:

TM1638-module (x, y, z);

x is de Arduino digitale pin aangesloten op de module kabel pin 4, y is de Arduino digitale pin aangesloten op de module kabel pin 3, en z is de stroboscoop pin. Dus als je één module had met data, klok en stroboscoop aangesloten op pinnen 8, 7 en 6, zou je gebruiken:

TM1638-module (8, 7, 6);

Als u twee modules had, met de flitser van module één aangesloten op Arduino digital 6 en de flitser van module twee aangesloten op digitale 5, zou u het volgende gebruiken:

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

enzovoort voor meer modules. Nu het display bedienen…

Stap 5: De tweekleurige LED's

De tweekleurige LED's
De tweekleurige LED's

Het bedienen van de rood/groene LED's is eenvoudig. Ter referentie zijn ze van links naar rechts genummerd van nul tot zeven. Gebruik het volgende om een enkele LED in of uit te schakelen:

module.setLED(TM1638_COLOR_RED, x); // stel LED-nummer x in op redmodule.setLED (TM1638_COLOR_GREEN, x); // stel LED-nummer x in op groene module.setLED (TM1638_COLOR_RED+TM1638_COLOR_GREEN, 0); // stel LED-nummer x in op rood en groen

Het gebruik van de bovenstaande methode kan eenvoudig zijn, het is enigszins inefficiënt. Een betere manier is om alle LED's in één verklaring aan te pakken. Om dit te doen, sturen we twee bytes aan gegevens in hexadecimaal naar het display. De MSB (meest significante byte) bestaat uit acht bits, die elk een groene LED vertegenwoordigen die aan (1) of uit (0) is. De LSB (minst significante byte) vertegenwoordigt de rode LED's.

Een gemakkelijke manier om de hexadecimale waarde te bepalen om de LED's aan te sturen, is eenvoudig, je hebt een rij LED's - de eerste acht zijn groen en de tweede acht zijn rood. Stel elk cijfer in op 1 voor aan en 0 voor uit. Zet de twee binaire getallen om naar hexadecimaal en gebruik deze functie:

module.setLED's (0xgroenrood);

Waar groen het hexadecimale getal is voor de groene LED's en rood het hexadecimale nummer is voor de rode LED's. Als u bijvoorbeeld de eerste drie LED's als rood en de laatste drie als groen wilt inschakelen, is de binaire weergave:

00000111 11100000 wat in hexadecimaal E007 is.

Dus we zouden gebruiken:

module.setLEDs(0xE007);

die de afbeelding produceert zoals hierboven weergegeven.

Stap 6: Het 7-segments display

Om het numerieke display te wissen (maar niet de onderstaande LED's), gebruikt u eenvoudig:

module.clearDisplay();

of om elk segment EN alle LED's in te schakelen, gebruikt u het volgende:

module.setupDisplay(true, 7); // waarbij 7 intensiteit is (van 0 ~ 7)

Gebruik de functie om decimale getallen weer te geven:

module.setDisplayToDecNumber(a, b, false);

waarbij a het gehele getal is, b de positie voor de komma (0 voor geen, 1 voor cijfer 8, 2, voor cijfer 7, 4 voor cijfer 6, 8 voor cijfer 4, enz.), en de laatste parameter (true/ false) schakelt voorloopnullen in of uit. De volgende schets laat het gebruik van deze functie zien:

#include // definieer een module op datapin 8, klokpin 9 en stroboscooppin 7 TM1638-module (8, 9, 7); niet-ondertekend lang a=1; void setup(){} void loop() { for (a=10000; a<11000; a++) { module.setDisplayToDecNumber(a, 4, false); vertraging(1); } for (a=10000; a<11000; a++) { module.setDisplayToDecNumber(a, 0, true); vertraging(1); } }

… met de resultaten die in de video worden getoond.

Stap 7:

Image
Image

Een van de meest interessante functies is de mogelijkheid om tekst over een of meer schermen te scrollen. Om dit te doen is niet echt een uitleg nodig, zoals de meegeleverde demonstratieschets:

tm_1638_scrolling_modules_example.pde

meegeleverd met de TM1638-bibliotheek is gemakkelijk te volgen. Voeg gewoon uw tekst in de const char string , zorg ervoor dat de module(s) bedraad zijn volgens de moduledefinitie aan het begin van de schets en u bent klaar. Ga naar de functiepagina om de beschikbare tekens te zien. Houd er rekening mee dat het scherm slechts uit zeven segmenten bestaat, dus sommige tekens zien er misschien niet perfect uit, maar in de context krijgt u een goed idee - zie de video in deze stap.

Stap 8:

Ten slotte kunt u ook elk segment van elk cijfer afzonderlijk adresseren. Overweeg de inhoud van deze array:

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

elk element vertegenwoordigt cijfers 1~8. De waarde van elk element bepaalt welk segment van het cijfer wordt ingeschakeld. Voor segmenten a~f, dp zijn de waarden 1, 2, 4, 6, 16, 32, 64, 128. Dus de resultaten van het gebruik van de bovenstaande array in de volgende functie:

module.setDisplay (waarden);

zal zijn volgens de afbeelding.

Stap 9:

Afbeelding
Afbeelding

Uiteraard kunt u voor elk cijfer waarden combineren om uw eigen tekens, symbolen, enzovoort te maken. Gebruik bijvoorbeeld de volgende waarden:

bytewaarden = { 99, 99, 99, 99, 99, 99, 99, 99 };

we hebben gemaakt volgens de afbeelding in deze stap.

Stap 10: De knoppen

De waarden van de knoppen worden geretourneerd als een bytewaarde van de functie:

module.getButtons();

Omdat er acht knoppen zijn, vertegenwoordigt elk een bit van een binair getal dat wordt geretourneerd als een byte. De knop aan de linkerkant retourneert decimaal één, en de rechter retourneert 128. Het kan ook gelijktijdig drukken retourneren, dus het indrukken van de knoppen één en acht levert 129 op. Bekijk de volgende schets, die de waarden van de knopdrukken in decimale vorm retourneert, en toont dan de waarde:

#include // definieer een module op datapin 8, klokpin 9 en stroboscooppin 7 TM1638-module (8, 9, 7); byte-knoppen; void setup(){} void loop() { buttons=module.getButtons(); module.setDisplayToDecNumber(knoppen, 0, false); }

en de resultaten in de video.

Deze displayborden zijn nuttig en vinden hopelijk een thuis in uw projecten. Dit bericht aangeboden door pmdway.com - biedt alles voor makers en elektronica-enthousiastelingen, met gratis levering wereldwijd.

Aanbevolen: