Stap 9: Veranderen van de code
Dit is mijn versie van het optimaliseren van wat ik heb gedaan. Er zijn waarschijnlijk betere manieren om het te doen, maar dit werkt voor mij en laat mij om te schrijven snel nieuwe effecten.In de vorige code liep ik code om te zetten op elke rij en kolom één tegelijk. Dit is prima voor een snelle test en geeft beginners de werking van de arduino. Maar als je meer complexe dan zijn niet zeer efficiënt en de grootte van het programma zal zijn te groot om te passen op een arduino.
Om het gemakkelijker te gebruiken en uit te breiden zullen later we enkele nieuwe functies maken.
De eerste functie wordt resetLEDS() genoemd wanneer dit heet dan alle LEDS tegelijk dooft. Dit is hetzelfde als de setup routine, maar we hebben niet alleen te installeren van de pinnen als uitgang. Dit for-lus gewoon doorlopen van de arrays en alle LEDS uitgeschakeld.
ongeldig resetLEDS() {}
voor (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (col [thisPin], laag); Uitschakelen van LEDs
digitalWrite (rij [thisPin], hoge);
}
De volgende functie die we zullen creëren is inschakelen van een enkele LED. Het zal wachten op een bepaald moment en vervolgens uitgeschakeld eerste moeten we een nieuwe variabele boven de definities van de array toevoegen. Voeg de volgende regel
int delayPin 1; Dit vertraagt de code, voordat hij de led uitgeschakeld wordt
Dan we twee nieuwe functies voegen
ongeldig resetLEDS() {}
voor (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (rij [thisPin], hoge);
digitalWrite (col [thisPin], laag);
}
}
VOID onLED (int kolnum, int rownum) {}
digitalWrite (col [kolnum], hoge);
digitalWrite (rij [rownum], laag);
delay(delaypin);
digitalWrite (col [kolnum], laag);
digitalWrite (rij [rownum], hoge);
}
De eerste functie gewoon doorloopt elke LED en hen allemaal uitgeschakeld
De tweede functie werkt door middel van een col en rij nummer dat wordt doorgegeven aan het door de belangrijkste programma-code. De code wordt de vereiste kolom (anode) te hoog en de vereiste rij (kathode) naar laag die een bijzondere LED licht. Een vertraging wordt vervolgens aangeroepen en vervolgens de LED is uitgeschakeld door het omkeren van de bovengenoemde Staten.
Met deze functie kunnen we dan het veranderen van de code van de lus te lezen zoals dit
onLED(0,0);
onLED(1,1);
onLED(0,1);
onLED(1,0);
onLED(6,0);
onLED(7,1);
onLED(6,1);
onLED(7,0);
onLED(3,3);
onLED(4,3);
onLED(3,2);
onLED(4,2);
onLED(0,5);
onLED(1,6);
onLED(2,7);
onLED(3,7);
onLED(4,7);
onLED(5,7);
onLED(6,6);
onLED(7,5);
Zulks moeten verlenen u een smiley gezicht patroon op de matrix. Als deze lus snel dat de LEDS zullen lijken allemaal permanent loopt op als gevolg van de hersenen denken ziet het allemaal van de LED's op op hetzelfde moment.
Zodat de LED's worden weergegeven te knipperen kunt dan u de functie van de lus om te lezen dit
voor (int x = 0 x < 500; x ++); {
onLED(0,0);
onLED(1,1);
onLED(0,1);
onLED(1,0);
onLED(6,0);
onLED(7,1);
onLED(6,1);
onLED(7,0);
onLED(3,3);
onLED(4,3);
onLED(3,2);
onLED(4,2);
onLED(0,5);
onLED(1,6);
onLED(2,7);
onLED(3,7);
onLED(4,7);
onLED(5,7);
onLED(6,6);
onLED(7,5);
}
resetLEDS();
delay(500);
Download de schets (ChangedLEDTestFlash) hieronder om te zien van de wijzigingen.