我先有代码可以做到在四块级连的max7219点阵屏上显示两位,无论我在app上发送几位都只可以显示两位,我该用什么办法让他们可以轮流显示
时间: 2024-02-16 17:00:50 浏览: 106
你可以使用定时器来轮流显示不同的数字。具体步骤如下:
1. 将每个数字的对应LED点亮的信息保存在一个数组中。
2. 使用定时器,每隔一段时间切换要显示的数字。
3. 在定时器中,先将当前显示的数字的LED点灭,然后将下一个要显示的数字的LED点亮。
4. 如果已经显示了所有的数字,可以从头开始循环。
下面是一个示例代码,其中`display_data`是保存每个数字的LED点亮信息的数组,`curr_digit`是当前要显示的数字的索引。
```
#include <LedControl.h>
#define NUM_DIGITS 2
#define DISPLAY_DELAY_MS 500
LedControl lc = LedControl(12, 11, 10, 1);
byte display_data[10][8] = {
{0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E}, // 0
{0x00, 0x00, 0x82, 0xFF, 0xFF, 0x80, 0x00, 0x00}, // 1
{0xC2, 0xA1, 0x91, 0x89, 0x85, 0x83, 0x81, 0x00}, // 2
// ...
};
int curr_digit = 0;
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void loop() {
lc.setRow(0, curr_digit, display_data[curr_digit], 8);
delay(DISPLAY_DELAY_MS);
lc.setRow(0, curr_digit, (byte[]) {0, 0, 0, 0, 0, 0, 0, 0}, 8);
curr_digit = (curr_digit + 1) % NUM_DIGITS;
}
```
在上面的代码中,我们使用了LedControl库来控制max7219点阵屏。在`setup()`函数中初始化了LedControl库。在`loop()`函数中,我们先使用`lc.setRow()`方法将当前要显示的数字的LED点亮,然后等待一段时间后使用同样的方法将LED点灭。最后切换到下一个要显示的数字,如果已经显示了所有的数字,则从头开始循环。
阅读全文