arduino小玩具(一)

arduino小玩具(一)桌面垃圾桶

功能

当超声波测距识别到10cm范围内有物体时舵机就会转动并打开垃圾桶,当10cm内没有物体时舵机转动垃圾桶的盖子会自由落下(要在盖子上加一个重物,让盖子在没有舵机支撑的情况下能自动关上,这里我在垃圾桶上加了一个大螺帽)

材料列表

小垃圾桶 大小 9 * 9 *13.5 cm 来自拼夕夕
SG90舵机 1个
超声波测距模块 1个
小木棍 1个
arduino板 1个
杜邦线 若干
502胶水 1瓶
小透明胶带 1卷

需要的知识

1. 代码控制舵机转动。
2.代码控制超声波测距并且返回结果。
舵机和超声波测距自己找点资料学习

安装流程

1.调好舵机的位置,用502粘在垃圾桶内壁上,要注意让舵机转动一定角度后木棍正好能顶起盖子。arduino小玩具(一)_第1张图片
arduino小玩具(一)_第2张图片

2.还要注意盖子被顶起后没了木棍的支撑还能自由落下。

代码及连线

//接线
//1.蓝色的舵机:最多一次转180度 当设定的角度值大于180时转动的角度值仍是180度
//红色线   接   VIN
//棕色线   接   GND
//黄色线   接   数字引脚9

//超声波测距模块
//GND  接 GND
//VCC  接 5V
//Trig 接 2   输入输出模式:OUTPUT
//Echo 接 3   输入输出模式:INPUT
#include 

Servo myservo;  // 定义Servo对象来控制

const int TrigPin = 2; //发出超声波
const int EchoPin = 3; //收到反射回来的超声波
int a=0;
int cm;
void setup() {
  myservo.attach(9);  // 控制线连接数字9
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT); 
  pinMode(EchoPin, INPUT); 
  
}

void loop() {
  digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin 
  delayMicroseconds(2);       // delayMicroseconds是微秒延时在更小的时间内延时准确
  digitalWrite(TrigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射
  cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm 
  cm = (int(cm * 100.0)) / 100.0; //保留两位小数 这里是100 三位小数则是1000
  Serial.print("Distance:"); 
  Serial.print(cm); 
  Serial.print("cm");
  Serial.println(); 
  delay(100); 
  if(cm<=10){
    a=1;
  }
  if(cm>10){
    a=0;
  }
  
  if(a==1){
    myservo.write(0);//逆时针转90度
     delay(1000);
  }
  if(a==0){
    myservo.write(180);//顺时针转90度回到0度的地方
    delay(1000);
  }  

}

成品图arduino小玩具(一)_第3张图片

B站参考链接

【教你快速做一个Arduino智能垃圾桶,附源码!!!-哔哩哔哩】 https://b23.tv/2W6Z2fk

你可能感兴趣的:(Arduino小玩具,单片机)