提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助檔案
通過WeMos D1開發板、SG90舵機、超聲波模組、蜂鳴器,實現垃圾箱蓋子的自動開合。
特性
1.基於ESP-8266EX
2.Arduino相容,使用rduino IDE來程式設計
3.11 x I/O 引腳
4.1 x ADC 引腳(輸入範圍0-3.3V)
5.板載5V 1A開關電源(高輸入電壓24V)
工作中:
和stm32模組開發類似,整合度高
STM32方案也更經濟便宜
4.1檢查是否連線完成
//基礎控制:蜂鳴器叫喚和不叫喚
void setup()
{
pinMode(D5, OUTPUT); //設定引腳為輸出引腳
}
void loop()
{
digitalWrite(D5, HIGH); // 輸出高電平,蜂鳴器閉嘴
delay(1000); //這一秒內都得閉嘴
digitalWrite
串列埠有關的函數:
串列埠與wemos的簡單通訊:
串列埠控制蜂鳴器程式碼:
#define BEEP D5
void setup() {
Serial.begin(115200); //初始化串列埠,設定波特率為115200
pinMode(BEEP, OUTPUT); //設定引腳為輸出引腳
digitalWrite(BEEP, HIGH); // 上電不讓蜂鳴器響起
}
void loop()
{
int cmd;
if ( Serial.available() > 0 )
{ //檢測串列埠是否有資料
cmd = Serial.read(); // 讀取串列埠資料
Serial.println(cmd);
if (cmd == 1) { //如果讀取的資料是1
digitalWrite(BEEP, LOW); // 蜂鳴器響起
}
else
{
digitalWrite(BEEP, HIGH); // 否則(讀取資料非1)蜂鳴器不響
}
}
}
3.1舵機引數及其呼叫函數
3.2舵機開蓋測試
#include<Servo.h> //標頭檔案為Servo
#define DUOPIN D5 //把引腳D5命名為DUOPIN
Servo 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);
}
HC-SR04超聲波識別模組介紹
超聲波測距程式設計實現(距離小於10觸發蜂鳴器發出聲音):
#define Echo D2
#define Trig D8
#define BEEP D5
long getTime()
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH);
}
void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void initBeep()
{
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
}
void setup()
{
initChaoShengBo();
initBeep();
Serial.begin(115200);
}
void loop()
{
//獲取距離
long dis;
dis = getTime()/58;
Serial.print(dis);
Serial.println(「cm」);
if(dis < 10)
{
digitalWrite(BEEP,LOW);
}
else
{
digitalWrite(BEEP,HIGH);
}
delay(500);
}
void setup() {
pinMode(D5, OUTPUT); //設定D5為輸出埠
}
void loop() {//上電後不斷執行loop函數中的程式碼,應將核心控制程式碼寫入loop
//HIGH,LOW經過了宏定義
digitalWrite(D5, HIGH); // 輸出高電平,蜂鳴器閉嘴
delay(1000); //單位為ms,這一秒內都得閉嘴
digitalWrite(D5, LOW); //輸出低電平,蜂鳴器吼起來
delay(1000); //吼一秒(延時期間,蜂鳴器控制引腳屬於低電平)
}
5.1通過串列埠控制蜂鳴器的響與不響
void setup() {
Serial.begin(115200); //串列埠通訊,首先設定波特率
pinMode(D5,OUTPUT); //將D5設定為輸出狀態
digitalWrite(D5,HIGH); //另D5輸出高電平,一上電使得蜂鳴器不響
}
void loop() {
if(Serial.available()>0){ //如果串列埠來資料了
if(Serial.read()== 1){ //而且到來的資料是數位1
Serial.println("DEE!!!");
digitalWrite(D5,LOW); //D5輸出低電平,讓蜂鳴器響
}
else{
Serial.println("HUSH~");
digitalWrite(D5,HIGH);//D5輸出低電平,讓蜂鳴器不響
}
}
}
#include<Servo.h>
#define Trig D8
#define Echo D2
#define duoji D5
Servo myduoji;
long init_chaoshengbo()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
long gettime()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);
}
void setup()
{
init_chaoshengbo();
myduoji.attach(duoji);
pinMode(duoji, OUTPUT);
}
void loop()
{
long dis;
dis = gettime() / 58;
if (dis < 10)
{
myduoji.write(160);
}
else
{
myduoji.write(30);
}
}
製作完成後可通過移動電源供電使用,當垃圾桶前部指定範圍內出現物體時,桶蓋自動開啟,此時可以將物品放入桶內,延時一定時間後,桶蓋自動關閉。若垃圾桶前部指定範圍內始終有物體存在,桶蓋將保持開啟狀態。