KeyChainino - första spelet nyckelringen programmerbara med Arduino (9 / 14 steg)
Steg 9: Uppdaterar baren (paddel) position
Denna funktion är sparken av funktionen loop().
Vi kontrollerar först om en knapp trycks.
Om det, ändrar vi baren ståndpunkt enligt vilken knapp trycktes.
beror på vilken knapp trycks ner, ändra baren position
till vänster (knappen A) eller höger (B-knappen)
om (! digitalRead(BUTTON_B)) {
Delay(80);
om (! digitalRead(BUTTON_B)) {
barX1 ++;
barX2 ++;
}
} om (! digitalRead(BUTTON_A)) {
Delay(80);
om (! digitalRead(BUTTON_A)) {
barX1--;
barX2--;
}
}
Nu kontrollera vi om baren berör gränsen på skärmen och, om det är, vi fixa sin ståndpunkt.
om (barX2 > = MATRIX_COL) {< br > barX2--;
barX1--;
}
om (barX2 == 0) {
barX1 ++;
barX2 ++;
}
Nu visar vi verkligen baren i lysdioder matrisen genom att uppdatera matrixState.
Ändra bara X Ax
barNewPosition [0] [1] = barX1;
barNewPosition [1] [1] = barX2;
endast om baren position är annorlunda
(innebär att knappen trycktes)
om (barNewPosition [0] [1]! = barCurrentPosition[0][1]) {
ta bort nuvarande bar Position
matrixState [barCurrentPosition [0] [0]] [barCurrentPosition [0] [1]] = 0;
matrixState [barCurrentPosition [1] [0]] [barCurrentPosition [1] [1]] = 0;
}
Ange nuvarande bar ställning till ny position
barCurrentPosition [0] [0] = barNewPosition [0] [0];
barCurrentPosition [0] [1] = barNewPosition [0] [1].
barCurrentPosition [1] [0] = barNewPosition [1] [0];
barCurrentPosition [1] [1] = barNewPosition [1] [1].
Visa ny bar Position
matrixState [barNewPosition [0] [0]] [barNewPosition [0] [1]] = 1;
matrixState [barNewPosition [1] [0]] [barNewPosition [1] [1]] = 1;
Vi uppdaterar baren placera på matrixState endast om baren position skiljer sig från sin gamla ståndpunkt.
Detta för att förhindra en irriterande flimmer.