|

楼主 |
发表于 2020-2-13 10:19:20
|
显示全部楼层
- /*
- 【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
- 实验一百四十二:LCD1602 字符液晶屏 输入输出扩展板 LCD Keypad Shield
- 实验之二:ADC密钥测试
- LiquidCrystal库:IDE—工具—管理库—搜索LiquidCrystal—安装
- */
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
- char msgs[5][16] = {"Right Key OK ",
- "Up Key OK ",
- "Down Key OK ",
- "Left Key OK ",
- "Select Key OK"
- };
- int adc_key_val[5] = {50, 200, 400, 600, 800 };
- int NUM_KEYS = 5;
- int adc_key_in;
- int key = -1;
- int oldkey = -1;
- void setup()
- {
- lcd.clear();
- lcd.begin(16, 2);
- lcd.setCursor(0, 0);
- lcd.print("ADC key testing");
- }
- void loop()
- {
- adc_key_in = analogRead(0); // 从A0传感器端读取值
- key = get_key(adc_key_in); // 转换为按键
- if (key != oldkey) // 如果检测到按键
- {
- delay(50); // 等待解除缓冲时间
- adc_key_in = analogRead(0); // 从A0传感器端读取值
- key = get_key(adc_key_in); // 转换为按键
- if (key != oldkey)
- {
- lcd.setCursor(0, 1);
- oldkey = key;
- if (key >= 0) {
- lcd.print(msgs[key]);
- }
- }
- }
- delay(100);
- }
- // 将ADC值转换为密钥号
- int get_key(unsigned int input)
- {
- int k;
- for (k = 0; k < NUM_KEYS; k++)
- {
- if (input < adc_key_val[k])
- {
- return k;
- }
- }
- if (k >= NUM_KEYS)k = -1; // 未按下有效键
- return k;
- }
复制代码
|
|