#include <Servo.h>
Servo myservo; //定义舵机对象
int trig_pin = 2; //定义超声波模块Trig脚连接的数字接口
int echo_pin = 3; //定义超声波模块Echo脚连接的数字接口
float dist; //定义距离变量
void setup() {
Serial.begin(9600); //初始化串口通信
pinMode(trig_pin, OUTPUT); //设置Trig脚为输出状态
pinMode(echo_pin, INPUT); //设置Echo脚为输入状态
myservo.attach(9); //将舵机连接到数字口9
}
void loop() {
digitalWrite(trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
dist = pulseIn(echo_pin, HIGH) / 58.0; //读取距离
if (dist <= 1.0) { //如果距离小于等于1厘米
myservo.write(180); //打开舵机,将垃圾倒出来
delay(1000); //延时等待垃圾倒出
myservo.write(0); //关闭舵机
}
}
可以使用激光测距仪进行垃圾深度的探测。在Arduino等控制板上编写程序,将激光测距仪的数据读取到控制板上,并根据读取数据判断垃圾深度是否小于一厘米。当垃圾深度小于一厘米时,控制舵机打开垃圾桶,将垃圾倾倒出来。其中,超声波探测模块的Trig脚连接数字口2,Echo脚连接数字口3;舵机的信号线连接数字口9。当距离小于等于1厘米时,舵机从初始位置旋转至倾倒位置,将垃圾倒出来;延时1秒后,舵机将再次回到初始位置。