显示数字。

This commit is contained in:
unlockable
2023-08-25 14:47:28 +08:00
parent 3ba8d7606a
commit 93aba929ad

View File

@@ -5,18 +5,8 @@
#define CLOCK_START_PIN 30
#define SW_START_PIN 38
int numbers[10] = {
0xF6F,
0x592,
0xE57,
0xE8F,
0x979,
0xF8F,
0xF3F,
0xE54,
0xFEF,
0xFCF,
const int numbers[10] = {
0xF6F, 0x592, 0xE57, 0xE8F, 0x979, 0xF8F, 0xF3F, 0xE54, 0xFEF, 0xFCF,
};
class Cube {
@@ -55,7 +45,7 @@ public:
static void set_status(int x, int y, int z, int brightness) {
if (x >= 8 || x < 0 || y >= 8 || y < 0 || z >= 8 || z < 0) {
return;
return;
}
brightness %= 4;
LED_status[z][x] =
@@ -73,6 +63,71 @@ public:
}
}
}
static void draw_num(int x, int y, int z, int num, int direction,
int brightness) {
// 0 = look along x
// 1 = look reverse x
// 2 = look along y
// 3 = look reverse y
if (num > 9 || num < 0) {
return;
}
switch (direction) {
case 0: {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if ((numbers[num] >> (11 - (i + j * 3))) & 1) {
Cube::set_status(x, y - i, z - j, brightness);
}
else {
Cube::set_status(x, y - i, z - j, 0);
}
}
}
break;
}
case 1: {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if ((numbers[num] >> (11 - (i + j * 3))) & 1) {
Cube::set_status(x, y + i, z - j, brightness);
}
else {
Cube::set_status(x, y + i, z - j, 0);
}
}
}
break;
}
case 2: {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if ((numbers[num] >> (11 - (i + j * 3))) & 1) {
Cube::set_status(x + i, y, z - j, brightness);
}
else {
Cube::set_status(x + i, y, z - j, 0);
}
}
}
break;
}
case 3: {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if ((numbers[num] >> (11 - (i + j * 3))) & 1) {
Cube::set_status(x - i, y, z - j, brightness);
}
else {
Cube::set_status(x - i, y, z - j, 0);
}
}
}
break;
}
}
}
};
int Cube::layer_count = 0;
@@ -95,79 +150,14 @@ void setup() {
}
void loop() {
// Ref: https://raw.githubusercontent.com/wiki/olikraus/u8glib/fontpic/u8g_font_u8glib_4.png
// for (int i = 7; i >= 0; i--) {
// for (int j = 0; j < 8; j++) {
// for (int k = 0; k < 8; k++) {
// Cube::set_status(i, j, k, bright);
// delay(5);
// }
// }
// }
// bright = (bright + 1) % 4;
// // 0
// Cube::clear();
// Cube::set_status(7, 0, 7, 3);
// Cube::set_status(7, 1, 7, 3);
// Cube::set_status(7, 2, 7, 3);
// Cube::set_status(7, 0, 6, 3);
// Cube::set_status(7, 2, 6, 3);
// Cube::set_status(7, 0, 5, 3);
// Cube::set_status(7, 2, 5, 3);
// Cube::set_status(7, 0, 4, 3);
// Cube::set_status(7, 1, 4, 3);
// Cube::set_status(7, 2, 4, 3);
// delay(5000);
// // 1
// Cube::clear();
// Cube::set_status(7, 1, 7, 3);
// Cube::set_status(7, 0, 6, 3);
// Cube::set_status(7, 1, 6, 3);
// Cube::set_status(7, 1, 5, 3);
// // Cube::set_status(7, 0, 4, 3);
// Cube::set_status(7, 1, 4, 3);
// // Cube::set_status(7, 2, 4, 3);
// delay(5000);
// 2
Cube::clear();
Cube::set_status(6, 0, 7, 3);
Cube::set_status(6, 1, 7, 3);
Cube::set_status(6, 2, 7, 3);
Cube::set_status(6, 2, 6, 3);
Cube::set_status(6, 1, 5, 3);
Cube::set_status(6, 0, 4, 3);
Cube::set_status(6, 1, 4, 3);
Cube::set_status(6, 2, 4, 3);
// delay(5000);
// 3
// Cube::clear();
Cube::set_status(7, 0, 3, 3);
Cube::set_status(7, 1, 3, 3);
Cube::set_status(7, 2, 3, 3);
Cube::set_status(7, 1, 2, 3);
Cube::set_status(7, 2, 1, 3);
Cube::set_status(7, 0, 0, 3);
Cube::set_status(7, 1, 0, 3);
Cube::set_status(7, 2, 0, 3);
delay(5000);
// Ref:
// https://raw.githubusercontent.com/wiki/olikraus/u8glib/fontpic/u8g_font_u8glib_4.png
int i = 0;
while (true) {
Serial.println(i);
Cube::clear();
Cube::draw_num(7, 7, 7, i, 3, 3);
i = (i + 1) % 10;
delay(1000);
}
}