Stap 5: Arduino gecontroleerde LED Matrix
Vervolgens zullen we kijken met behulp van de Arduino te controleren van een 8 x 8 LED matrix, een raster van 64 LEDs. De 8 x 8 matrix we gebruiken heeft 16 pins verbindingen: acht pinnen sluit de positieve leads voor alle de LEDs in elke kolom van de matrix, en acht meer pinnen sluit de grond leads voor alle de LEDs in elke rij van de matrix. Dit geeft ons controle naar adres elk individueel geleid. Kijk naar het diagram in de tweede afbeelding hierboven. Beeld dat alle kolommen behalve kolom 8, zijn geaard en die is verbonden (via een huidige beperkende weerstand) 5V. Geen beeld of alle rijen zijn aangesloten op de 5V behalve rij 1, die is aangesloten op de grond. De enige LED die in dit scenario oplichten zal bevindt zich in rij 1 en kolom 1.
De LED-matrix in een breadboard plaatsen, zoals weergegeven in de eerste afbeelding. Gebruik een huidige beperkende weerstand om de kolommen (Zie pin nummering in het tweede beeld) verbinden met 5V en een regelmatige trui draad de rijen verbinden met grond. U ziet de hele LED-scherm oplichten. Nu proberen los te koppelen van een rij van grond en het te verbinden met 5V in plaats daarvan, elke LED in die rij zal uitzetten. Probeer een verbinding van een kolom met grond, elke LED in die kolom zal uitzetten.
Haal nu alle, maar een van de verbindingen van de rij pins op grond, dus slechts één rij van LED's wordt verlicht. In plaats van de kolommen verbinden met 5V, sluit u ze aan de Arduino (nog steeds de huidige beperkende weerstanden in het circuit gezet). Het derde beeld voor een beter idee van hoe dit eruit zou moeten zien. Hier is hoe de kolommen moeten verbinding maken met de Arduino:
kolom 1 - Arduino A0 (analoge pin 0)
kolom 2 - Arduino A1
kolom 3 - Arduino A2
kolom 4 - Arduino A3
kolom 5 - Arduino A4
kolom 6 - Arduino A5
kolom 7 - Arduino D2 (digitale pin 2)
kolom 8 - Arduino D3
Voer de volgende code:
void setup(){ //set pins A0-A6 as outputs for (int pinNum=A0;pinNum<A6;pinNum++){ pinMode(pinNum, OUTPUT); } //set pins 2 and 3 as outputs for (int pinNum=2;pinNum<4;pinNum++){ pinMode(pinNum, OUTPUT); } } void loop(){ //some arbitrary set of states digitalWrite(A0, HIGH); digitalWrite(A1, LOW); digitalWrite(A2, HIGH); digitalWrite(A3, LOW); digitalWrite(A4, HIGH); digitalWrite(A5, LOW); digitalWrite(2, HIGH); digitalWrite(3, LOW); }
Het enige wat een beetje vreemd over deze code is dat we analoge pinnen als digitale uitgangen gebruiken, is dit toegestaan door de Arduino. Analoge pinnen kunnen fungeren als digitale inputs en outputs, maar ze hebben de toegevoegde functionaliteit van analoge ingangen ook wordt. We zullen gebruiken veel van de de Arduino pinnen in dit voorbeeld (16 totaal), dus ik moest beginnen met bedrading van enkele van de analoge pinnen. Een ander ding, ik met opzet liet pennen 0 en 1 met niets verbonden aan hen. De Arduino gebruikt deze pinnen om te communiceren via USB, en uw vermogen om te programmeren van de Raad van bestuur remt soms hebben dingen aangesloten op pinnen 0 en 1.
U ziet een patroon van LEDs oplichten in de rij die is aangesloten op de grond. Één LED op, eenmalige, één op één af... en zo verder. Dit patroon is weergegeven in afbeelding #3.
Nu de verbinding op grond te verwijderen uit de matrix LED, en draad van een andere rij op grond. Je ziet hetzelfde patroon in een andere rij (afbeelding #4). We zullen in de volgende stap de Arduino gebruiken om selectief grond elke rij.
Probeer eerst nog een ding, het patroon van op wijzigen en off LEDs, hier is wat ik deed:
void setup(){ //set pins A0-A6 as outputs for (int pinNum=A0;pinNum<A6;pinNum++){ pinMode(pinNum, OUTPUT); } //set pins 2 and 3 as outputs for (int pinNum=2;pinNum<4;pinNum++){ pinMode(pinNum, OUTPUT); } } void loop(){ //some arbitrary set of different states digitalWrite(A0, LOW); digitalWrite(A1, HIGH); digitalWrite(A2, LOW); digitalWrite(A3, HIGH); digitalWrite(A4, LOW); digitalWrite(A5, HIGH); digitalWrite(2, LOW); digitalWrite(3, HIGH); }
De uitvoer wordt weergegeven in het laatste beeld hierboven.