Arduino液晶键盘屏蔽

42540年

20.

18

Arduino液晶键盘屏蔽

步骤1:图书馆

您将需要安装Keypad库。

步骤2:代码

下面是我从库中包含的示例代码中修改的代码。我增加了当按下选择按钮时打开数字引脚13上的LED,然后关闭它,然后释放选择按钮的功能。

步骤3:注意:

请勿更改数字引脚10.此引脚用于控制LCD的背光。如果它设置为输出和高,它可能会损坏您的LCD屏蔽。

2个人制作了这个项目!

建议

  • 单片机竞赛

    单片机竞赛
  • 自动化竞赛

    自动化竞赛
  • 让它发光比赛

    让它发光比赛

18岁的讨论

0
barish1903

12天前

这很酷,但您只是使用串行查看器调整按钮的值。然后您将看到按钮值并在代码中进行修复

/ *

Ark Bramwell, 2010年7月
修改敏锐
日期:05/05/2017
功能:该程序将对液晶面板和按键进行测试
*/
/ /样本使用LiquidCrystal库
# include < LiquidCrystal.h >
# include < Wire.h >
//选择LCD面板上使用的引脚
液晶显示(8,9,4,5,6,7);
//定义面板和按钮使用的值
Int lcd_key = 0;
Int adc_key_in = 0;
#定义btnRIGHT 0
#定义btnUP 1
#定义btnDOWN 2
#define btnleft 3.
#定义btnSELECT 4
#定义btnNONE 5
//读取按钮
int read_LCD_buttons ()

ADC_KEY_IN = ANALOGREAD(0);//读取传感器的值
//我的按钮在读取时以这些寓园为中心:0,144,329,504,741
//我们添加大约50到这些值,并检查,看看我们是否接近
if (adc_key_in > 1500)返回btnNONE;//由于速度的原因,我们把它作为第一选项,因为它将是最有可能的结果
if (adc_key_in < 50)返回btnRIGHT;
if (adc_key_in < 195)返回btnUP;
if(adc_key_in <380)返回btndown;
if (adc_key_in < 550)返回btnLEFT;
if (adc_key_in < 800)返回btnSELECT;
返回btnNONE;//当所有其他失败时,返回this…

void setup()

Serial.begin (9600);
液晶显示器。开始(16日2);//启动库
液晶显示器。setCursor (0,0);
液晶显示器。打印(“按按钮”);//打印一个简单的消息

无效循环()

液晶显示器。setCursor (9,1);//移动光标到第二行"1"和9个空格
lcd.print(米尔斯()/ 1000);//显示启动后的秒数
液晶显示器。setCursor (0,1);//移动到第二行开始
lcd_key = read_LCD_buttons ();//读取按钮
Switch (lcd_key) //根据按下的按钮,执行一个操作

案例btnright:

液晶显示器。打印(“正确的”);
打破;

案例btnLEFT:

液晶显示器。打印(“左”);
打破;

案例btnUP:

液晶显示器。打印(“向上”);
打破;

案例btnDOWN:

液晶显示器。打印(“向下”);
打破;

案例btnSELECT:

lcd.print(“选择”);
打破;

案例Btnnone:

液晶显示器。打印(“没有”);
打破;


系列。打印(“德格:”);
以adc_key_in);

0
vveraa

问题1年前

谢谢你的信息。我需要你的帮助,我想询问如何让键盘函数像滚动上下滚动..?我会尝试在void循环中这样做。然后,下面的这些编码,将有一个条件来滚动。我会试试,但没有发生任何事情。它只是出现“右”,“左”,“向上”等。:'(
无效循环(){
lcd.setCursor (0,1);
lcd_key = read_LCD_buttons ();//读取按钮
Switch (lcd_key) //根据按下的按钮,执行一个操作

案例btnUP:

lcd.clear ();
液晶显示器。打印(“向上”);
打破;

案例btnDOWN:

lcd.clear ();
液晶显示器。打印(“向下”);
打破;


0
brightled

2年前

我今天订购并收到了这个单元,并查看了一些视频,请注意……这种类型的护盾有2个或更多版本..在使用之前,请确认你的单位上的按钮数量,并根据它的指令为你的单位编程。我的单位有6个按钮,其他人有5个,请注意差异。

0
TaranA3

问题2年前

我下载了你的草图,但当我试图编译它时,我得到了以下错误消息:

Arduino: 1.8.6 (Windows 10), Board:“Arduino/Genuino Uno”

FINA14KITKJE85T:6:1:错误:'DFR_LCD_Keypad'没有命名类型

DFR_LCD_Keypad键盘(A0、lcd);

C:\ users \ taran \ downloads \ fina14kitkje85t \ fina14kitkje85t.ino:7:11:警告:未初始化const'key_right'[-fpermissive]

const int key_right;

FINA14KITKJE85T:8:19:错误:在':' token之前预期的初始化器

const int key_left:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:10:11: warning: uninitialized const 'KEY_DOWN' [-fpermissive]

const int KEY_DOWN;

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:11:11: warning: uninitialized const 'KEY_NONE' [-fpermissive]

const int KEY_NONE;

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在void setup()函数中:

FINA14KITKJE85T:22:11:错误:'led'未在此范围内声明

pinMode(领导、输出);

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在void loop()函数中:

FINA14KITKJE85T:29:14:错误:'keypad'未在此范围内声明

last_key = keypad.get_last_key ();

FINA14KITKJE85T:39:12:错误:'KEY_RIGHT'的值在常量表达式中不可用

案例KEY_RIGHT:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:7:11: note: 'KEY_RIGHT' was not initialized with a constant expression

const int key_right;

FINA14KITKJE85T:39:12:错误:'KEY_RIGHT'的值在常量表达式中不可用

案例KEY_RIGHT:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:7:11: note: 'KEY_RIGHT' was not initialized with a constant expression

const int key_right;

FINA14KITKJE85T:43:12:错误:'KEY_UP'未在此范围内声明

案例KEY_UP此时:

FINA14KITKJE85T:47:12:错误:KEY_DOWN的值在常量表达式中不可用

案例KEY_DOWN:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:10:11: note: 'KEY_DOWN' was not initialized with a constant expression

const int KEY_DOWN;

FINA14KITKJE85T:47:12:错误:KEY_DOWN的值在常量表达式中不可用

案例KEY_DOWN:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:10:11: note: 'KEY_DOWN' was not initialized with a constant expression

const int KEY_DOWN;

FINA14KITKJE85T:51:12:错误:'KEY_LEFT'未在此范围内声明

案例KEY_LEFT:

FINA14KITKJE85T:55:12:错误:'KEY_SELECT'未在此范围内声明

案例KEY_SELECT:

FINA14KITKJE85T:61:12:错误:KEY_NONE的值在常量表达式中不可用

case key_none:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:11:11: note: 'KEY_NONE' was not initialized with a constant expression

const int KEY_NONE;

FINA14KITKJE85T:61:12:错误:KEY_NONE的值在常量表达式中不可用

case key_none:

C:\Users\taran\Downloads\ FINA14KITKJE85T \ FINA14KITKJE85T。在o:11:11: note: 'KEY_NONE' was not initialized with a constant expression

const int KEY_NONE;

退出状态1

'DFR_LCD_Keypad'没有命名类型

在c:\ users \taran\ documents \ arduinok \libraries\keypad_values中发现无效库

在c:\用户\taran\文档\ arduinoj \图书馆\Yahzee: c:\用户\taran\文档\ arduinoj \图书馆\Yahzee

此报告将有更多信息

“在编译期间显示详细输出”

选项在文件中启用 - >首选项。

0
philngai

2年前

谢谢,你的库和示例草图非常适合我!

0
robmawe91

两年前的回复

别客气。

0
christmasbob

2年前

向上按钮的电阻范围设置得太低。接近150欧姆。我在DFR_LCD_Keypad.h文件中修复了它。

#定义DFR_LCD_KEYPAD_KEY_UP_ADC_LOW 120

#定义DFR_LCD_KEYPAD_KEY_UP_ADC_HIGH 160

工作现在

0
RobM230

问题两年前第2步

我下载了你的草图,但当我试图编译它时,我得到了以下错误消息:

demo_simple:14:错误:'DFR_LCD_Keypad'没有命名类型

demo_simple。在o: In function 'void loop()':

Demo_simple:30: error: 'keypad'未在此范围内声明

demo_simple:42: error: 'KEY_RIGHT'未在此范围内声明

demo_simple:46: error: 'KEY_UP'未在此范围内声明

demo_simple:50: error: 'KEY_DOWN'未在此范围内声明

demo_simple:54: error: 'KEY_LEFT'未在此范围内声明

demo_simple:58: error: 'KEY_SELECT'未在此范围内声明

demo_simple:62: error: 'KEY_NONE'未在此范围内声明

我是Arduino的新手,但我试图学习c++,但将感激任何建议,你可能有修复它。谢谢你,罗伯特

0
robmawe91

答案2年前

我在编译1.8.1时得到了相同的错误。我发现Library文件在我的电脑上的文件目录错误。一旦我把它移动到正确的位置,它为Uno编译良好。我不确定Arduino是否在新的IDE中改变了一些东西,或者我把所有东西都转移到我的新电脑中了……我将继续下载newist IDE,看看它是否可以为我编译。

0
RobM230

答案2年前

谢谢。我会确保我的文件也在正确的地方。只是非常令人沮丧的复制别人的代码-这是工作-并发现我不能编译它或有错误消息。再次感谢你的帮助和兴趣。

0
robmawe91

答案2年前

这是我唯一能想到的。我卸载了Arduino IDE并删除了我所有的文件,安装了最新的IDE并将所有文件添加回正确的目录。运行代码,它编译没有任何错误。我知道这是非常令人沮丧的,我已经发现许多代码是他们是某种类型的问题。大多数时候,图书馆似乎不是出了什么问题,就是在网上再也找不到。希望你能成功!

0
RobM230

答案2年前

好建议!我卸载了IDE 1.8.5,然后重新安装。已经移动了我所有的库并重新命名了文件夹。然后下载新的库,并确保我把它们放在正确的(库)文件夹和正确的名称。现在一切工作,我有一个功能液晶屏蔽- rtc - uno时钟!非常感谢你的帮助。问候,R

0
robmawe91

答案2年前

太棒了!很高兴你修好了。

0
robmawe91

答案2年前

你下载并安装库了吗?

0
RobM230

答案2年前

我做了,至少我认为我做了,因为他们出现在素描里。我尝试了IDE 1.8.5(编译错误)和1.0.5。这里是屏幕截图。谢谢你的帮助!

0
VictorC13

3年前

谢谢你提供这么好的信息,我现在有一个功能的液晶显示器了。唯一的问题是UP按钮不工作,是不是我的LCD屏坏了?我用的是SainSmart制造的盾牌。再一次感谢您

胜利者

0
robmawe91

3年前的回复

它可能是液晶屏或编码。我
不知道你的和我的效果是否一样。你可以通过
用万用表检查按钮的连续性,然后
顺着痕迹找到销钉,再检查一下。你只需要
按下按钮时的连续性。如果能证实的话,也有可能
Arduino GPIO接口有问题(它们随着时间的推移会出现问题)
或者可能是Pinout图书馆的问题。如果是这样的话,你可以
修改它或在草图中#define。