Arduino流水灯8*8点阵可以显示电压值的代码
时间: 2024-06-08 22:11:23 浏览: 126
以下是一个简单的Arduino流水灯8x8点阵显示电压值的代码,你可以根据需要进行修改和优化:
```
// 引入点阵库
#include <LedControl.h>
// 定义点阵模块的引脚
const int DIN_PIN = 2;
const int CS_PIN = 3;
const int CLK_PIN = 4;
// 定义点阵模块对象
LedControl lc = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 1);
void setup() {
// 初始化串口
Serial.begin(9600);
// 初始化点阵模块
lc.shutdown(0, false); // 关闭休眠模式
lc.setIntensity(0, 8); // 设置亮度(0-15)
lc.clearDisplay(0); // 清空显示
}
void loop() {
// 读取电压值
int voltage = analogRead(A0) * 5.0 / 1024.0 * 100; // 将毫伏转换为伏特
// 将电压值转换为字符串
String voltageStr = String(voltage) + "V";
// 在串口上输出电压值
Serial.println(voltageStr);
// 在点阵上显示电压值
for (int i = 0; i < voltageStr.length(); i++) {
char c = voltageStr.charAt(i);
int col = i * 3;
switch (c) {
case '0':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B11111111);
lc.setRow(0, col + 2, B10000001);
break;
case '1':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B10000010);
lc.setRow(0, col + 2, B11111111);
break;
case '2':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B11000011);
lc.setRow(0, col + 2, B10100101);
break;
case '3':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B10000001);
lc.setRow(0, col + 2, B10100101);
break;
case '4':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B00100100);
lc.setRow(0, col + 2, B11111111);
break;
case '5':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B10100101);
lc.setRow(0, col + 2, B11000011);
break;
case '6':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B11111111);
lc.setRow(0, col + 2, B00100100);
break;
case '7':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B10000001);
lc.setRow(0, col + 2, B11111111);
break;
case '8':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B11111111);
lc.setRow(0, col + 2, B10100101);
break;
case '9':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B10100101);
lc.setRow(0, col + 2, B11111111);
break;
case '.':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B00000000);
lc.setRow(0, col + 2, B11000000);
break;
case 'V':
lc.setRow(0, col, B00000000);
lc.setRow(0, col + 1, B01100010);
lc.setRow(0, col + 2, B00011110);
break;
}
}
// 等待一段时间
delay(500);
// 清空显示
lc.clearDisplay(0);
}
```
这个代码使用了LedControl库来控制8x8点阵模块,通过analogRead函数读取A0引脚上的电压值,并将其转换为字符串,并在点阵上进行显示。你需要将DIN_PIN、CS_PIN和CLK_PIN分别连接到点阵模块的DIN、CS和CLK引脚上,将A0引脚连接到电压测量电路中。
阅读全文