//变量声明
#include <Servo.h> // 声明调用Servo.h库
Servo myservo; // 创建一个舵机对象
int pos = 0; // 变量pos用来存储舵机位置
byte thousand;
byte hundred;
byte ten;
byte one;
int addnum=0;
int speak = 3; //蜂鸣器模块接于数字口3
int led = 6; //指示灯模块接于数字口6
boolean speak_state = false;
boolean flag = false;
//初始化
void setup()
{
myservo.attach(9); // 将引脚6上的舵机与声明的舵机对象连接起来
Serial.begin(9600); //串口波特率设置
pinMode(speak, OUTPUT); //设置为输出模式
digitalWrite(speak,HIGH); //初始化让喇叭不响
pinMode(led, OUTPUT);
digitalWrite(led,LOW);//初始化让灯不亮
}
//由参数t形成不同的频率
void Alarm(int t)
{
int i,j;
for(int i=0;i<200;i++)
{
speak_state=!speak_state;
digitalWrite(speak,speak_state);
for(j=0;j<t;j++)
delayMicroseconds(10);
}
}
//主程序
void loop()
{
//如果查询上位机通过串口已经发来有四个字节的密码
if(Serial.available()==4)
{
flag= true;
thousand=Serial.read(); //读取千位
hundred=Serial.read();//读取百位
ten=Serial.read();//读取十位
one=Serial.read();//读取个位
}
if(flag == true)
{
int sum;//总数
sum=thousand*1000+hundred*100+ten*10+one;
//如果密码正确
if (sum ==6668)
{
addnum=0;
digitalWrite(led,HIGH); //让灯亮
digitalWrite(speak,HIGH); //让喇叭不响
myservo.write(90); // 给舵机写入角度
}
//如果密码不正确
else
{
digitalWrite(led,LOW);
if(Serial.available()>0)
{
addnum=addnum+1;}
}
if(addnum>2)
{
//让灯闪烁,让喇叭报警
digitalWrite(led,HIGH);
Alarm(90);
Alarm(140);
digitalWrite(led,LOW);
Alarm(90);
Alarm(140);
//逆时针转动舵机
for(pos = 180; pos>=1; pos-=10)
{ // 舵机从180°转回到0°,每次减小10°
myservo.write(pos); // 写角度到舵机
delay(15); // 延时15ms让舵机转到指定位置
}
}
}
}
陈弟弟
- 粉丝: 74
- 资源: 5
最新资源
- Screenshot_20241117_024114_com.huawei.browser.jpg
- .turing.dat
- shopex升级补丁只针对 485.78660版本升级至485.80603版本 其它版本的请勿使用!
- 基于Django和HTML的新疆地区水稻产量影响因素可视化分析系统(含数据集)
- windows conan2应用构建模板
- 3_base.apk.1
- 基于STM32F103C8T6的4g模块(air724ug)
- 基于Java技术的ASC学业支持中心并行项目开发设计源码
- 基于Java和微信支付的wxmall开源卖票商城设计源码
- 基于Java和前端技术的东软环保公众监督系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈