营销策划公司取名大全,榆林seo,哪些网站可以接生意做,网站建设原则包括哪些参考#xff1a;基于Wemos的智能感应开盖垃圾桶——日记 作者#xff1a;9art0 发布时间#xff1a;2020-09-24 00:40:59 网址#xff1a;https://blog.csdn.net/GatoWong/article/details/108759063?spm1001.2014.3001.5501 1.项目软硬件平台及开发环境
1.1.硬件平台 1… 参考基于Wemos的智能感应开盖垃圾桶——日记 作者9art0 发布时间2020-09-24 00:40:59 网址https://blog.csdn.net/GatoWong/article/details/108759063?spm1001.2014.3001.5501 1.项目软硬件平台及开发环境
1.1.硬件平台 1.2.开发环境 1.3.安装USB转串口驱动
1.4.编辑使得编程文件仅供Wemos使用 1.5.查看是否编辑完成
2.Wemos玩蜂鸣器 void setup() {pinMode(D5, OUTPUT); //配置D5为输出端口
}void loop() {//上电后不断执行loop函数中的代码应将核心控制代码写入loop
//HIGH,LOW经过了宏定义digitalWrite(D5, HIGH); // 输出高电平蜂鸣器闭嘴delay(1000); //单位为ms,这一秒内都得闭嘴digitalWrite(D5, LOW); //输出低电平蜂鸣器吼起来delay(1000); //吼一秒延时期间蜂鸣器控制引脚属于低电平
}3.Wemos串口通信收发 下面学习Wemos几种函数 Serial——串口。APIApplication Programming Interface应用程序接口是一些预先定义的函数。在Wemos里函数经过高度封装。Serial.xxx类似于C一点后加函数即可调用。
3.1.初始化函数 3.2.串口发送函数 下面进行两个函数的应用
void setup() {Serial.begin(115200);//打开串口调用begin函数。begin(speed),speed为设置的波特率。
}void loop() {Serial.println(You are hansome!!!);//println串口输出数据并换行。
}编码前查看编译环境波特率是否与设定的一致
使用串口调试软件查看Wemos板的输出情况记得设置软件的波特率与代码设定的一致 ——————————————————————————————————————— 3.3.有数据到来函数 3.4.串口读取函数 下面进行两个函数的应用
void setup() {Serial.begin(115200);
}void loop() {if(Serial.available()0){//判断串口缓冲区状态if(Serial.read()6){//读取串口数据Serial.println(You are handsome!);}else {Serial.println(You are not handsome!);}}
}4.通过串口控制蜂鸣器的响与不响
void setup() {Serial.begin(115200); //串口通信首先设置波特率pinMode(D5,OUTPUT); //将D5设置为输出状态digitalWrite(D5,HIGH); //另D5输出高电平一上电使得蜂鸣器不响
}void loop() {if(Serial.available()0){ //如果串口来数据了if(Serial.read() 1){ //而且到来的数据是数字1Serial.println(DEE!!!); digitalWrite(D5,LOW); //D5输出低电平让蜂鸣器响}else{Serial.println(HUSH~); digitalWrite(D5,HIGH);//D5输出低电平让蜂鸣器不响}}}5.模块接线 6.SG90舵机开盖调试
6.1.舵机参数及其调用函数
servo库是arduino的舵机函数库 6.2.舵机开盖测试
#includeServo.h //头文件为Servo#define DUOPIN D5 //把引脚D5命名为DUOPINServo SG90; //把Servo类函数命名为SG90为C代码。void setup() {SG90.attach(DUOPIN);//调用attach函数连接舵机即连接引脚DUOPIN
}void loop() {SG90.write(0);//控制舵机转到0°位置delay(1000);//延时1秒SG90.write(90);//控制舵机转到90°位置delay(1000);
}6.3.串口控制舵机开盖
#includeServo.h //头文件为Servo#define DUOPIN D5 //把引脚D5命名为DUOPIN//记得不要加分号Servo SG90; //把Servo类函数命名为SG90为C代码。void setup() {SG90.attach(DUOPIN);//调用attach函数连接舵机即连接引脚DUOPINSerial.begin(115200);
}void loop() {if(Serial.available()0){if(Serial.read()1){SG90.write(0);//控制舵机转到0°位置}}if(Serial.read()0){SG90.write(90);//控制舵机转到90°位置}}//别用else单单用else会包括除条件以外的所有情况不会保持开或盖的状态。//能保持开或者盖的状态的只有不断循环if函数7.超声波测距
7.1.超声波模块介绍
7.2.超声波模块测距原理 全程耗时为接收模块ECHO的高电平持续时间 结论超声波走过1厘米的时间为29.15微秒
7.3.超声波测距代码
#define Echo D2
#define Trig D8long getTime(){ //long是整型digitalWrite(Trig,HIGH);//Trig输出高电平delayMicroseconds(10);//维持10微秒digitalWrite(Trig,LOW);//Trig降为低电平引起一次脉冲触发return pulseIn(Echo,HIGH);//返回ECHO处于高电平的时间获取全程耗时
}void setup() {pinMode(Echo,INPUT);//一开始先回声接收装置打开进入接收状态inputpinMode(Trig,OUTPUT);//发射装置打开给予触发信号进入待输出状态ouputSerial.begin(115200);//用到了串口通信
}void loop() {long distance;distancegetTime()/58;//因为经过29.15微秒超声波走过1厘米物距声波路程/2Serial.print(distance);//打印物距数值Serial.println(cm);//打印单位delay(500);//等500微秒后进行下一次测距
}8.项目代码整合
#includeServo.h #define Echo D2//把引脚D2命名为Echo//记得不要加分号
#define Trig D8//把引脚D8命名为Trig
#define DUOPIN D5//把引脚D5命名为DUOPIN
Servo SG90; //把Servo类函数命名为SG90为C代码。long getTime(){ //long是整型digitalWrite(Trig,HIGH);//Trig输出高电平delayMicroseconds(10);//维持10微秒digitalWrite(Trig,LOW);//Trig降为低电平引起一次脉冲触发return pulseIn(Echo,HIGH);//返回ECHO处于高电平的时间获取全程耗时
}void setup() {pinMode(Echo,INPUT);//一开始先回声接收装置打开进入接收状态inputpinMode(Trig,OUTPUT);//发射装置打开给予触发信号进入待输出状态ouputSG90.attach(DUOPIN);//调用attach函数连接舵机即连接引脚DUOPINSerial.begin(115200);//用到了串口通信
}void loop() {long distance;distancegetTime()/58;//因为经过29.15微秒超声波走过1厘米物距声波路程/2if(distance10){SG90.write(0);//控制舵机转到0°位置delay(2000);//延时两秒}else SG90.write(90);//控制舵机转到90°位置}