Arduino通过输入密码控制电器运行
嗨,伙计们,我带来了一个arduino新教程。这个教程是通过一个arduino和一个4 x4键盘访问密码来控制一个舵机。
我们将使用arduino的密码和键盘函数库。
除了使用舵机之外,也可以将舵机换成一个电机继电器或步进电机,或其他的任何想法…
第一步:准备材料
我们需要这些零件
[*]1块Arduino UNO 或者类似的
[*]1个舵机
[*]1个4X4键盘或者类似的
[*]1个开发板
[*]若干跳线
[*]1个910Ω的电阻
[*]1个 2.7kΩ的电阻
[*]1个红色LED灯
[*]1个绿色LED灯
第二步:安装键盘
好, 现在,我们必须安装电阻先,记住键盘针脚安装的位置.
键盘针脚输出
1 pin = col 1
2 pin = col 2
3 pin = col 3
4 pin = col 4
5 pin = row 1
6 pin = row 2
7 pin = row 3
8 pin = row 4
将3个910欧的电阻分别同键盘的1、2、3针脚连接, 然后按照这个表将它们同arduino的三个digital pins相连接:
pins keypad|pins arduino
---------------------------------------
1 | 8
2 | 7
3 | 6
4 | 9
5 | 5
6 | 4
7 | 3
8 | 2
第三步:安装舵机
第四步:安装LED
第五步:编程
现在需要这两个库:
开始编程
#include <Password.h>
#include <Keypad.h>
#include <Servo.h> //使用舵机
Servo myservo; //声明 servo
Password password = Password( "your_password" ); //解锁密码
const byte ROWS = 4; // 四行
const byte COLS = 4; // 四列
// 定义键盘
char keys = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//行
byte rowPins = { 5, 4, 3, 2 };
//列
byte colPins = { 8, 7, 6, 9 };
// 建立键盘
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
Serial.print(254, BYTE);
Serial.print(0x01, BYTE);
delay(200);
pinMode(11, OUTPUT);//绿灯
pinMode(12, OUTPUT);//红灯
myservo.attach(13); //舵机digital pin 9
//舵机
keypad.addEventListener(keypadEvent); //增加对键盘的侦听
}
void loop(){
keypad.getKey();
myservo.write(0);
}
//注意一些特殊的事件
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Enter: ");
Serial.println(eKey);
delay(10);
Serial.print(254, BYTE);
switch (eKey){
case 'A': checkPassword(); delay(1); break;
case 'B': password.reset(); delay(1); break;
default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){
if (password.evaluate()){
Serial.println("Accepted");//如果密码正确开锁
Serial.print(254, BYTE);delay(10);
//如果开始工作,运行以下代码
myservo.write(5); //160度
digitalWrite(11, HIGH);//打开
delay(500); //等待5秒
digitalWrite(11, LOW);// 关闭
}else{
Serial.println("Denied"); //如果密码错误保持锁定
Serial.print(254, BYTE);delay(10);
//如果没有开始工作,运行以下代码
myservo.write(0);
digitalWrite(12, HIGH); //打开
delay(500); //等待5秒
digitalWrite(12, LOW);//关闭
}
}
好东西,咋没人顶呢?支持!!! 好东西。帮顶
好东西。帮顶 确实是好东西,谢谢 好东西,顶一个! 密码是可以改变的吗?可以做密码锁了。 学习了,支持! 我比较关系矩阵键盘
楼主不用接上拉电阻吗~ 大牛 有qq吗 你的教程正是我要的找的 ,能交流交流吗 4号口那不用再加个电阻吗? 嗯,真不错,这个用于智能家居会很好的哦。
这个好像不能一直转啊。。我如果要它一直转该怎么调程序???求速解 我下载后,库没用。。。。新手不会咯 这库用不好啊。。。跪求大神速速解决!!!!!!!!!