基于wemos的智能感应垃圾桶

一:开发环境 Arduino

基于wemos的智能感应垃圾桶_第1张图片

上电后不断执行loop函数中的代码,我们核心控制代码写入loop

 

setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi

 

void setup() {

}

 

void loop() {

}

void setup() {
             pinMode(D5, OUTPUT); //设置引脚为输出引脚
}

void loop() {
digitalWrite(D5, HIGH);     // 输出高电平,蜂鸣器闭嘴
delay(1000);		//这一秒内都得闭嘴
digitalWrite(D5, LOW);     //输出低电平,蜂鸣器吼起来
delay(1000);		//吼一秒(延时期间,蜂鸣器控制引脚属于低电平)
}

pinMode()

通过pinMode()函数,你可以对Arduino的引脚配置

       输出(OUTPUT)模式

       输入(INPUT)模式

digitalWrite()

将数字引脚写HIGH(高电平)或LOW(低电平)

delay()

延时函数;

#include 
#define DuoPIN D5
#define BEEF D6
#define Echo D2
#define Trig D8
Servo myDuoji;
void intChaoShenBo() //初始化超声波
{
  pinMode(Echo, INPUT); //定义输入端口
  pinMode(Trig, OUTPUT); //定义输出端口
}
long getTime() //获取距离
{
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);
  return pulseIn(Echo, HIGH);
}
void setup() {
  intChaoShenBo();
  myDuoji.attach(DuoPIN); //连接舵机
  pinMode(BEEF,OUTPUT); //定义IO口
  digitalWrite(BEEF,HIGH); //初始化
  Serial.begin(115200);//开启串口,设置波特率。
  
}

void loop() {
  //获取距离
  long dis;
  dis = getTime() / 58;
  Serial.print(dis); // 打印获取的距离。
  Serial.println("cm");
  if (dis < 10) {
    myDuoji.write(110+);
    digitalWrite(BEEF,LOW);
    delay(1000);
  }
  else
  {
   myDuoji.write(180);
   digitalWrite(BEEF,HIGH); 
   }
  

}

代码实现功能:当物品靠近超声波测距感应器10CM以内垃圾桶开盖,蜂鸣器鸣响。

基于wemos的智能感应垃圾桶_第2张图片

delayMicroseconds()  函数在Arduino中在短时间延时中更准确

pulseIn()Arduino中的API  测得某的IO口维持高|低电平的时间

/58原理:

343m/s

34300/s

0.0343cm/us   0.0343cm耗时1us

  1us能走多少厘米 29.15

 

Pulseln(Echo ,HIGH)   time

Time/58.3 波再空气中的总厘米

你可能感兴趣的:(笔记,经验分享)