|
嗨,伙计们,我带来了一个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[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(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);//关闭
-
- }
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|