KeyChainino - första spelet nyckelringen programmerbara med Arduino (6 / 14 steg)
Steg 6: Setup-funktionen
funktionen setup():
för (byte jag = 0; jag < PIN_NUMBER; i ++) {
pinMode (stift [i], ingång);
}
med detta för cykel ställa vi alla PIN-koden används för lysdioder matrisen till ingången. Detta eftersom matrisen Charlieplexing stänga av lysdioderna genom att sätta sitt stift till ingången.
pinMode (BUTTON_A, INPUT_PULLUP);
pinMode (BUTTON_B, INPUT_PULLUP);
med dessa två funktion aktiverar vi pullup motstånd för två knappar. Så när en knapp trycks ner, hans tillstånd bli låg.
CLI();
Vi inaktivera globala avbrott för att ställa in alla avbrott som vi behöver.
TCCR1A = 0; satt hela TCCR1A register till 0
TCCR1B = 0; satt hela TCCR1A register till 0
TIMSK1 | = (1 << TOIE1); Aktivera Timer1 overflow avbrott:
TCCR1B | = (1 << CS10); Set CS10 lite så timer körs på klockfrekvens: (ingen prescaling)
Med dessa funktioner ställa vi timern overflow avbrott. Det används för att uppdatera matrisen Charlieplexing.
Jag har skrivit ett inlägg här som kan förklara exakt hur det fungerar.
bitSet (GIMSK, PCIE0); Aktivera pingChange globala avbrott
Denna funktionen Aktivera det globala pinChange avbrottet används för knappen B avbrott.
I funktionen setup() aktiverar inte vi avbrotten för knapparna A och B. Vi aktiverar de i funktionen goSleep() . Detta eftersom vi använder avbrotten för knapparna bara för vakna upp microcontrollers efter det går för att sova.
ADCSRA & = ~ bit(ADEN); Inaktivera ADC < br > power_adc_disable(); Inaktivera ADC converte
power_usi_disable(); Inaktivera USI
Dessa funktioner inaktiveras alla onödiga tillbehör att minska makt förbrukar.
SEI();
Nu kan vi aktivera det globala avbrottet.
showKeyChaininoFace(); Visa KeyChainino leende ansikte
Delay(500);
clearMatrix(); Rensa matrisen
gameStarted = sant; Starta spelet
Visar här vi KeyChainino ansiktet genom att funktionen showKeyChaininoFace() och avmarkera vi alla lampor.
Efter att vi sätta variabeln gameStarted till true. På så sätt vet våra funktioner att spelet har startats.