jamesben 发表于 2012-7-24 07:07:24

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);//关闭
   
}
}

Randy 发表于 2012-7-24 08:37:53

好东西,咋没人顶呢?支持!!!

tzpicc 发表于 2012-7-24 10:18:56

好东西。帮顶

shidoukou 发表于 2012-7-24 10:38:41


好东西。帮顶

山石 发表于 2012-7-29 20:31:20

确实是好东西,谢谢

erjiang 发表于 2012-7-30 11:44:45

好东西,顶一个!

acdc0616 发表于 2012-7-30 14:09:00

密码是可以改变的吗?可以做密码锁了。

zx_1923 发表于 2012-10-15 16:43:23

学习了,支持!

zhangdeyue1 发表于 2012-10-16 10:21:51

我比较关系矩阵键盘
楼主不用接上拉电阻吗~

Anson 发表于 2013-2-22 22:42:52

大牛 有qq吗 你的教程正是我要的找的 ,能交流交流吗

Anson 发表于 2013-2-26 21:12:15

4号口那不用再加个电阻吗?

lbsip 发表于 2013-3-16 19:11:14

嗯,真不错,这个用于智能家居会很好的哦。

充满硝烟的生活 发表于 2013-4-25 18:15:59

这个好像不能一直转啊。。我如果要它一直转该怎么调程序???求速解

开心果 发表于 2013-5-24 11:48:12

我下载后,库没用。。。。新手不会咯

木糖醇 发表于 2013-5-30 18:33:10

这库用不好啊。。。跪求大神速速解决!!!!!!!!!
页: [1] 2 3
查看完整版本: Arduino通过输入密码控制电器运行