基于Arduino的舵机报警器

 

 

 


前言

学了一段时间Arduino板,也买了一些零件,看电影中自己便想做一个报警器,给自己无聊的暑假生活一点乐趣。


 

一、什么是报警器?

所为报警器,则是利用红外避障感应器来感知前方是否有物体移动,有则直接中断将当前度数及距离直接输出至Lcd显示屏当中,并且将一个报警灯变常亮。

二、准备材料

  1. Arduino uno板
  2. 面包板
  3. 红外避障传感器
  4. 1602A Lcd显示屏
  5. sg90 舵机
  6. hc-sr04 超声波测距模块

三、连接材料

  1. 将他们都连接起来,将超声波测距仪与红外避障传感器安装在舵机上面,连接电脑,进行上传。

四、代码

1.主程序部分

#include<Servo.h>//调用舵机函数
#include<LiquidCrystal.h>//调用显示屏函数
int Trig=12;//设定口
int Echo=10;
int sensor=11;
int gy=2;
float distance;
float pos;
int LED=3;
Servo myservo;//设定舵机名字 myservo
LiquidCrystal lcd(4,5,6,7,8,9);
unsigned long previousTime;//定义一个变量
int blinkInterval = 50; //LED闪烁时间间隔

 

2.setup

void setup()
{
Serial.begin(9600);
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
myservo.attach(sensor);
attachInterrupt(digitalPinToInterrupt(gy),hw,FALLING);//中断
lcd.begin(16,2);
 myservo.write(0);    
}

 

3.loop

void loop()
{
unsigned long currentMillis = millis(); // 获取当前时间
   millistime(currentMillis);
}
int millistime(unsigned long currentTime)
{
if (currentTime - previousTime >= blinkInterval)//如过当前时间减去过了的时间>=设定的次数
{
  myservo.write(pos);    //设定转的角度
  pos++;
    previousTime = currentTime;  // 将检查时间复位     
    if(pos==180)
   { pos=0;}
}

4.红外避障部分

void hw()
{

int distance = calculateDistance();//取得距离
lcd.setCursor(0,0);
lcd.print("dergee:");
lcd.setCursor(7,0);
lcd.print(pos);
lcd.setCursor(0,1);
lcd.print("distance:");
lcd.setCursor(10,1);
lcd.print(distance);
 if(distance<50)
 {digitalWrite(LED,HIGH);}
 else
{ digitalWrite(LED,LOW);}
}

5.距离部分

int calculateDistance()//计算时间函数
{ 
  digitalWrite(Trig, LOW); 
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH); 
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);
  int duration = pulseIn(Echo, HIGH);
  distance= duration/58.5;
  return distance;
}

 


总结

这个报警器也用了millis和中断的概念,如果看不懂可以先去补习下这两块,这就是本次小项目的全部内容,谢谢观看。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值