Stap 7: Codering het - een beter voorbeeld.
Tijdens het fietsen door alle LED's is een goede indicatie dat het werkt, het is ietwat saai...
De bijgevoegde schets ziet u hoe u kunt de code instellen om specifieke frames weer te geven (waarbij elk frame wordt gedefinieerd als een bos van LED's die in- of uitschakelen zijn).
Het eerste verschil is dat ik de variabelen in mijn matrix herschikt van LED's te lijken op de lay-out op mijn breadboard. Helaas, er is geen truc hier. Het is gewoon vallen en opstaan. Let op de volgorde van LED's en swop twee tegelijk te proberen en het uitzoeken.
Het belangrijkste verschil is echter de methode display (int frame [5], int duur). Meeste is vrij vanzelfsprekend. Er is een heleboel herhalen om alle relevante waarden van de verschillende reeksen, maar het enige deel dat dreigt te verwarrend is hier:
Als (frame [y] & (0b1000 >> x)) {}
licht (c [y] [x]);
Dit is in wezen met behulp van een bitsgewijze AND op de byte van een Bitshifted om te bepalen of een kolom in het frame op. Wanneer u met de rechtermuisknop shift, de 1 in 0B1000 zal naar rechts verplaatsen, dus wat je doet dit is:
Aannemen dat X = 0 en frame [y] = 0b0101:
0b1000 >> 0 is 0B1000
door het doen van een bitsgewijze AND op
0B1000 en
0B0101
je eindigen met 0B0000 die betekent dat geen LED's wordt ingeschakeld.
Als u vervolgens met X verdergaat = 1 en frame [y] = 0b0101:
0b1000 >> 1 is 0B0100
door het doen van een bitsgewijze AND op
0B0100 en
0B0101
je eindigen met 0B0100 die betekent: draai op de tweede LED (en alleen de tweede LED) in rij Y.
In wezen, het is gewoon een slimme beetje wiskunde schoner te maken de code. U kunt meer lezen over bitsgewijze math hier:
http://www.Arduino.CC/Playground/code/BitMath
De video laat zien hoe het eruitziet wanneer uitgevoerd.