Arduino键盘的制作教程

电子说

1.3w人已加入

描述

第1步:

对于此项目,我们将使用以下-

〜硬件〜

-Arduino Uno

-伺服电机(180 *)

-瞬时按钮x5

-10k电阻x5

-LED x2(Redx1,Greenx1)

-16x2字符LCD

-10k电位器

-各种跳线

-面包板(一个大的可以容纳整个项目,或者几个小的)

-不要忘记您的计算机或笔记本电脑,还有用于Arduino

〜软件〜

-Arduino的USB电缆(当然是:3)

〜Fritzing(http://www.fritzing。 ORG)。很酷的东西。它具有三种可视化电路的方式-面包板,原理图和PCB。加!您可以发送设计并让他们制作您的PCB,这样您就可以完成产品!我还没有尝试过,但是触手可及的可能性真棒!我使用Fritzing制作原理图和更整洁,更有条理的面包板视图:)最重要的是,它是一个免费软件。

第2步:连接起来-按钮

Arduino

为Arduino的Analog Pin区域A0-A4上的按钮留出空间。

按钮的一侧将绑在5v上,另一侧绑在5v上。将被接地和模拟引脚之一。它也将以另一种方式工作-一侧连接到5v和模拟引脚,另一侧接地。这实际上是一个优先选择的问题,具体取决于您要寻找的是HIGH信号还是LOW信号。

我更喜欢寻找HIGH信号,因为我担心5V恒定电压会馈入引脚。而且我也是一个乐观主义者-等待好的事情发生,而不是等待好的事情消失:P

第3步:接线-伺服

Arduino

我必须说,我爱我一些伺服器!

无论如何。..如果您注意到,伺服器发出了三行信号-特别是在我的身上,有红色,棕色和橙色。显而易见,红色是5v。棕色的引线为接地,橙色的为信号。我们将其连接起来,将橙色引线连接到Arduino的Digital Pin 9,将另外两个引线分别连接到5v和Ground。

我不确定较旧的版本,但最新版本的Arduino IDE装有伺服库和一些启动示例。 #在项目中包含一个伺服器很简单!

第4步:将其接线-16x2字符LCD

LCD是一个有趣的小物件。像伺服系统一样,应该有一个使用和控制LCD屏幕的库和示例,以及在线教程以帮助您入门。我将在这里详细说明,因为LCD比伺服器要复杂一些。

首先,我们将其连接到Arduino。

LCD上的针脚从左到右,如下所示-

-1:VSS(接地)

-2:VDD(+ 5v)

-3:对比度(将此与10k电位计抽头相连-中间引脚)

-4 :寄存器选择

-5:读/写

-6:启用

-7:数据0

-8:数据1

-9:数据2

-10:数据3

-11:数据4

-12:数据5

-13:数据6

-14:数据7

-15:背光+ 5v

-16:背光地

分别将电源和地线连接到。..电源和地线(如果您的LCD仅具有14针,则很可能没有背光,因此,请省略背光连接)。引脚3(对比电压)将到达10k电位计的抽头引脚。您可以将针脚4、6、11、12、13和14连接到Arduino上任何未使用的数字针脚,只要它在代码中按顺序排列即可,例如-

LCD针脚Arduino针脚

4 6

6 2

11 5

12 11

13 7

14 3

虽然有点。..奇怪的。..在Arduino草图中仍然可以正常工作,您可以按此顺序进行操作。

这是它的样子-

LiquidCrystal lcd(6,2,5,11,11,7)

库的方式根据我的收集工作,它将按顺序将那些Arduino引脚指定为LCD引脚。引脚6将被指定为寄存器选择,引脚2将被启用,依此类推。因此,如果在进行连接和编码时顺序不对,那么效果就不会很好。

那不是很复杂吗?对我们来说幸运的是,其他才华横溢的人写了图书馆,为我们做了繁重的工作。对那些家伙表示敬意!因此,我们要做的就是正确地将所有东西绑在一起,这将是顺风顺水。

对于此特定项目,将把针脚4、6、11、12、13和14分配给数字针脚2 ,3、4、5、6和7。

您可能会想,“但是其他4个数据引脚呢?”。仅使用这四个引脚,我们就可以很好地摆脱困境。使用所有8个引脚的速度据说是以前的两倍,但是对于我们现在正在做的事情,这4个引脚将为我们提供很好的服务:)

哦,将LCD的引脚5接地。将其接地将LCD设置为Write-因为我们正在对其进行写入。

步骤5:将其接线-LEDs

Arduino

这肯定是一小步。我们将数字引脚8和10用于LED。绿色代表8,红色代表10。只需确保记住是哪一个即可。

长引线为正,短引线为地,以免我们忘记了!

步骤6:将其编码。..现在就好玩了

这将变得有点。..具有挑战性。..

我尽最大努力不只是遵循别人的教程,而是使用我知道的。弄清楚什么有效,什么无效。像往常一样,您可以在github(底部的链接)上下载我的草图,在这里,我将逐段详细描述草图的每个部分。

//在这里,我们包括我们的库

#include

#include

//初始化库并设置LCD的引脚

LiquidCrystal lcd(2,3, 4,5,6,7);

Servo myservo;

//const int表示常量整数。常数不变。因为我们正在使用按钮,所以很合适。

//不想让我们的Arduino感到困惑!

const int button1 = A0;

const int button2 = A1;

const int button3 = A2;

const int button4 = A3;

const int button5 = A4;

//我们将使用“ countx”来跟踪一次按下按钮

int count1 = 0;

int计数2 = 0;

int计数3 = 0;

int计数4 = 0;

int计数5 = 0;

//“ statex”将跟踪状态按钮。

int state1 = 0;

int state2 = 0;

int state3 = 0;

int state4 = 0;

int state5 = 0;

//这些将选项卡保留在按钮的先前状态。高吗低吗?

int prev1 = 0;

int prev2 = 0;

int prev3 = 0;

int prev4 = 0;

int prev5 = 0;

//totalcount是每个按钮被按下的次数。 。.就像一个组合。

int totalcount = 0;

//这适用于LCD。输入组合时,它将显示一个星号。

int rows = 0;

//并声明LED:)

int red = 8;

int green = 10;

第7步:对其进行编码-设置和循环

Arduino

//在这里,我们设置引脚的功能(输入/输出),启动LCD并指定与伺服器相连的

//引脚。我们还将以0度的舵机开始。

void setup(){

pinMode(button1,INPUT);

pinMode(按钮2,输入);

pinMode(按钮3,输入);

pinMode(按钮4,输入);

pinMode(按钮5,输入);

pinMode(红色,输出);

pinMode(绿色,输出);

lcd.begin(16,2);

lcd.setCursor(0,0);

lcd.print(“:ENTER CODE:”);

Serial.begin(9600); //用于调试。

myservo.attach(9);

myservo.write(0);

}

//从读取状态开始。

void loop(){

state1 = digitalRead(button1);

state2 = digitalRead(button2);

state3 = digitalRead(button3);

state4 = digitalRead (button4);

state5 = digitalRead(button5);

//如果按钮的状态不等于它的先前状态(1 = HIGH,0 = LOW),基本上是

//意思是它刚被按下或释放?如果按钮的状态为HIGH(1)

//,我们将增加该按钮的计数。

if(state1!= prev1){

delay(10);

if(state1 == HIGH){

count1 ++;

}

//注意延迟(10)。这个很重要。它有助于消除抖动。按钮有一个

//跳动性。您感觉不到,但是当您按下一个按钮时,它有时会多次接触,并且Arduino将多次按下它。延迟

//将程序暂停10毫秒,使按钮“稳定”,然后

//恢复。 10毫秒应该足够长,但是可以根据需要调整更长的时间。

else {}

}

//我们为每个按钮执行此操作。

if(state2!= prev2){

delay(10);

if(state2 == HIGH){

count2 ++;

}

else {}

}

if(state3!= prev3){

delay(10);

if(state3 == HIGH){

count3 ++;

}

else {}

}

if(state4!= prev4){

delay(10);

if(state4 == HIGH){

count4 ++;

}

else { }

}

如果(state5!= prev5){

delay(10);

如果(state5 == HIGH){

count5 ++;

}

else {}

}

//这将有助于跟踪使用

//按钮进行的操作。按下按钮时,其状态与

//之前的状态不匹配,表示已更改。在这里,我们将先前的

//状态设置为当前状态,以便您按下或释放Arduino的那一刻就知道并采取相应的措施。

prev1 = state1;

prev2 = state2;

prev3 = state3;

prev4 = state4;

prev5 = state5;

//然后计算每个按钮的按下次数。

totalcount = count1 + count2 + count3 + count4 + count5;

//这是每次按下按钮时在LCD上写入星号(“ *”)的地方。

表示(行= 0;行 lcd.setCursor(rows,1);

lcd.print(“ *”);

行++;

}

//“行”是LCD上光标从左到右的位置。

//每按一次按钮,我们将递增“行”加1,然后将其设置为光标位置。我们这样做直到某个点(5),因为这是我们组合中的位数。

//现在,如果我们的总数达到5,我们将开始查看每个按钮被按下了多少次。如果与预定组合相符。..

if(totalcount == 5){

if(count1 == 2 && count2 == 0 && count3 == 1 && count4 == 2 && count5 == 0){

lcd.clear();

lcd.print(“接受代码”); //接受代码!

myservo.write(90); //伺服器移动了90度,就好像打开门一样。。

digitalWrite(绿色,高); //绿色等于良好,因此绿色LED亮起

//如果第一次未正确输入代码,请确保红色LED保持熄灭

digitalWrite(red,LOW);

count1 = 0; //将我们所有的计数器重置为0,再次开始该过程。

count2 = 0;

count3 = 0;

count4 = 0;

count5 = 0;

totalcount = 0;

delay(10000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“:ENTER CODE:”) ;//我们又回到了开头。

myservo.write(0);

digitalWrite(green,LOW);

}

否则if(count1!= 2 && count2!= 0 && count3!= 1 && count4!= 2 && count5!= 0 && totalcount == 5){

lcd.clear();

lcd.setCursor(0,0);

lcd.print( “拒绝代码”); //和下面的部分是每个按钮的计数

digitalWrite(red,HIGH); //不等于预定计数,或者大于计数,

digitalWrite(绿色,低); //且总按下次数等于5(表示5位数

count1 = 0;输入了//组合,但错误),然后代码被拒绝。

count2 = 0;

count3 = 0;

count4 = 0;

count5 = 0;

totalcount = 0;

delay(5000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“:ENTER CODE:”);

digitalWrite(red,LOW);

}

else if(count1》 2 && count2》 0 && count3》 1 && count4》 2 && count5》 0 || totalcount == 5){

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“ CODE REJECTED”);

digitalWrite(red,HIGH);

digitalWrite(green,LOW);

count1 = 0;

count2 = 0;

count3 = 0;

count4 = 0;

count5 = 0;

totalcount = 0;

delay(5000);

lcd.clear();

lcd。 setCursor(0,0);

lcd.print(“:ENTER CODE:”);

digitalWrite(red,LOW);

}

}

}

第8步:下载草图

哪!复杂。

总的来说,考虑到“人工”和缺少键盘库,这实际上是一个简短的草图。对我来说,这绝对是一次学习的经历,因为我必须反复试验才能做到这一点。如果我有更多按钮,我会尽力制造键盘,就像在其他任何按键面板上看到的一样。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分