目录
1、所需材料
2、使用原理
3、模块简介
3.1 Arduino UNO
3.2 超声波测距模块
3.3 舵机(自由度为180度或360度)
4、接口接线
5、代码示例
6、总结
1、所需材料
Arduino UNO开发板+180度舵机*2+公对母杜邦线六根+超声波测距模块+公对母杜邦线四根
2、使用原理
为了实现在使用两个不同的垃圾桶时候,垃圾盖子可以分别打开。
3、模块简介
3.1 Arduino UNO
Arduino Uno 是一款基于 微控制器 MTATmega328P的开发板。它有14个数字输入/输出引脚(这些引脚中有6个引脚可以作为PWM输出引脚),6个模拟输入引脚,16 MHz石英晶振,USB接口,电源接口,支持在线串行编程以及复位按键。用户只需要将开发板与电脑通过USB接口连接就可以使用。
3.2 超声波测距模块
超声波传感器模块是一种使用超声波测量与物体之间距离的仪器。它有两个探头。一种是发送超声波,另一种是接收超声波并将发送和接收的时间转换为距离,从而检测设备与障碍物之间的距离。在实践中,它非常方便和实用。
3.3 舵机(自由度为180度或360度)
舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。
4、接口接线
Arduino UNO舵机1
5VVCC(红线)GNDGND(棕线)pin9橙线
Arduino UNO舵机25VVCC(红线)GNDGND(棕线)pin11橙线 Arduino UNO超声波测距模块5VVCCGNDGNDpin10Trigpin8Echo
5、代码示例
#define TrigPin 10 //输出
#define EchoPin 8 //输入
#include <Servo.h>
Servo myservo;
Servo myservo1;
int pos = 0;
int pos1 = 0;
float Value_cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
myservo.attach(9);
myservo1.attach(11);
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
Value_cm = float( pulseIn(EchoPin, HIGH) * 17 )/1000;
Serial.println("前方障碍距离当前位置:");
Serial.print(Value_cm);
Serial.println("cm");
if (Value_cm <= 20) {
for (pos = 0; pos <= 180; pos ++) {
myservo.write(pos);
delay(10);
}
}
if (Value_cm <=100 && Value_cm >=50) {
for (pos1 = 0; pos1 <= 180; pos1 ++) {
myservo1.write(pos1);
delay(10);
}
}
delay(3000);
}
6、总结
在两个垃圾桶上分别安装两个舵机,使用超声波测距模块,从侧边测量人到超声波模块的距离,以此为信号,控制两个舵机的启闭,进而实现不垃圾桶前站立,不同垃圾桶打开。