LED Etch-a-Sketch (Full Instructable) (4 / 10 steg)
Steg 4: Designa drivrutiner
Här kommer vi att diskutera hur maskinvara hjälper oss att lösa ovanstående problem och vi kommer att diskutera programvara tricken lite senare.
Så vet jag att min LED Etch-a-Sketch kommer att kräva fyra 8 x 8 ledde matriser. Det innebär att jag har 256 lysdioder som måste behandlas individuellt. Det är ganska lite. Så hur vi gör det? Tja först måste vi förstå hur ledde matrisen fungerar. En viss matris jag använde kallas en gemensam katod ledde matrisen. Det kan göra att förstå vad det betyder om jag lägger till lite i namnet. Låt oss kalla det en gemensam katod rad LED. Så nu vet vi att alla katod i varje rad finns på samma rad (se första bilden). Detta ger oss möjlighet att kontrollera en enda ledde genom att helt enkelt leverera en positiv spänning till kolumnen och marken på raden som motsvarar den LED som vi vill ha lit. För exempel om vi vill tända lampan på (4,4) vi skulle gälla marken rad 4 och en positiv spänning till kolumn 4 som sett i den andra bilden. Från detta vet vi att vi behöver så kontrollera alla kolumn rader. Men hur är raderna? Om vi bara bunden alla dessa till marken då skulle vi aldrig kunna ha olika Lysdioder tänds på varje rad. Detta säger oss att vi också måste kontrollera raderna.
Vi tittar på hela 16 x 16 displayen som en 8 x 32 display som är hur det kommer att vara trådbunden upp. Du kan se detta i tredje bilden ovan. För att styra en visning av denna typ kommer vi att kontrollera 32 linjer för kolumner och 8 för raderna. Rad kontroll är inget problem; Vi har åtta stift finns tillgängliga för oss på uC. Det enda att vara oroad över är hur man sänka nuvarande utan att skada uC. Jag ska ta det på en sekund. Men först låt oss räkna ut hur vi ska styra 32 linjer när vi tydligt inte har 32 uC pins tillgängliga.
Tricket är att använda behändiga 74HC595 följetong-i parallell ut 8-bitars skiftregister, eller, som jag hänvisar till det från nu på 595. Denna IC tillåter oss att seriellt skicka en byte av data lagras i registret och sedan när signalerade att data visas parallellt (samtidigt) på utgångsstift. Det möjliggör också för flera 595s till vara kaskadkopplade eller ansluten tillsammans för att acceptera indata större än 8 bitar. Jag kommer inte att skicka tid med att diskutera teorin bakom denna enhet, som det finns många resurser tillgängliga online som gör det. Men på denna punkt är jag säker på att du kan gissa vart vi ska med detta. Om vi kaskad fyra av dessa 595s tillsammans kan vi styra alla 32 kolumn rader med bara några uC stift seriellt.
Låt oss snabbt komma tillbaka till raderna. Som nämnts ovan måste vi vara försiktiga med att skicka alla strömmen genom uC till marken så använder vi en ULN2803 vid varje matris. Detta kommer att tillåta oss att styra rader samtidigt sjunker nuvarande.
Ska vi prata om hur dessa Internet-anslutningsdelning används tillsammans med programvara för att framgångsrikt kontroll den ledde matriser. Men först låt oss få allt trådbunden upp ordentligt.