|
楼主 |
发表于 2020-2-12 19:40:15
|
显示全部楼层
本帖最后由 eagler8 于 2020-2-12 19:45 编辑
实验开源参考代码
- /*
- 【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
- 实验一百四十二:LCD1602 字符液晶屏扩展板 LCD Keypad Shield
- 实验之一:这个程序用来测试LCD液晶显示模块和5个按键。
- LiquidCrystal库:IDE—工具—管理库—搜索LiquidCrystal—安装
- */
- #include <LiquidCrystal.h>
- // 选择LCD上使用到的引脚
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
- // 定义各按键
- int lcd_key = 0;
- int adc_key_in = 0;
- #define btnRIGHT 0
- #define btnUP 1
- #define btnDOWN 2
- #define btnLEFT 3
- #define btnSELECT 4
- #define btnNONE 5
- //读取按键值
- int read_LCD_buttons()
- {
- adc_key_in = analogRead(0); // 从模拟口0读值
- // 直接读到的5个按键值在以下值附近:0,144,329,504,741
- // 通过设定不同的阀值,就可以对应读到相应的按键
- if (adc_key_in > 1000) return btnNONE;
- if (adc_key_in < 50) return btnRIGHT;
- if (adc_key_in < 250) return btnUP;
- if (adc_key_in < 450) return btnDOWN;
- if (adc_key_in < 650) return btnLEFT;
- if (adc_key_in < 850) return btnSELECT;
- // V1.0的版本使用以下的阀值:
- /*
- if (adc_key_in < 50) return btnRIGHT;
- if (adc_key_in < 195) return btnUP;
- if (adc_key_in < 380) return btnDOWN;
- if (adc_key_in < 555) return btnLEFT;
- if (adc_key_in < 790) return btnSELECT;
- */
- return btnNONE;
- }
- void setup()
- {
- lcd.begin(16, 2); // 开始
- lcd.setCursor(0,0);
- lcd.print("Push the buttons"); // 输出“Push the buttons”
- }
-
- void loop()
- {
- lcd.setCursor(9,1); // 光标定在第二行,空开9格
- lcd.print(millis()/1000); // 输出等待时间
- lcd.setCursor(0,1); // 光标移动到第二行开头
- lcd_key = read_LCD_buttons(); // 读取按键
- switch (lcd_key) // 选择按键
- {
- case btnRIGHT:
- {
- lcd.print("RIGHT ");
- break;
- }
- case btnLEFT:
- {
- lcd.print("LEFT ");
- break;
- }
- case btnUP:
- {
- lcd.print("UP ");
- break;
- }
- case btnDOWN:
- {
- lcd.print("DOWN ");
- break;
- }
- case btnSELECT:
- {
- lcd.print("SELECT");
- break;
- }
- case btnNONE:
- {
- lcd.print("NONE ");
- break;
- }
- }
- }
复制代码 |
|