Arduino通过输入密码控制电器运行
嗨,伙计们,我带来了一个arduino新教程。
这个教程是通过一个arduino和一个4 x4键盘访问密码来控制一个舵机。
我们将使用arduino的密码和键盘函数库。
除了使用舵机之外,也可以将舵机换成一个电机继电器或步进电机,或其他的任何想法…
2012-8-10 18:18 上传
(109.82 KB)
第一步:准备材料
我们需要这些零件
2012-8-10 18:18 上传
(194.4 KB)
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
2012-8-10 18:18 上传
(106.06 KB)
2012-8-10 18:18 上传
(127.9 KB)
2012-8-10 18:18 上传
(29.68 KB)
2012-8-10 18:18 上传
(105.4 KB)
2012-8-10 18:18 上传
(113.47 KB)
将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
第三步:安装舵机
2012-8-10 18:18 上传
(33.66 KB)
2012-8-10 18:18 上传
(228.45 KB)
第四步:安装LED
2012-8-10 18:18 上传
(39.53 KB)
第五步:编程
现在需要这两个库:
密码控制附件.rar
(29.35 KB, 下载次数: 624)
2012-8-31 21:02 上传
点击文件名下载附件
密码库&键盘库下载
开始编程ARDUINO 代码复制打印
#include <Password.h>#include <Keypad.h>#include <Servo.h> //使用舵机 Servo myservo; //声明 servoPassword password = Password( "your_password" ); //解锁密码 const byte ROWS = 4; // 四行const byte COLS = 4; // 四列// 定义键盘char keys[ROWS][COLS] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};//行byte rowPins[ROWS] = { 5, 4, 3, 2 };//列byte colPins[COLS] = { 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();}//注意一些特殊的事件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(
via - 极客工坊