eagler8 发表于 2020-2-13 10:22:21

/*
【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
实验一百四十二:LCD1602 字符液晶屏 输入输出扩展板 LCD Keypad Shield
实验之二:ADC密钥测试
LiquidCrystal库:IDE—工具—管理库—搜索LiquidCrystal—安装
*/

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

char msgs = {"Right Key OK ",
                  "Up Key OK    ",
                  "Down Key OK",
                  "Left Key OK",
                  "Select Key OK"
                   };

int adc_key_val = {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);
      }
    }
}
delay(100);
}

// 将ADC值转换为密钥号
int get_key(unsigned int input)
{
int k;

for (k = 0; k < NUM_KEYS; k++)
{
    if (input < adc_key_val)
    {
      return k;
    }
}

if (k >= NUM_KEYS)k = -1;// 未按下有效键
return k;
}

eagler8 发表于 2020-2-13 10:33:46

eagler8 发表于 2020-2-13 15:01:23

eagler8 发表于 2020-2-26 08:49:23

页: 1 [2]
查看完整版本: 【Arduino】168种传感器模块系列实验(142)---LCD Keypad Shield