一:开发环境 Arduino
上电后不断执行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 <Servo.h>
#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以内垃圾桶开盖,蜂鸣器鸣响。
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 波再空气中的总厘米