Mellanliggande Arduino: Ingångar och utgångar (5 / 9 steg)
Steg 5: Arduino kontrollerade ledde matrisen
Nästa ska vi titta på att använda Arduino för att styra en 8 x 8 ledde matrisen, ett rutnät av 64 lysdioder. 8 x 8 matrisen vi kommer att använda har 16 pin-anslutningar till det: åtta stift Anslut den positiva blytaket av alla lampor i varje kolumn i matrisen och åtta fler pins Anslut marken leder av alla lampor i varje rad i matrisen. Detta ger oss kontroll till adress varje ledde individuellt. Titta på diagrammet i den andra bilden ovan. Bild att alla kolumner är jordad förutom kolumn 8, som är ansluten (genom en strömbegränsande motstånd) till 5V. Ingen bild att alla rader är anslutna till 5V utom rad 1, som är ansluten till marken. Den enda lampan som kommer att lysa upp i det här scenariot ligger i rad 1 och kolumn 1.
Placera ledde matrisen i en skärbräda som visas i den första bilden. Använd en strömbegränsande motstånd att ansluta kolumnerna (se pin nummer i den andra bilden) till 5V och använda en vanlig bygel tråd för att ansluta raderna till marken. Du bör se hela LED-displayen tänds. Nu prova med att koppla rad från marken och ansluta den till 5V istället, varje LED i den raden kommer att stänga av. Prova att ansluta en kolumn till marken, varje LED i kolumnen kommer att stängas av.
Nu koppla bort alla utom en av anslutningarna från rad stiften till marken, så att endast en rad med lysdioder lyser. I stället för att ansluta kolumnerna till 5V, Anslut dem till Arduino (fortfarande sätta de strömbegränsande motstånd i krets). Se tredje bilden för en bättre uppfattning om hur detta ska se ut. Här är hur kolumnerna ska ansluta till Arduino:
kolumn 1 - Arduino A0 (analog stift 0)
kolumn 2 - Arduino A1
kolumn 3 - Arduino A2
kolumn 4 - Arduino A3
kolumn 5 - Arduino A4
kolumn 6 - Arduino A5
kolumn 7 - Arduino D2 (digital pin 2)
kolumn 8 - Arduino D3
Kör följande kod:
void setup() {
ställa in stift A0-A6 som utgångar
för (int pinNum = A0; pinNum < A6; pinNum ++) {
pinMode (pinNum, produktionen);
}
ställa in stift 2 och 3 som utgångar
för (int pinNum = 2; pinNum < 4; pinNum ++) {
pinMode (pinNum, produktionen);
}
}
void loop() {
en godtycklig uppsättning stater
digitalWrite (A0, hög);
digitalWrite (A1, låg);
digitalWrite (A2, hög);
digitalWrite (A3, låg);
digitalWrite (A4, hög);
digitalWrite (A5, låg);
digitalWrite (2, hög).
digitalWrite (3, låg).
}
Det enda som en lite udda om denna kod är att vi använder analog pins som digitala utgångar, är detta tillåtet enligt Arduino. Analoga stift kan fungera som digitala ingångar och utgångar, men de har ytterligare funktioner för att vara analoga ingångar samt. Vi kommer att använda många av de Arduino stift i detta exempel (16 totalt), så jag fick börja med kabeldragning upp några analoga stift. En annan sak, jag lämnade avsiktligt stift 0 och 1 med ingenting kopplad. Arduino använder dessa stift för att kommunicera via USB, och ibland har saker ansluten till stift 0 och 1 hämmar din förmåga att programmera i styrelsen.
Du bör se ett mönster av lysdioder lyser upp i den rad som är ansluten till marken. En LED på, en av, en på en bort... och så vidare. Detta mönster visas i bild #3.
Nu ta bort anslutningen till marken från den LED-matrisen och tråd en annan rad till marken. Du bör se samma mönster på en annan rad (bild #4). I nästa steg kommer vi att använda Arduino att selektivt marken varje rad.
Först prova en sak, ändra mönster av på och av lysdioder, här är vad jag gjorde:
void setup() {
ställa in stift A0-A6 som utgångar
för (int pinNum = A0; pinNum < A6; pinNum ++) {
pinMode (pinNum, produktionen);
}
ställa in stift 2 och 3 som utgångar
för (int pinNum = 2; pinNum < 4; pinNum ++) {
pinMode (pinNum, produktionen);
}
}
void loop() {
en godtycklig uppsättning olika stater
digitalWrite (A0, låg);
digitalWrite (A1, hög);
digitalWrite (A2, låg);
digitalWrite (A3, hög);
digitalWrite (A4, låg);
digitalWrite (A5, hög);
digitalWrite (2, låg).
digitalWrite (3, hög).
}
Resultatet visas i sista bilden ovan.