Indholdsfortegnelse:

Brug af en Dot Matrix LED med et Arduino- og skiftregister: 5 trin
Brug af en Dot Matrix LED med et Arduino- og skiftregister: 5 trin

Video: Brug af en Dot Matrix LED med et Arduino- og skiftregister: 5 trin

Video: Brug af en Dot Matrix LED med et Arduino- og skiftregister: 5 trin
Video: Arduino code for VL53L1X Time-of-Flight 400cm Laser distance sensor 2024, November
Anonim
Brug af en Dot Matrix LED med et Arduino- og skiftregister
Brug af en Dot Matrix LED med et Arduino- og skiftregister
Brug af en Dot Matrix LED med et Arduino- og skiftregister
Brug af en Dot Matrix LED med et Arduino- og skiftregister
Brug af en Dot Matrix LED med et Arduino- og skiftregister
Brug af en Dot Matrix LED med et Arduino- og skiftregister

Siemens DLO7135 Dot matrix LED er et fantastisk stykke optoelektronik. Det faktureres som en 5x7 Dot Matrix Intelligent Display (r) med hukommelse/dekoder/driver. Sammen med hukommelsen har den et ASCII-skærm på 96 tegn med store og små bogstaver, en indbygget tegngenerator og multiplexer, fire lysintensitetsniveauer, og det hele kører på 5V. Det er meget at leve op til, og til $ 16 en pop, burde det helt sikkert. Mens jeg tilbragte halvdelen af dagen i min foretrukne lokale elektronikbutik, fandt jeg en skraldespand fuld af disse til $ 1,50 pr. Stykke. Jeg forlod butikken med flere. Denne instruktør viser dig, hvordan du opretter forbindelse til disse prikmatrix-LED'er og displaytegn ved hjælp af en AVR-baseret Arduino. Hvis du har læst nogen af mine tidligere guider, får du måske den opfattelse, at jeg ofte går ind for den mest parsimoniøse løsning, og du tager ikke fejl, selvom jeg fra tid til anden mangler mål. Derfor vil jeg også gå endnu et trin i denne instruktive og vise dig, hvordan du kan reducere antallet af I/O -porte, der er nødvendige for at drive disse store, honkin 'dot matrix LED'er.

Trin 1: Få varerne …

Få varerne…
Få varerne…

Til dette korte lille projekt skal du bruge:

  • en AVR-baseret mikrokontroller som en Arduino eller noget lignende. Disse instruktioner kan sandsynligvis tilpasses din MCU efter eget valg.
  • en DLO7135 dot matrix LED eller andet i samme familie
  • et 8-bit skiftregister som 74LS164, 74C299 eller 74HC594
  • et brødbræt
  • tilslutningstråd, trådskærere osv.

Et loddejern er ikke nødvendigt, selvom jeg bruger et senere; du kan klare dig uden det.

Trin 2: Tilslut direkte til LED -displayet

Tilslut direkte til LED -displayet
Tilslut direkte til LED -displayet
Tilslut direkte til LED -displayet
Tilslut direkte til LED -displayet
Tilslut direkte til LED -displayet
Tilslut direkte til LED -displayet

Lav din lille liste med dele, og tag fat i LED'en. Placer det på brødbrættet centreret noget, grænser op til midterlinjesporet. Den første del af tilslutningen finder sted på venstre side af LED'en. Pin #1 er placeret øverst til venstre som angivet med trekanten/pilen. Jeg satte pin -funktionerne på et billede til din reference, mens du læser eller tilslutter din LED.

Venstre side

Positiv og negativ Start fra øverst til venstre, tilslut Vcc til 5V. Det er måske en god idé ikke at have tavlen drevet, før du får hele venstre side færdiggjort; LED'en kan være lys, hvis du prøver at se små huller til at stikke i ledninger. Tilslut den nederste venstre GND til jorden. Lampetest, chipaktivering og skrivning 2. og 3. fra toppen til venstre er Lampetest og chipaktivering. Disse er begge negative logik, hvilket betyder, at de er aktiveret, når de er på en logisk 0 i stedet for 1. Mit billede herunder skulle have søjler over dem, men jeg kommenterede det ikke for nogen af dem. LT -stiften, når den er aktiveret, lyser hver prik i punktmatricen ved 1/7 lysstyrke. Det er mere en pixeltest, men det interessante ved LT -stiften er, at det ikke overskriver noget tegn, der er i hukommelsen, så du hvis du har flere af disse spændt sammen (de har en 20ft visningsafstand), stryger LT kan få det til at ligne en markør. For at sikre, at den er deaktiveret, skal du slutte den til 5V. CE- og WR -benene er også negative logik og skal aktiveres, for at denne smarte enhed kan skrives til. Du kan mikromanere disse pins med ekstra I/O -porte på din mikrokontroller, men vi gider ikke her. Bare tilslut dem til jorden for at holde dem aktiverede. Lysstyrkeniveauer Der er fire programmerbare lysstyrkeniveauer på DLO -familien af LED'er:

  • Blank
  • 1/7 Lysstyrke
  • 1/2 lysstyrke
  • Fuld lysstyrke

BL1 HIGH og BL0 LOW er 1/2 lysstyrke. Begge HIGH er fuld lysstyrke. Indstil det til det, du kan lide. Igen, hvis du har I/O -porte til overs, og det er vigtigt nok for dig, kan dette også styres af din Arduino. Det omslutter venstre side. Hvis du bringer strøm til dit bord, skal du se LED'en lyse. Spil med lysstyrkekontrollerne og lampetesten for at blive fortrolig med det, hvis du er nysgerrig.

Den højre side

Højre side består helt af dataporte. Nederst til højre, pin 8 eller D0 for at være præcis, repræsenterer den mindst betydende bit i 7-bit-tegnet. Øverst til højre, pin 14 eller D6 repræsenterer den mest betydningsfulde bit. Dette lader dig vide, hvilken rækkefølge du skal blande dine bits, når du skriver til LED'en. Når du har tilsluttet dataindgangsportene, skal du finde syv tomme digitale I/O -porte på din Arduino eller AVR og tilslutte dem. Du vil sandsynligvis gerne huske, hvilken dataudgangsport på din AVR går til hvilken dataindgangsport på LED'en. Nu er du klar til at skubbe nogle data ind på den smarte LED. Skælver du endnu af spænding? Jeg ved jeg er…

Trin 3: Angivelse af en karakter, der skal vises

Angivelse af en karakter, der skal vises
Angivelse af en karakter, der skal vises

Tegnsættet, der bruges på denne CMOS-LED, er din run-of-the-mill ASCII, der starter ved 0x20 (decimal 32; et mellemrum) og slutter ved 0x7F (decimal 127; en slet, selvom den er repræsenteret på LED'en som en markørgrafik). Så at have LED -displayet med et tegn indebærer intet mere end at skubbe a logik 1 eller 0 på dine data output pins, normalt efterfulgt af en WR puls, men jeg går forud for det for denne øvelse. Så du har skrevet ned eller huskede hvilke pins gå til hvilke havne, ikke? Jeg valgte PD [2..7] og PB0 (digitale ben 2 til 8 i Arduino-speak). Jeg foreslår normalt ikke at bruge PD [0..1], fordi jeg dedikerer det til min serielle kommunikation tilbage til en FreeBSD -boks, og Arduinos et al. kort disse stifter til deres FTDI USB -kommunikationskanal, og selvom "de" siger, at ben 0 og 1 fungerer, hvis du ikke initialiserer seriel kommunikation, har jeg aldrig været i stand til at bruge disse ben som normal digital I/O. Faktisk brugte jeg to dage på at forsøge at fejlsøge et problem, da jeg forsøgte at bruge PD0 og PD1 og fandt ud af, at de altid var HØJ. * skuldertræk* Det ville sandsynligvis være godt at have en slags ekstern input, f.eks. et tastatur, et skubhjul eller et tommelfingerkontakt eller måske endda input fra en terminal (min ArduinoTerm er ikke klar til prime time endnu …). Det er dit valg. For nu vil jeg bare illustrere, hvordan du får koden til at få det tegn, du ønsker, ind på LED'en. Der er en zip -fil til download inklusive kildekoden og Makefile, og der er også en kort film, der viser LED'en, der udskriver sit tegnsæt. Beklager den dårlige kvalitet af videoen. Koden herunder udskriver strengen "Welcome to my Instructable!" cykler derefter gennem hele tegnsættet, som LED'en understøtter.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Velkommen til min Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _forsinkelse_ms (150); } for (i = 0x20; i <0x80; i ++) {Print2LED (i); _forsinkelse_ms (150); } Print2LED (& apos*& apos);}Portudgangen sørges for i funktionen Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); hvis (i & 0b01000000) PORTB = (1 <

Koden og Makefile er inkluderet i en zip -fil herunder.

Trin 4: Spar I/O -porte med et skiftregister

Spar I/O -porte med et skiftregister
Spar I/O -porte med et skiftregister
Spar I/O -porte med et skiftregister
Spar I/O -porte med et skiftregister
Spar I/O -porte med et skiftregister
Spar I/O -porte med et skiftregister

Så nu kan vores mikrokontroller sende data til punktmatrix -LED'en, men den bruger otte I/O -porte. Det udelukker at bruge en ATtiny i en 8-benet DIP-pakke, og selv med en nyere Arduino med en ATmega328p, der er mange I/O-porte til en LED. Vi kan dog komme uden om dette ved at bruge en IC kaldet et skiftregister. Et øjeblik til at "skifte" gear … Et skiftregister kan bedst forstås ved at tænke på de to ord, der udgør dets navn: "skift" og "register". Ordskiftet refererer til, hvordan dataene bevæger sig gennem registret. Her (som i vores Arduino og mikrokontrollere generelt) er et register et sted, der gemmer data. Det gør det ved at implementere en lineær kæde af digitale logikkredsløb kaldet "flip -flops", der har to stabile tilstande, der kan repræsenteres med enten 1 eller 0. Så ved at sætte otte flip -flops sammen har du en enhed, der er i stand til at holde og repræsenterer en 8-bit byte. Ligesom der er flere typer flip-flops og flere variationer på et tema for skiftregistre (tænk op/ned-tællere og Johnson-tællere), er der også flere typer skiftregistre baseret på, hvordan data er låst i registret, og hvordan disse data udsendes. På baggrund af dette skal du overveje følgende typer skiftregistre:

  • Seriel ind / parallel udgang (SIPO)
  • Serial In / Serial Out (SISO)
  • Parallel ind/ seriel ud (PISO)
  • Parallel ind / parallel ud (PIPO)

To af noterne er SIPO og PISO. SIPO -registre tager data serielt, det vil sige den ene bit efter den anden, skifter den tidligere inputbit over til den næste flip -flop og sender dataene ud på alle input på én gang. Dette gør en flot seriel til parallel konverter. PISO -skiftregistre har omvendt parallelle input, så alle bits indtastes på én gang, men udsendes en ad gangen. Og du gættede det, det giver en dejlig parallel til seriel konverter. Skiftregistret, vi vil bruge til at reducere antallet af I/O -ben, ville give os mulighed for at tage de 8 IO -ben, vi brugte tidligere og reducere dem til en, eller måske bare et par, i betragtning af at vi muligvis skal kontrollere, hvordan vi indtaster bitene. Derfor er det skiftregister, vi vil bruge, en Serial In / Parallel Out. Forbind skiftregistret mellem LED'en og Arduino Det er let at bruge et skiftregister. Den sværeste del er bare at visualisere data output pins og hvordan de binære cifre ender i IC, og hvordan de til sidst vil vise sig på LED'en. Tag et øjeblik til at planlægge dette. 1. Fastgør 5V til pin 14 (øverst til højre) og tag pin 7 (nederst til venstre) ned til jorden. Skiftregistret har to serielle indgange, men vi bruger kun en, så tilslut pin to til 5V3. Vi bruger ikke den klare pin (bruges til at nulstille alle output), så lad den flyde eller angribe den til 5V4. Tilslut en digital IO -port for at fastgøre en af skiftregistret. Dette er den serielle input -pin. Tilslut en digital IO -port til pin 8 (nederst til højre). Dette er urets pin.6. Tilslut dine datalinjer fra Q0 til Q6. Vi bruger kun 7 bits, fordi ASCII -tegnsættet kun bruger syv bits. Jeg brugte PD2 til at sende mine serielle data og PD3 til urets signal. For datastifterne tilsluttede jeg Q0 til D6 på LED'en og fortsatte på den måde (Q1 til D5, Q2 til D4 osv.). Da vi sender data serielt ud, bliver vi nødt til at undersøge den binære repræsentation af hvert tegn, vi vil sende, se på 1'er og 0'er og udsende hver bit på den serielle linje. Jeg har inkluderet en anden version af dotmatrixled.c -kilden sammen med en Makefile herunder. Det går gennem tegnsættet og viser alle lige tegn (hvis det er underligt at tænke på, at et bogstav kan være ulige eller lige, tænk på den binære repræsentation et øjeblik). Prøv at finde ud af, hvordan du får det til at cykle gennem visning af alle ulige tegn. Du kan yderligere eksperimentere med forbindelserne mellem skiftregistret, punktmatrix -LED'en og din Arduino. Der er flere kontrolfunktioner mellem lysdioden og registret, der kan give dig mulighed for at finjustere din kontrol om, hvornår data vises. Så…. Vi er gået fra at skulle bruge otte I/O-porte til kun at bruge to!

Trin 5: Resumé

Resumé
Resumé
Resumé
Resumé

I denne instruktive har jeg præsenteret DLO7135 dot matrix LED og hvordan man får det til at fungere. Jeg har yderligere diskuteret, hvordan man reducerer antallet af nødvendige I/O -porte fra otte til kun to ved hjælp af et skiftregister. DLO7135 dot matrix LED kan spændes sammen for at gøre meget iøjnefaldende og interessante markiser. Jeg håber, at du havde det sjovt at læse dette instruerbare! Hvis der er nogen forbedringer, du tror, jeg kunne komme med eller forslag, du gerne vil give om dette eller nogen af mine 'ibles, er jeg glad for at høre dem! Glad AVR'ing!

Anbefalede: