|
|
- #include <Password.h>
- #include <Keypad.h>
- #include <Stepper.h>
- #define STEPS 200
- Stepper stepper(STEPS, 4,5, 10, 13);
- int previous = 0;
- Password password = Password( "123" ); //解锁密码
- const byte ROWS = 2; // 四行
- const byte COLS = 4; // 四列
- // 定义键盘
- char keys[ROWS][COLS] = {
- { '1','2','3','A'},
- {'4','5','6','B'},
- };
- //行
- byte rowPins[ROWS] = {3,2};
- //列
- byte colPins[COLS] = { 9, 6, 7, 8};
- // 建立键盘
- Keypad keypad = Keypad( makeKeymap(keys),rowPins,colPins ,ROWS,COLS);
- void setup(){
- Serial.begin(9600);
- Serial.write(254);
- Serial.write(0x01);
- delay(200);
- pinMode(11, OUTPUT); //绿灯
- pinMode(12, OUTPUT); //红灯
- stepper.setSpeed(100);
- keypad.addEventListener(keypadEvent);
- }
- void loop(){
- keypad.getKey();
-
- }
- //注意一些特殊的事件
- void keypadEvent(KeypadEvent eKey){
- switch (keypad.getState()){
- case PRESSED:
- Serial.print("Enter: ");
- Serial.println(eKey);
- delay(10);
-
- Serial.write(254);
- 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.write(254);delay(10);
- //如果开始工作,运行以下代码
- digitalWrite(11, HIGH);//打开
- delay(500); //等待5秒
- int val = analogRead(0);
- stepper.step(val - previous);
- previous = val;
- digitalWrite(11, LOW);// 关闭
- }else{
- Serial.println("Denied"); //如果密码错误保持锁定
- Serial.write(254);delay(10);
- //如果没有开始工作,运行以下代码
- digitalWrite(12, HIGH); //打开
- delay(500); //等待5秒
- digitalWrite(12, LOW);//关闭
- }
- }
复制代码 |
|