Innehållsförteckning:

Använda en Dot Matrix LED med ett Arduino- och skiftregister: 5 steg
Använda en Dot Matrix LED med ett Arduino- och skiftregister: 5 steg

Video: Använda en Dot Matrix LED med ett Arduino- och skiftregister: 5 steg

Video: Använda en Dot Matrix LED med ett Arduino- och skiftregister: 5 steg
Video: Infrared Obstacle Avoidance module for Arduino with code 2024, November
Anonim
Använda en Dot Matrix LED med ett Arduino- och skiftregister
Använda en Dot Matrix LED med ett Arduino- och skiftregister
Använda en Dot Matrix LED med ett Arduino- och skiftregister
Använda en Dot Matrix LED med ett Arduino- och skiftregister
Använda en Dot Matrix LED med ett Arduino- och skiftregister
Använda en Dot Matrix LED med ett Arduino- och skiftregister

Siemens DLO7135 Dot matrix LED är en fantastisk optoelektronik. Det faktureras som en 5x7 Dot Matrix Intelligent Display (r) med minne/dekoder/drivrutin. Tillsammans med det minnet har den en 96-tecken ASCII-skärm med stora och små bokstäver, en inbyggd teckengenerator och multiplexer, fyra nivåer av ljusintensitet, och allt körs på 5V. Det är mycket att leva upp till, och för $ 16 per pop, borde det definitivt. Medan jag tillbringade halva dagen på min favorit lokala elektronikbutik hittade jag en papperskorg full av dessa för 1,50 dollar per styck. Jag lämnade butiken med flera. Denna instruktör visar dig hur du ansluter till dessa punktmatris-lysdioder och displaykaraktärer med en AVR-baserad Arduino. Om du har läst någon av mina tidigare guider kanske du får tanken att jag ofta är för den mest parsimoniska lösningen, och du skulle inte ha fel, även om jag ibland missar målet. Därför kommer jag också att gå ytterligare ett steg i denna instruerbara och visa dig hur du kan minska antalet I/O -portar som behövs för att driva dessa stora, honkin 'dot matrix LED: er.

Steg 1: Skaffa varorna …

Skaffa varorna …
Skaffa varorna …

För det här lilla projektet behöver du:

  • en AVR-baserad mikrokontroller som en Arduino eller något liknande. Dessa instruktioner kan förmodligen anpassas till din valda MCU.
  • en DLO7135 punktmatris -LED eller annat i samma familj
  • ett 8-bitars skiftregister som 74LS164, 74C299 eller 74HC594
  • en brödbräda
  • anslutningstråd, trådskärare etc.

Ett lödkolv behövs inte, även om jag använder ett senare; du klarar dig utan det.

Steg 2: Anslut direkt till LED -skärmen

Anslut direkt till LED -displayen
Anslut direkt till LED -displayen
Anslut direkt till LED -displayen
Anslut direkt till LED -displayen
Anslut direkt till LED -displayen
Anslut direkt till LED -displayen

Lägg upp din lilla lista med delar och ta tag i lysdioden. Placera den på brödbrädan centrerad något, bredvid mittlinjespåret. Den första delen av anslutningen sker på vänster sida av lysdioden. Pin #1 är placerad längst upp till vänster enligt triangeln/pilen. Jag sätter stiftfunktionerna på en bild som referens när du läser eller ansluter din LED.

Vänster sida

Positivt och negativt Från början till vänster ansluter du Vcc till 5V. Det är kanske en bra idé att inte ha ditt bräde drivet förrän du har färdigställt hela vänster sida; lysdioden kan vara ljus om du försöker se små hål att sticka i ledningar. Anslut den nedre vänstra GND till jord. Lamptest, chipaktivering och skrivning 2: a och 3: a uppifrån till vänster är lamptest och chipaktivering. Dessa är båda negativa logik, vilket innebär att de är aktiverade när de är på en logisk 0 istället för 1. Min bild nedan borde ha staplar över dem, men jag kommenterade inte det för någon av dem. LT -pinnen när den är aktiverad lyser upp varje punkt i punktmatrisen vid 1/7: e ljusstyrka. Det är mer ett pixeltest, men det intressanta med LT -stiftet är att det inte skriver över något tecken som finns i minnet, så du om du har flera av dessa ihopträngda (de har ett 20ft visningsavstånd), stryker LT kan få det att se ut som en markör. För att säkerställa att den är inaktiverad, anslut den till 5V. CE- och WR -stiften är också negativa logik och måste vara aktiverade för att den här smarta enheten ska skrivas till. Du kan mikromantera dessa stift med extra I/O -portar på din mikrokontroller, men vi stör oss inte här. Anslut dem bara till marken för att hålla dem aktiverade. Ljusstyrka Det finns fyra programmerbara ljusstyrkenivåer på DLO -familjen:

  • Tom
  • 1/7 Ljusstyrka
  • 1/2 ljusstyrka
  • Full ljusstyrka

BL1 HIGH och BL0 LOW är 1/2 ljusstyrka. Båda HIGH är full ljusstyrka. Ställ in det du vill. Återigen, om du har I/O -portar över och det är tillräckligt viktigt för dig, kan detta också styras av din Arduino. Det omsluter vänster sida. Om du för med ström till ditt kort bör du se lysdioden lysa. Lek med ljusstyrkekontrollerna och lamptestet för att bekanta dig med det, om du är nyfiken.

Den rätta sidan

Höger sida består helt av dataporter. Nedre högra, stift 8 eller D0 för att vara exakt, representerar den minst signifikanta biten i 7-bitars tecknet. Överst till höger, stift 14 eller D6 representerar den mest betydande biten. Detta låter dig veta vilken ordning du ska blanda dina bitar när du skriver till lysdioden. När du har anslutit datainmatningsportarna hittar du sju tomma digitala I/O -portar på din Arduino eller AVR och ansluter dem. Du kommer förmodligen att komma ihåg vilken datautgångsport på din AVR går till vilken dataingångsport på lysdioden. Nu är du redo att trycka in lite data på den smarta lysdioden. Skakar du av spänning än? Jag vet att jag är…

Steg 3: Ange ett tecken som ska visas

Ange ett tecken som ska visas
Ange ett tecken som ska visas

Teckenuppsättningen som används på denna CMOS-LED är din ASCII-körning från 0x20 (decimal 32; ett mellanslag) och slutar med 0x7F (decimal 127; en radering, även om den representeras på lysdioden som en markörgrafik). Så att ha en LED -display innebär inget annat än att trycka på a -logiken 1 eller 0 på dina datautmatningsnålar, vanligtvis följt av en WR -puls, men jag har avstått från det för den här övningen. Så du har skrivit ner eller kom ihåg vilka stift som går till vilka portar, eller hur? Jag valde PD [2..7] och PB0 (digitala stift 2 till 8 i Arduino-speak). Jag föreslår normalt inte att använda PD [0..1] eftersom jag ägnar det åt min seriekommunikation tillbaka till en FreeBSD -låda och Arduinos et al. mappa dessa stift till deras FTDI USB -kommunikationskanal, och även om "de" SÄGER att stift 0 och 1 fungerar om du inte initierar seriell kommunikation, har jag aldrig kunnat använda dessa stift som normal digital I/O. Faktum är att jag tillbringade två dagar med att försöka felsöka ett problem när jag försökte använda PD0 och PD1 och fann att de alltid var HIGH. * axelryckning* Det skulle nog vara bra att ha någon form av extern ingång, till exempel en knappsats, ett knapphjul eller tumhjulsknapp, eller kanske till och med ingång från en terminal (min ArduinoTerm är inte redo för bästa sändningstid än …). Valet är ditt. För tillfället ska jag bara illustrera hur man får koden för att få tecknet du vill ha på lysdioden. Det finns en zip -fil för nedladdning inklusive källkoden och Makefile och det finns också en kort film som visar LED -lampan som skriver ut dess teckenuppsättning. Ursäkta videons skitkvalitet. Koden nedan skriver ut strängen "Welcome to my Instructable!" cyklar sedan genom hela teckenuppsättningen som lysdioden stöder.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Välkommen till min instruktionsbara!"; uint8_t i; för (;;) {för (i = 0; i <27; i ++) {Print2LED (msg ); _fördröjning_ms (150); } för (i = 0x20; i <0x80; i ++) {Print2LED (i); _fördröjning_ms (150); } Print2LED (& apos*& apos);}Portutgången tas om hand i funktionen Print2Led ()

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

Koden och Makefile ingår i en zip -fil nedan.

Steg 4: Spara I/O -portar med ett skiftregister

Spara I/O -portar med ett skiftregister
Spara I/O -portar med ett skiftregister
Spara I/O -portar med ett skiftregister
Spara I/O -portar med ett skiftregister
Spara I/O -portar med ett skiftregister
Spara I/O -portar med ett skiftregister

Så nu kan vår mikrokontroller skicka data till punktmatris -LED men den använder åtta I/O -portar. Det utesluter att använda en ATtiny i ett 8-stifts DIP-paket, och även med en nyare Arduino med en ATmega328p som är många I/O-portar för en LED. Vi kan dock komma runt detta genom att använda en IC som kallas ett skiftregister. Ett ögonblick för att "växla" … Ett skiftregister kan bäst förstås genom att tänka på de två orden som utgör dess namn: "skift" och "register". Ordet skift hänvisar till hur data rör sig genom registret. Här (som i våra Arduino- och mikrokontroller i allmänhet) är ett register en plats som innehåller data. Det gör detta genom att implementera en linjär kedja av digitala logikkretsar som kallas "flip -flops" som har två stabila tillstånd som kan representeras av antingen 1 eller 0. Så genom att sätta ihop åtta flip -flops har du en enhet som kan hålla och som representerar en 8-bitars byte. Precis som det finns flera typer av flip-flops och flera variationer på ett tema för skiftregister (tänk upp/ner-räknare och Johnson-räknare), finns det också flera typer av skiftregister baserat på hur data spärras i registret och hur dessa data matas ut. Baserat på detta, överväga följande typer av skiftregister:

  • Seriell in / parallell utgång (SIPO)
  • Serial In / Serial Out (SISO)
  • Parallell In/ Serial Out (PISO)
  • Parallell In / Parallell Out (PIPO)

Två av noteringarna är SIPO och PISO. SIPO -register tar data seriellt, det vill säga en bit efter den andra, flyttar den tidigare ingångsbiten till nästa flip -flop och skickar ut data på alla ingångar samtidigt. Detta gör en fin seriell till parallellomvandlare. PISO -skiftregister har däremot parallella ingångar, så alla bitar matas in samtidigt, men matas ut en i taget. Och du gissade det, detta ger en trevlig parallell till serieomvandlare. Skiftregistret vi vill använda för att minska antalet I/O -stift skulle göra det möjligt för oss att ta de 8 IO -stiften som vi använde tidigare och minska dem till en, eller kanske bara ett par, med tanke på att vi kan behöva styra hur vi matar in bitarna. Därför är skiftregistret vi använder en Serial In / Parallel Out. Koppla upp skiftregistret mellan lysdioden och Arduino Att använda ett skiftregister är enkelt. Den svåraste delen är bara att visualisera datainmatningstapparna och hur de binära siffrorna kommer att hamna i IC, och hur de så småningom kommer att dyka upp på lysdioden. Ta en stund att planera detta. 1. Fäst 5V på stift 14 (uppe till höger) och ta stift 7 (nedre vänster) ner till marken. Skiftregistret har två seriella ingångar men vi använder bara en, så anslut stift två till 5V3. Vi kommer inte att använda den klara stiftet (används för att nollställa alla utgångar) så låt det flyta eller attackera det till 5V4. Anslut en digital IO -port för att fästa en av skiftregistret. Detta är den seriella ingångsstiften. Anslut en digital IO -port till stift 8 (nere till höger). Detta är klocknålen.6. Anslut dina datalinjer från Q0 till Q6. Vi använder bara 7 bitar eftersom ASCII -teckenuppsättningen bara använder sju bitar. Jag använde PD2 för att mata ut mina seriella data och PD3 för klocksignalen. För datastiften kopplade jag Q0 till D6 på lysdioden och fortsatte på det sättet (Q1 till D5, Q2 till D4, etc). Eftersom vi skickar ut data seriellt måste vi undersöka den binära representationen för varje tecken som vi vill skicka, titta på 1: or och 0: or, och mata ut varje bit på serielinjen. Jag har inkluderat en andra version av dotmatrixled.c -källan tillsammans med en Makefile nedan. Den går igenom teckenuppsättningen och visar alla jämna tecken (om det är konstigt att tänka på att en bokstav kan vara udda eller jämn, tänk på den binära representationen ett ögonblick). Försök att ta reda på hur du gör det genom att visa alla udda tecken. Du kan vidare experimentera med kopplingarna mellan skiftregistret, punktmatris -LED: n och din Arduino. Det finns flera kontrollfunktioner mellan lysdioden och registret som kan låta dig finjustera din kontroll över när data visas. Så…. Vi har gått från att behöva använda åtta I/O-portar till att bara använda två!

Steg 5: Sammanfattning

Sammanfattning
Sammanfattning
Sammanfattning
Sammanfattning

I denna instruerbara har jag presenterat DLO7135 dot matrix LED och hur man får det att fungera. Jag har vidare diskuterat hur man kan minska antalet nödvändiga I/O -portar från åtta till bara två med hjälp av ett skiftregister. DLO7135 -punktmatris -LED: n kan fästas ihop för att göra väldigt iögonfallande och intressanta tält. Jag hoppas att du hade kul att läsa detta instruerbart! Om det finns några förbättringar du tror att jag kan göra eller förslag som du vill ge på detta eller någon av mina ibles, är jag glad att höra dem! Happy AVR'ing!

Rekommenderad: