日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目一感应垃圾桶(Wemos)

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目一感应垃圾桶(Wemos) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

硬件材料:
Wemos D1、SG90舵機、HC-SR04、杜邦線若干、蜂鳴器3.3V(可有可無)

軟件材料:
arduino IDE編譯器、USB轉串口驅動

Wemos D1:
特性:

  • 基于ESP-8266EX及arduino做的一個融合
  • arduino兼容,使用arduino IDE編程
  • 11個IO口
  • 一個ADC轉換引腳(輸入范圍0~3.3V),ADC通常用在光照的采集或者人體的模擬量轉換的應用。本項目沒有使用該功能。
  • 板載5V1A開關電源,集成度高。

arduino IDE:
優點:集成很多開發庫,如串口、網絡,SG90等各種硬開發接口,迅速開發,自帶串口調試工具。
缺點:程序編譯速度慢。
注意:本次使用的單片機是Wemos D1,若在開發板里找不到Wemos D1就要在開發板管理器中下載,搜索D1就可以看到ESP8266了,然后安裝即可。

蜂鳴器:
低電平觸發,也就是將蜂鳴器的IO口設置為輸出端口,IO口輸出高電平不響,IO口輸出低電平響。

驅動蜂鳴器滴滴響:

void setup() {//這個函數里放的是初始化的內容,程序只跑一次pinMode(D5,OUTPUT);//初始化蜂鳴器的IO口為輸出模式 }void loop() {digitalWrite(D5,LOW);//輸出低電平,蜂鳴器響delay(1000);//延時1000ms=1sdigitalWrite(D5,HIGH);//輸出高電平,蜂鳴器不響delay(1000);//延時1000ms=1s }

SG90舵機:

  • 紅色電壓線
  • 棕色地線
  • 橙色信號線
  • 無負載速度:0.12s/60度(4.8V)
  • 堵轉扭矩:1.2~1.4公斤/厘米(4.8V)
  • 工作電壓:4.8~6V

HC-SR04超聲波模塊:

  • 超聲波傳感器上面通常帶有兩個超聲波元器件,一個用于發射,一個用于接收。電路板上有4個引腳:VCC(正極)、Trig(觸發)、Echo(回應)、GND(接地)。
  • 工作電壓與電流:5V、15mA
  • 感測距離:2~400cm
  • 感應角度:不大于15度
  • 在超聲波模塊的觸發腳位輸入10微妙以上的高電位,即可以發射超聲波,發射超聲波以后,與接收到傳回的超聲波之前,響應位呈現高電位。因此,程序可以從“響應”腳位的高電位脈沖持續時間,換算出被測物體的距離。

超聲波部分代碼:

#define Echo D2 #define Trig D8 int getTime()//超聲波發生函數 {digitalWrite(Trig,HIGH);delayMicroseconds(10);//延時10usdigitalWrite(Trig,LOW);return pulseIn(Echo,HIGH);//計算某個引腳高電平持續的時間,單位是us } void initChaoShengBo()//超聲波初始化函數 {pinMode(Echo,INPUT);//設置Echo引腳為輸入引腳pinMode(Trig,OUTPUT);//設置Trig引腳為輸出引腳 } void setup() {//這個函數里放的是初始化的內容,程序只跑一次Serial.begin(9600);initChaoShengBo();//在初始化中調用超聲波初始化函數 }void loop() {int dis;//超聲波測試的距離dis=getTime()/58;//計算距離Serial.print(dis);Serial.println("cm");delay(500); } /* dis=getTime()/58; 關于距離除以58的說明: 波在空氣中傳播的速度是:343米每秒,也就是343000厘米每秒。根據公式1000000us=1s得0.0343厘米/微妙,再換一個角度,1/(0.0343厘米/微妙)即:29.15微妙/厘米,表示1厘米就是29.15微妙。但是聲波走過的距離是二倍,所以除以58就是實際距離。 */

SG90舵機部分控制代碼:

#include <Servo.h> #define DuoPin D5//將D5紅定義為DuoServo myDuoJi;//這是舵機的一個類 void setup() {//這個函數里放的是初始化的內容,程序只跑一次Serial.begin(115200);myDuoJi.attach(DuoPin);//將舵機連接到D5這個引腳 }void loop() {myDuoJi.write();//里面的參數是想要旋轉的度數0~180 }

Wemos D1和PC串口通信:

void setup() {//這個函數里放的是初始化的內容,程序只跑一次Serial.begin(115200); }void loop() {Serial.println("hello!");//單片機向電腦發送hello! }Serial.begin(); 描述:開啟串口。 原型:Serial.begin(speed);Serial.begin(speed,config);speed:波特率,一般取值9600115200(就相當于人說話的語速,通信時要保持波特率一至)config:設置數據位、停止位和校驗位。默認SERIAL_8N1表示8個數據位,無校驗位,1個停止位。 返回值:無Serial.println() 描述:串口輸出數據并換行 原型:Serial.println(val)val:打印的值,任意數據類型Serial.available() 描述:判斷串口緩沖區的狀態,返回串口緩沖區讀取的字節數 原型:Serial.available() 參數:無 返回值:可讀取的字節數。Serial.read() 描述:讀取串口數據,一次讀一個字符,讀完后刪除已讀數據 原型:Serial.read() 參數:無 返回值:返回串口緩存中第一個可讀字節,當沒有可讀數據時返回-1,整數類型

代碼綜合實現效果:

#include <Servo.h> #define DuoPin 4 #define Echo D2 #define Trig D8 Servo myduoji; int getTime()//超聲波發生函數 {digitalWrite(Trig,HIGH);delayMicroseconds(10);//延時10usdigitalWrite(Trig,LOW);return pulseIn(Echo,HIGH);//計算某個引腳高電平持續的時間,單位是us } void initChaoShengBo()//超聲波初始化函數 {pinMode(Echo,INPUT);//設置Echo引腳為輸入引腳pinMode(Trig,OUTPUT);//設置Trig引腳為輸出引腳 } void setup() {initChaoShengBo();myduoji.attach(DuoPin);//連接舵機Serial.begin(115200);//確定串口的波特率myduoji.write(98); }void loop() {int dis;dis=getTime()/58;//計算手與超聲波的距離Serial.println(dis);delay(500);if (dis<10) {myduoji.write(98);delay(1000);}else{myduoji.write(180);} }

總結

以上是生活随笔為你收集整理的项目一感应垃圾桶(Wemos)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。