項目一感應垃圾桶(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);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker刪除本地所有鏡像

docker rmi -f ${docker images -qa}

PAT1069. The Black Hole of Numbers

//這是到水題&#xff0c;之前因為四位數的原因一直不能A&#xff0c;看了別人的程序&#xff0c;才明白&#xff0c;不夠四位的時候沒考慮到&#xff0c;坑啊。。。。。臉打腫 #include<cstdio>#include<algorithm>using namespace std;int main(){ //freopen(&qu…

WiFi避障小車

硬件清單&#xff1a; Wemos D1&#xff08;支持AP模式也就是路由模式和STA模式也就是上網設備&#xff09;、超聲波模塊、小車、L9110s步進電機控制器 軟件&#xff1a; eclipse、arduino IDE WiFi配置參考博文 ESP8266WiFi庫: 從上圖中可以看出ESP8266WiFi庫主要包含Stati…

yum常用命令整理

yum命令的形式一般如下。要說明的是以下演示中所使用到的PACKAGE、GROUP都是變量&#xff0c;需要保證運行yum命令的主機能連接外網&#xff0c;否則大部分命令將由于沒有網絡連接而不能輸出結果。yum [options] [command] [package]#以下演示中大寫的單詞是變量1.安裝操作yum …

CSS3 2D 轉換

CSS3 2D 轉換 先看兼容性 transform屬性向應用元素應用2d 或者 3d裝換&#xff1b;該屬性允許我們進行旋轉&#xff0c;縮放&#xff0c;移動或者傾斜&#xff1b; 基本語法&#xff1a; transform: none|transform-functions;transform-function&#xff1a;這東東有n的函數可…

程序猿最喜歡說的30句話

雖然代碼總會有這個那個問題&#xff0c;但程序猿卻總有謎一般的從容和自信。上圖來自&#xff1a;《當程序出問題時程序員最喜歡說的30句話》來看看程序猿經常說的話&#xff1a;1、在我的電腦上是正常的啊。。。2、不可能出現這種情況的3、快了&#xff0c;已經完成了90%。4、…

linux環境下Ncurses實現貪吃蛇游戲

游戲說明&#xff1a; linux環境下基于Ncurses圖形庫的C語言小游戲。 Ncurses介紹&#xff1a; Ncurses(new curses)是一套編程庫&#xff0c;它提供了一系列的函數以便使用者調用它們去生成基于文本的用戶界面。 Ncurses是一個能提供功能鍵定義(快捷鍵),屏幕繪制以及基于文本…

韓順平循序漸進學java 第13講 抽象類.接口

13.1抽象類 13.1.1 概念 當父類的一些方法不能確定時&#xff0c;可以用abstract關鍵字來修飾該方法&#xff0c;稱為抽象方法&#xff0c;用abstract來修飾該類&#xff0c;稱為抽象類。 13.1.2 抽象類-深入討論 抽象類是java中一個比較重要的類&#xff1a; 1、用abstract關鍵…

C#實現簡體繁體轉換代碼示例

//簡體轉繁體 public static string _ConvertChinTrad(string strInput) { EncodeRobert edControl new EncodeRobert(); string strResult ""; if (strInput null) return strResult; if (strInput.ToString().Length > 1) strResult edControl.SCTCConvert(…

java基礎JDK的安裝和環境變量的配置

JRE和JDK&#xff1a; JRE是java程序運行時環境&#xff0c;包含JVM&#xff08;相當于java在不同操作系統上運行時java和操作系統之間的翻譯&#xff0c;保證java程序的跨平臺&#xff09;和運行時所需要的核心庫。所以我們想要運行一個已有的java程序&#xff0c;那么只需要…

C#通過SMTP發送郵件代碼示例

1、新建SMTP.cs類庫文件 public class SMTP { /// <summary> /// SMTP服務器 /// </summary> public string smtp { get; set; } /// <summary> /// SMTP服務器端口 /// </summary> public int port { get; set; } /// <summary> /// 發件人 ///…

docker下載tomact

docker run -it -p 8080:8080 tomcat 比如下載tomcat,你現在去訪問&#xff0c;先訪問docker里面的tomcat, 左邊的8080是對外暴露的服務端口&#xff0c;對應著右邊的8080是tomact的實際端口 下載tomcat 啟動tomcat docker run -it -p 8080:8080 tomcat

Wijmo 2016年藍圖

2015年很快就過去了&#xff0c;這是 Wijmo 重要的一年&#xff0c;尤其是對 Wijmo5。脫離傳統的小部件&#xff0c;重新寫一套 JS 控件&#xff0c;現在看來這個決定是正確的。用 TypeScript 寫 Wijmo5&#xff0c;意味著我們沒有任何依賴&#xff0c;不再需要 jQuery&#xf…

IDEA安裝和運行HelloWorld

IDEA安裝&#xff1a; IDEA中Hello World步驟&#xff1a; ① ②點擊創建空項目&#xff0c;下一步 ③ ④在打開后會彈出以下界面&#xff0c;然后點擊新建模塊 ⑤點擊新建模塊后出現以下界面&#xff0c;選擇java并選擇JDK的安裝路徑。 ⑥然后修改模塊名稱&#xff0c;點擊…

C#獲取電腦IP、MAC地址示例代碼

/// <summary> /// 使用 C# 自帶的類庫實現計算機信息獲取 /// </summary> public class DefaultDeviceInfo { public virtual string GetCpuId() { try { string cpuInfo " "; ManagementClass cimobject new ManagementClass("Win32_Processor…

docker運行隨機分配端口

docker run -d -it -P tomcat -P這個是大寫的P&#xff0c;表示隨機分配端口 執行后可以看到32768為隨機分配的端口&#xff0c;8080是tomcat端口 測試成功

C# Stream 和 byte[] 之間的轉換

/// <summary> /// 將 Stream 轉成 byte[] /// </summary> public byte[] StreamToBytes(Stream stream) { byte[] bytes new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 設置當前流的位置為流的開始 stream.Seek(0, SeekOrigin.Begi…

docker下如何進入到容器中

1:查看容器 docker ps -a 2:進入容器 docker exec -it e3cc80415dc7 /bin/bash 退出容器 exit