一个ch455实现4x5矩阵键盘灯光,具体实现代码
时间: 2024-01-31 12:04:03 浏览: 24
下面是一个使用CH455驱动的4x5矩阵键盘灯光的示例代码:
```c
#include <ch455.h>
#define ROWS 4
#define COLS 5
// 矩阵键盘按键映射表
const uint8_t KEY_MAP[ROWS][COLS] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20}
};
// 键值对应的LED灯位置
const uint8_t LED_MAP[20] = {
0x01, 0x02, 0x04, 0x08, 0x10,
0x21, 0x22, 0x24, 0x28, 0x30,
0x41, 0x42, 0x44, 0x48, 0x50,
0x61, 0x62, 0x64, 0x68, 0x70
};
uint8_t key_status[ROWS][COLS];
void setup() {
// 初始化CH455
ch455_init();
// 设置LED灯亮度
ch455_set_brightness(0x7F);
// 初始化键盘按键状态
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
key_status[i][j] = 0;
}
}
}
void loop() {
// 扫描矩阵键盘
for (int i = 0; i < ROWS; i++) {
// 设置行引脚为输出并置位
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
// 扫描列引脚状态
for (int j = 0; j < COLS; j++) {
// 设置列引脚为输入
pinMode(ROWS + j, INPUT_PULLUP);
// 检测按键状态
if (digitalRead(ROWS + j) == LOW) {
// 按键按下
if (key_status[i][j] == 0) {
// 发送LED灯控制命令
ch455_send(LED_MAP[KEY_MAP[i][j]-1]);
key_status[i][j] = 1;
}
} else {
// 按键松开
if (key_status[i][j] == 1) {
// 发送LED灯控制命令
ch455_send(LED_MAP[KEY_MAP[i][j]-1] | 0x80);
key_status[i][j] = 0;
}
}
// 复位列引脚为输出
pinMode(ROWS + j, OUTPUT);
digitalWrite(ROWS + j, HIGH);
}
// 复位行引脚为输入
pinMode(i, INPUT_PULLUP);
}
// 延迟一段时间,防止过于频繁的扫描
delay(50);
}
```
上述代码中使用了CH455的库函数来控制LED灯的亮度和发送控制命令。同时,通过循环扫描矩阵键盘的行列状态来检测按键的按下和松开,并发送相应的LED灯控制命令以控制LED灯的亮灭。需要注意的是,LED灯的控制命令需要通过LED_MAP数组来进行映射,以便确定对应键值的LED灯的位置。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)