Replace bouncing pixel with pixel pong
This commit is contained in:
parent
8645278350
commit
b96eb2ef9b
2 changed files with 32 additions and 35 deletions
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
int column = 1;
|
||||||
if (previousColumn >= 0) {
|
int direction = 1;
|
||||||
lcdSetCursor(previousColumn, previousRow);
|
uint8_t row = 0;
|
||||||
lcdWrite(' ');
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte pixel[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
|
||||||
pixel[y % 8] = 1 << (4 - (x % 5));
|
|
||||||
lcdCreateChar(4, pixel);
|
|
||||||
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue