目录
1、组成器件
2、总体方案框图
3、 原理
4、电路连接图
5、代码
6、作品展示
7、总结
1、组成器件
UNO开发板
两个超声波模块
三个舵机
若干根杜邦线
一瓶消毒液
一个可以打开的盒子
面包板。
2、总体方案框图
3、 原理
超声波模块检测距离,然后根据距离判断使得舵机进行转动。
4、电路连接图
5、代码
#include <Servo.h> //servo库
Servo servo; //创建舵机对象来控制垃圾桶舵机
Servo myservo; // 创建舵机对象来控制洗手液舵机
int trigPin= 5;
int echoPin = 6;
int servoPin= 7;
long duration, dist;
long aver[3]; //定义存放距离的数组
long aver1[3];
//洗手液
int servopin1= 4;
int trigpin1= 10;
int echopin1= 11;
long duration1,distance;
int pos=0;
void setup() {
//垃圾桶
Serial.begin(9600);
servo.attach(7);//把连接在引脚7上的舵机赋予舵机对其控制
pinMode(trigPin, OUTPUT); //要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(echoPin, INPUT);
servo.write(0); //通电时关闭盖子
//洗手液
pinMode(trigpin1, OUTPUT);
pinMode(echopin1, INPUT);
myservo.attach(4); // 把连接在引脚9上的舵机赋予舵机对其控制
myservo.write(0); // 将伺服设置为初始0度
}
void loop() {
//垃圾桶
for (int i=0;i<=2;i++) { //平均距离
digitalWrite(trigPin, HIGH); //产生一个10us的高脉冲去触发TrigPin
delayMicroseconds(2);
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
duration = pulseIn(echoPin, HIGH);
dist = (duration/2) / 10; // 检测脉冲宽度并测算出距离
aver[i]=dist;
delay(10); //测量之间的延迟
}
dist=(aver[0]+aver[1]+aver[2])/3;
delay(1000);
Serial.println ("垃圾桶测得距离:");
Serial.println(dist);
if ( dist<20) {
//根据需要更改距离
servo.attach(7);
delay(1);
servo.write(90);
delay(3000);
servo.write(20);
delay(1000);
}
//洗手液
for (int i=0;i<=2;i++) {
digitalWrite(trigpin1, LOW);
delayMicroseconds(2);
// 将trigpin1设置为高状态10微秒
digitalWrite(trigpin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin1, LOW);
// 读取echopin1,以微秒为单位返回声波传播时间
duration1= pulseIn(echopin1, HIGH);//pulseIn函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。
//如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。返回脉冲持续的时间长短, 单位为ms。如果超时还没有读到的话, 将返回0。
// 计算距离
distance = (duration1/2) / 10; //获取距离 检测脉冲宽度并测算出距离
aver1[i]=distance;
delay(10); //测量之间的延迟
}
distance=(aver1[0]+aver1[1]+aver1[2])/3;
delay(1000);
Serial.println("洗手液测得距离:");
Serial.println(distance);
if(distance<20)
{ //检查距离小于20cm
myservo.write(180);
delay(1000);
myservo.write(-180);
delay(100);
}
}
6、作品展示
arduino课程设计文章来源:https://www.toymoban.com/news/detail-503871.html
7、总结
本次课程设计我采用了通过超声波模块来控制舵机转动以此来实现垃圾桶的打开和关闭以及洗手液的按压,总体设计比较简单。文章来源地址https://www.toymoban.com/news/detail-503871.html
到了这里,关于【Arduino】arduino期末课程设计作品——新型垃圾桶与消毒液一体化设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!