精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Arduino上使用傳感器:創(chuàng)建一個(gè)可以檢測(cè)運(yùn)動(dòng)并作出響應(yīng)的簡(jiǎn)單設(shè)備

好名字 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-22 17:53 ? 次閱讀

超聲波傳感器是一種簡(jiǎn)潔的多功能傳感器,可以應(yīng)用到您的Arduino項(xiàng)目中。顧名思義,它利用超聲波來檢測(cè)出現(xiàn)的物體以及物體的距離。這種設(shè)備可用于動(dòng)作識(shí)別,或者在檢測(cè)范圍內(nèi)出現(xiàn)目標(biāo)對(duì)象時(shí)作出響應(yīng)。
poYBAGPy0zeAIaQzAAAsR-phffs564.jpg
當(dāng)然,您也許會(huì)想知道的是Arduino超聲波傳感器究竟是如何工作的?
為了描述它的工作原理,本指南將向您展示如何使用超聲波傳感器來組裝一個(gè)簡(jiǎn)單的樂器。

HC-SR05, 它是舊版HC-SR04的5引腳升級(jí)版本。該設(shè)備具有兩個(gè)圓柱形模塊。一個(gè)是發(fā)出超聲波信號(hào)的發(fā)射器,另一個(gè)是接收器,會(huì)捕獲到達(dá)物體后反彈回來的信號(hào)。通過測(cè)量信號(hào)返回的時(shí)間,傳感器可以計(jì)算出物體的距離。
雖然其他傳感器(如被動(dòng)紅外線運(yùn)動(dòng)傳感器)也具有類似的功能,但是超聲波傳感器的功用更強(qiáng),因?yàn)樗鼓捻?xiàng)目不僅可以檢測(cè)到面前經(jīng)過的物體,還可以區(qū)分出不同物體的距離遠(yuǎn)近。
我們使用這種技術(shù)來創(chuàng)建一個(gè)浮動(dòng)的樂器。該項(xiàng)目不是通過按下鋼琴鍵來彈奏音符,而是讓您把一個(gè)物體—比如一根棍子或者您的手指—放在傳感器前面,根據(jù)物體與傳感器之間的距離來播放不同的音符。這并不能打造出鋼琴的效果,但是通過創(chuàng)建該項(xiàng)目,您可以了解能用這款便利的Arduino聲音傳感器來做什么。

所需組件

為了創(chuàng)建該項(xiàng)目,您需要具備以下組件:

Arduino Uno pYYBAGPy0keAIANsAAA5UDjpMbU093.png
HC-SR05 超聲波傳感器 (可以使用HC-SR04或其他超聲波傳感器,但需要修改引腳配置) pYYBAGPy0zyAIzCAAAC3NAOMgZY743.png
Arduino IDE pYYBAGPy0z-AK5_qAACbWr_AuR4163.png

您還需要使用以下硬件,都是比較通用的設(shè)備:
揚(yáng)聲器: 大多數(shù)簡(jiǎn)單的揚(yáng)聲器模塊都可以,本項(xiàng)目使用的是該款簡(jiǎn)單的單聲道揚(yáng)聲器。
USB 電纜 如果您還沒有設(shè)置Arduino IDE,可以先查閱我們之前發(fā)布的指南。

代碼

首先,我們先來看一下要上傳到Arduino Uno的代碼,了解將要執(zhí)行的操作。
void setup() {
pinMode (6,OUTPUT); //Insert HC-SR-05 with VCC in pin 6
pinMode (5, INPUT); // Assign pin 5 to Echo
pinMode (4, OUTPUT);// Assign pin 4 to Trig
pinMode (2,OUTPUT); // Assign pin 2 to GND.
Serial.begin(9600); // This will allow you to read how far away your sensor is later
}
void loop()
{
long duration, cm; // Initialize variables for duration and cm
digitalWrite(6, HIGH); // Power the sensor
digitalWrite(4, LOW); // Clear pulse before sending a 10 microsecond ping,
delayMicroseconds(2);
digitalWrite(4, HIGH);
delayMicroseconds(10);
digitalWrite(4, LOW);
duration = pulseIn(5, HIGH); // Detect pulse length from the Echo pin, measured in microseconds
cm = (duration/2)/29.155; // Divide duration in half (due to round trip), then convert distance to centimeters (1cm per 29.155 microseconds), assign to cm variable
Serial.print(cm); // Print distance in cm to serial monitor
Serial.print(“cm”);
Serial.println();
delay(100); // Delay
int note = 0; // Assign note based on distance, spacing notes per 6cm
if(cm<=48&&cm>42) {
note = 523;
} else if(cm<=42&&cm>36) {
note = 493;
} else if(cm<=36&&cm>30) {
note = 440;
} else if(cm<=30&&cm>24) {
note = 392;
} else if(cm<=24&&cm>18) {
note = 349;
} else if(cm<=18&&cm>12) {
note = 329;
} else if(cm<=12&&cm>6) {
note = 294;
} else if(cm<=6) {
note = 261;
}
if (note == 0) { // If distance isn’t within 48cm, play nothing noTone(9);
} else {
tone(9, note, 200); // Play assigned note for 200 milliseconds
}
delay(10); // Brief pause
}
您可以將上述代碼復(fù)制到您的IDE中,將其上傳到Uno,如果您想運(yùn)行該代碼,可以繼續(xù)進(jìn)行下一部分,但是這部分的代碼很重要,有必要對(duì)其進(jìn)行分析和理解。首先:
digitalWrite(6, HIGH); // Power the sensor
digitalWrite(4, LOW); // Clear pulse before sending a 10 microsecond ping,
delayMicroseconds(2);
digitalWrite(4, HIGH);
delayMicroseconds(10);
digitalWrite(4, LOW);
duration = pulseIn(5, HIGH); // Detect pulse length from the Echo pin, measured in microseconds
cm = (duration/2)/29.155; // Divide duration in half (due to round trip), then convert distance to centimeters (1cm per 29.155 microseconds), assign to cm variable
這部分的操作是在Trig引腳上發(fā)出40KHz脈沖。這種超聲波信號(hào)會(huì)在它接觸的所有物體上發(fā)生反射,然后返回到接收器。
接下來,pulseIn() 函數(shù)測(cè)量從脈沖離開傳感器到接收器檢測(cè)到返回信號(hào)所用的時(shí)間,單位為微秒。
然后將該時(shí)間除以2,因?yàn)檫@是信號(hào)往返花費(fèi)的總時(shí)間。這為我們提供了40KHz聲音傳播到物體所需的微秒數(shù)。由于聲音傳播1厘米大約需要29.155微秒,所以我們可以將計(jì)算出的時(shí)間除以29.155。以此我們就可以計(jì)算出目標(biāo)對(duì)象的距離,單位為厘米,然后將該距離值分配給cm變量。
接下來的幾行代碼會(huì)將距離(以厘米為單位)打印到串行監(jiān)視器,這有助于確認(rèn)代碼運(yùn)行正常,并便于我們?cè)谶\(yùn)行程序時(shí)查看物體的距離。
代碼的最后主要相關(guān)部分是這樣的:
int note = 0; // Assign note based on distance, spacing notes per 6cm
if(cm<=48&&cm>42) {
note = 523;
} else if(cm<=42&&cm>36) {
note = 493;
} else if(cm<=36&&cm>30) {
note = 440;
} else if(cm<=30&&cm>24) {
note = 392;
} else if(cm<=24&&cm>18) {
note = 349;
} else if(cm<=18&&cm>12) {
note = 329;
} else if(cm<=12&&cm>6) {
note = 294;
} else if(cm<=6) { note = 261;
}
if (note == 0) { // If distance isn’t within 48cm, play nothing noTone(9);
} else {
tone(9, note, 200); // Play assigned note for 200 milliseconds
}
該代碼塊將根據(jù)物體的距離為揚(yáng)聲器分配一個(gè)頻率。 此Arduino參考文檔 列出了一系列音符的頻率,我們將以此作為參考。 使用 if else 語(yǔ)句 來根據(jù)目標(biāo)對(duì)象的距離(以6cm為增量)為音符變量分配一個(gè)頻率,可在整個(gè)八度音階范圍內(nèi)提供八個(gè)音符。如果沒有檢測(cè)到任何物體,音符變量值為0。
在最后一部分中,tone() 函數(shù) 用來播放音符,如果48cm內(nèi)沒有檢測(cè)到物體,noTone()函數(shù) 將會(huì)停止前一個(gè)聲音的播放。在開始循環(huán)之前的最后一個(gè)指令是delay()。這些延遲有助于避免程序更改音符過快,因?yàn)閭鞲衅鞯木_度沒有那么高。
pYYBAGPy00GAMvz_AAA3-GGLMNs560.jpg

接線

了解了代碼如何運(yùn)行之后,您就可以將其上傳到Arduino Uno上了,然后拔掉設(shè)備。現(xiàn)在,是時(shí)候?qū)⑺鼈冞B接起來了。我們已經(jīng)完成了代碼的編寫以盡可能簡(jiǎn)化該過程。您所要做的就是按照以下步驟進(jìn)行操作:
● 將HC-SR05傳感器插入數(shù)字引腳2到6,GND插入引腳2,VCC插入引腳6。這樣連接可以使傳感器朝向外側(cè),遠(yuǎn)離Arduino。
● 將揚(yáng)聲器上的正極線(通常為紅色)插入引腳9。
● 將另一根揚(yáng)聲器線(通常為黑色)插入其中一個(gè)GND引腳。 連接好所有電線好,插入Arduino,并在傳感器前留出大約50厘米的空間。接下來是最有趣的部分。將您的手或者一根小棍子放在傳感器前面,您會(huì)聽到揚(yáng)聲器發(fā)出的聲音。物體放置的越遠(yuǎn),音調(diào)越高。
您可以嘗試使用delay()tone()所帶來的持續(xù)時(shí)間使聲音聽起來更平滑,或調(diào)整頻率值以獲得不同的音符。該傳感器還可以用作報(bào)警器,以在物體進(jìn)入一定范圍內(nèi)的區(qū)域時(shí)發(fā)出警報(bào),或者當(dāng)您的手處于某一距離范圍內(nèi)時(shí)向您的計(jì)算機(jī)發(fā)送指令。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 編輯團(tuán)隊(duì)

設(shè)備升級(jí)版適用于所有熱愛電子和機(jī)電一體化的人。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2548

    文章

    50740

    瀏覽量

    752148
  • 超聲波
    +關(guān)注

    關(guān)注

    63

    文章

    2991

    瀏覽量

    138250
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6464

    瀏覽量

    186683
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    推薦個(gè)運(yùn)動(dòng)傳感器IC型號(hào)?

    我這個(gè)產(chǎn)品是智能卡車掛鎖,帶GPS定位,當(dāng)車處于運(yùn)動(dòng)狀態(tài)時(shí),運(yùn)動(dòng)傳感器發(fā)個(gè)信號(hào)給CPU啟動(dòng)GPS功能,就這個(gè)功能;我找的都是加速度
    發(fā)表于 07-27 17:44

    觸摸/距離傳感器能用于檢測(cè)手勢(shì)嗎?

    )。手指對(duì)角移動(dòng),然后以半圈順時(shí)針和逆時(shí)針移動(dòng)。很明顯,個(gè)簡(jiǎn)單的軟件算法可詮釋手勢(shì)的方向并作出相應(yīng)的反應(yīng)。想了解更多詳情?請(qǐng)?jiān)L問我們的網(wǎng)站,您可找到關(guān)于觸摸距離
    發(fā)表于 10-19 08:57

    ST多軸運(yùn)動(dòng)傳感器模塊實(shí)現(xiàn)精確的運(yùn)動(dòng)檢測(cè)功能

      意法半導(dǎo)體(紐約證券交易所代碼:STM), 模塊內(nèi)成功集成個(gè)3軸數(shù)字加速傳感器
    發(fā)表于 11-14 16:36

    TheUMS與Wi-Fi相結(jié)合的超小型雷達(dá)運(yùn)動(dòng)檢測(cè)傳感器

    該雷達(dá)運(yùn)動(dòng)檢測(cè)傳感器款尺寸為15x15mm的超小型產(chǎn)品,面積僅為硬幣的60%,不僅可以使其發(fā)揮原有的功能,也可以添加多種功能將其擴(kuò)展為復(fù)
    發(fā)表于 03-14 13:49

    【開源分享】帶有 Arduino 接口的火災(zāi)報(bào)警傳感器

    板設(shè)計(jì):對(duì)于制造,我已將原理圖文件轉(zhuǎn)換為 PCB 文件。在這里,我可以以 3D 形式查看我的電路板、檢查錯(cuò)誤并編輯電路板的形狀。Arduino代碼:我創(chuàng)建
    發(fā)表于 06-30 16:12

    自制個(gè)Arduino Pcb

    和專業(yè)人士提供種低成本和簡(jiǎn)單的方法來創(chuàng)建與其交互的設(shè)備使用傳感器和執(zhí)行的環(huán)境。面向初學(xué)者的此
    發(fā)表于 07-21 08:00

    使用Arduino控制來自運(yùn)動(dòng)傳感器的LED

    描述這塊板將用于我的樓梯照明項(xiàng)目,每個(gè)樓梯都有個(gè)這樣的模塊。我將使用 Arduino 來控制來自運(yùn)動(dòng)
    發(fā)表于 07-21 06:24

    利用Arduino讓機(jī)器人學(xué)會(huì)識(shí)別標(biāo)識(shí)并作出行為

    教你用Arduino讓機(jī)器人學(xué)會(huì)識(shí)別標(biāo)識(shí)并作出行為。你的人工智能小車從此有了眼睛!材料單:跟蹤機(jī)器人底盤視覺傳感器Arduino Uno電動(dòng)機(jī)驅(qū)動(dòng)板18650 Li-離子電池
    發(fā)表于 09-27 07:36

    個(gè)方向運(yùn)動(dòng)傳感器電路

    方向運(yùn)動(dòng)傳感器電路的基本原理很簡(jiǎn)單個(gè)傳感器是用來產(chǎn)生
    發(fā)表于 03-16 09:51 ?2088次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>方向<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>傳感器</b>電路

    如何構(gòu)建簡(jiǎn)單的PIR運(yùn)動(dòng)傳感器

    家庭,企業(yè)和家用電器中使用的小工具中找到。PIR通常稱為“被動(dòng)紅外”,“ IR運(yùn)動(dòng)”或“熱電”傳感器。它基本由熱釋電傳感器制成:中心為矩形晶體的圓形金屬罐
    的頭像 發(fā)表于 05-04 09:16 ?3861次閱讀
    如何構(gòu)建<b class='flag-5'>簡(jiǎn)單</b>的PIR<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>傳感器</b>

    如何使用運(yùn)動(dòng)檢測(cè)傳感器創(chuàng)建個(gè)鬧鐘

    我使用運(yùn)動(dòng)檢測(cè)傳感器創(chuàng)建個(gè)鬧鐘,這樣您就不能只是按下貪睡按鈕并重新入睡。
    發(fā)表于 07-21 17:31 ?2530次閱讀
    如何使用<b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b><b class='flag-5'>傳感器</b><b class='flag-5'>創(chuàng)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>鬧鐘

    通過Arduino構(gòu)建個(gè)簡(jiǎn)單的雨量檢測(cè)系統(tǒng)

    本教程中,我們將使用帶有蜂鳴器的 Arduino構(gòu)建個(gè)基本的雨量傳感器。然后,您可以使用此設(shè)
    發(fā)表于 08-19 14:55 ?4114次閱讀
    通過<b class='flag-5'>Arduino</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡(jiǎn)單</b>的雨量<b class='flag-5'>檢測(cè)</b>系統(tǒng)

    基于PIR傳感器運(yùn)動(dòng)檢測(cè)報(bào)警系統(tǒng)

    該系統(tǒng)使用 PIR 傳感器檢測(cè)運(yùn)動(dòng)并發(fā)送到 Arduino,然后同時(shí)觸發(fā)蜂鳴器和 LED。
    發(fā)表于 12-08 11:32 ?1次下載

    如何使用Arduino制作LED運(yùn)動(dòng)傳感器

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino制作LED運(yùn)動(dòng)傳感器.zip》資料免費(fèi)下載
    發(fā)表于 12-12 10:39 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>制作LED<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>傳感器</b>

    使用Arduino的帶有語(yǔ)音警報(bào)的運(yùn)動(dòng)傳感器

    運(yùn)動(dòng)傳感器警報(bào)市場(chǎng)上很容易獲得,但是價(jià)格昂貴。這是帶有語(yǔ)音警報(bào)的基于Arduino簡(jiǎn)單,廉價(jià)的運(yùn)動(dòng)
    的頭像 發(fā)表于 10-15 16:13 ?1145次閱讀
    使用<b class='flag-5'>Arduino</b>的帶有語(yǔ)音警報(bào)的<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>傳感器</b>