简易车锁(陈潇湘)

2015-04-129061
AI 快速预览详细 收起
本文介绍了如何利用Arduino制作一个简易的自行车防盗器。所需元件包括有源蜂鸣器、无源蜂鸣器、继电器等。通过硬件连接和代码编写,实现了按下按钮后指示灯亮起,继电器工作;当车锁被断路时,蜂鸣器发出警报,指示灯熄灭的功能。这个项目可以有效防止自行车被盗。


很多人(包括本人)的爱车(两轮)惨遭小偷毒手(万恶),因此萌发了利用Arduino制作一个防盗器的想法。
所需元件
1*简易车锁(陈潇湘)图2
2*简易车锁(陈潇湘)图3
若干简易车锁(陈潇湘)图4
1*简易车锁(陈潇湘)图5
1*简易车锁(陈潇湘)图6
1*简易车锁(陈潇湘)图7
硬件连接
有源[1]蜂鸣器与无源蜂鸣器的区别:
注意:这里的“源”不是指电源,而是指震荡源。
也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫
而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它
有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路
无源蜂鸣器的优点是:
1. 便宜
2. 声音频率可控,可以做出“多来米发索拉西”的效果
3. 在一些特例中,可以和LED复用一个控制口
有源蜂鸣器的优点是:程序控制方便。
简易车锁(陈潇湘)图1
连接图如上。
输入代码
  1. //项目bicycle lock
  2. int ledPin=10;
  3. int buttonPin = 12;                          // button连接到数字12
  4. int relayPin = 13;                           // 继电器连接到数字13
  5. int relayState = LOW;                       // 继电器初始状态为LOW
  6. int buttonState;                            // 记录button当前状态值
  7. int lastButtonState = LOW;                  // 记录button前一个状态值
  8. long lastDebounceTime = 0;                  
  9. long debounceDelay = 50;                    //去除抖动时间
  10. float sinVal;
  11. int toneVal;
  12. void setup() {
  13.   pinMode(buttonPin, INPUT);
  14.   pinMode(relayPin, OUTPUT);
  15.   pinMode(ledPin,OUTPUT);
  16.   digitalWrite(relayPin, relayState);       // 设置继电器的初始状态
  17. }
  18. void loop() {
  19.   int reading = digitalRead(buttonPin);   //reading用来存储buttonPin的数据
  20.   
  21.   // 一旦检测到数据发生变化,记录当前时间
  22.   if (reading != lastButtonState) {   
  23.     lastDebounceTime = millis();
  24.   }
  25.   
  26.   // 等待50ms,再进行一次判断,是否和当前button状态相同
  27.   // 如果和当前状态不相同,改变button状态
  28.   // 同时,如果button状态为高(也就是被按下),那么就改变继电器的状态
  29.   if ((millis() - lastDebounceTime) > debounceDelay) {
  30.     if (reading != buttonState) {
  31.       buttonState = reading;
  32.       
  33.       if (buttonState == HIGH) {
  34.         relayState = !relayState;
  35.         digitalWrite(ledPin, HIGH);
  36.         delay(1000);
  37.         for(int x=0; x<180; x++){
  38.             sinVal = (sin(x*(3.1412/180)));
  39.             toneVal = 2000+(int(sinVal*1000));
  40.             tone(13, toneVal);
  41.             delay(2);
  42.          }   ;
  43.        }
  44.     }
  45.   }
  46.   // 改变button前一个状态值
  47.   lastButtonState = reading;
  48. }
复制代码

上锁后,按下按钮,指示灯亮,给继电器high,当车锁被断路时,蜂鸣器工作,指示灯灭,警灯亮。
本篇由陈潇湘制作,罗亮指导

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -