Stap 9: Bijwerken van de Bar (peddel) positie
Deze functie is ontslagen door de loop-functie.
Eerst als een knop wordt ingedrukt.
Als het is, we veranderen de bar standpunt volgens welke knop is ingedrukt.
//depends on which button is pressed, change the bar position // to left (button A) or right (button B) if (!digitalRead(BUTTON_B)) { delay(80); if (!digitalRead(BUTTON_B)) { barX1++; barX2++; } } if (!digitalRead(BUTTON_A)) { delay(80); if (!digitalRead(BUTTON_A)) { barX1--; barX2--; } }
Nu controleren we als de bar de rand van het scherm raakt, en als het is, we zijn standpunt vaststellen.
if (barX2 >= MATRIX_COL) {<br> barX2--; barX1--; } if (barX2 == 0) { barX1++; barX2++; }
Nu laten we echt zien de bar in de matrix van de LEDs door bijwerking van de matrixState.
//changing only X Ax barNewPosition[0][1] = barX1; barNewPosition[1][1] = barX2; //only if the bar position is different // (means that the button was pressed) if (barNewPosition[0][1] != barCurrentPosition[0][1]) { //delete current bar Position matrixState[barCurrentPosition[0][0]][barCurrentPosition[0][1]] = 0; matrixState[barCurrentPosition[1][0]][barCurrentPosition[1][1]] = 0; } //set current bar position to new 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]; //show new bar Position matrixState[barNewPosition[0][0]][barNewPosition[0][1]] = 1; matrixState[barNewPosition[1][0]][barNewPosition[1][1]] = 1;
Wij vernieuwen de bar plaats op het matrixState alleen als de bar positie verschilt van zijn oude positie.
Dit om te voorkomen dat een vervelend flikkeren.