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