Replace bouncing pixel with pixel pong

This commit is contained in:
christian 2026-10-24 15:12:43 +02:00
parent 8645278350
commit b96eb2ef9b
2 changed files with 32 additions and 35 deletions

View file

@ -7,7 +7,7 @@ PCF8574/PCF8574A I²C-backpack. Demoen viser:
- brugerdefinerede hjerte-, smiley- og rakettegn; - brugerdefinerede hjerte-, smiley- og rakettegn;
- tekstkort, der skifter på stedet uden vandret scrolling; - tekstkort, der skifter på stedet uden vandret scrolling;
- en animeret 16-kanals "BYTE BEATS"-equalizer; - en animeret 16-kanals "BYTE BEATS"-equalizer;
- en hoppende pixel, der udnytter displayets 80×16 individuelle pixelpositioner; - tydelig "PIXEL PONG" med en 3×3 pixel-bold og paddles;
- animeret digital "PIXEL RAIN" med dynamiske brugerdefinerede tegn; - animeret digital "PIXEL RAIN" med dynamiske brugerdefinerede tegn;
- oppetid og spinner. - oppetid og spinner.

View file

@ -194,50 +194,47 @@ void equalizerDemo() {
lcdCreateChar(2, rocket); lcdCreateChar(2, rocket);
} }
void bouncingPixelDemo() { void pixelPongDemo() {
const byte ball[8] = {
B00000, B00000, B01110, B01110, B01110, B00000, B00000, B00000
};
lcdCreateChar(4, ball);
lcdClear(); lcdClear();
lcdSetCursor(0, 0); lcdSetCursor(0, 0);
printPadded(" BOUNCING PIXEL"); printPadded(" PIXEL PONG");
lcdSetCursor(0, 1); lcdSetCursor(0, 1);
printPadded(" 80x16"); printPadded(" READY? GO!");
delay(900); delay(900);
lcdClear(); lcdClear();
int x = 2; for (uint8_t row = 0; row < LCD_ROWS; ++row) {
int y = 2; lcdSetCursor(0, row);
int dx = 2; lcdWrite('|');
int dy = 1; lcdSetCursor(15, row);
int previousColumn = -1; lcdWrite('|');
int previousRow = -1;
for (uint8_t frame = 0; frame < 150; ++frame) {
if (previousColumn >= 0) {
lcdSetCursor(previousColumn, previousRow);
lcdWrite(' ');
} }
byte pixel[8] = {0, 0, 0, 0, 0, 0, 0, 0}; int column = 1;
pixel[y % 8] = 1 << (4 - (x % 5)); int direction = 1;
lcdCreateChar(4, pixel); uint8_t row = 0;
for (uint8_t frame = 0; frame < 84; ++frame) {
lcdSetCursor(column, row);
lcdWrite(' ');
column += direction;
if (column >= 14 || column <= 1) {
column = constrain(column, 1, 14);
direction = -direction;
row = 1 - row;
} else if (frame % 9 == 0) {
row = 1 - row;
}
int column = x / 5;
int row = y / 8;
lcdSetCursor(column, row); lcdSetCursor(column, row);
lcdWrite(4); lcdWrite(4);
previousColumn = column; delay(90);
previousRow = row;
x += dx;
y += dy;
if (x <= 0 || x >= 79) {
x = constrain(x, 0, 79);
dx = -dx;
}
if (y <= 0 || y >= 15) {
y = constrain(y, 0, 15);
dy = -dy;
}
delay(35);
} }
} }
@ -326,7 +323,7 @@ void loop() {
messageCardsDemo(); messageCardsDemo();
equalizerDemo(); equalizerDemo();
bouncingPixelDemo(); pixelPongDemo();
pixelRainDemo(); pixelRainDemo();
uptimeDemo(); uptimeDemo();
} }