国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arduino Light Clapper使用聲音檢測器

Arduino Light Clapper使用聲音檢測器

2022-11-11 | zip | 0.11 MB | 次下載 | 免費(fèi)

資料介紹

描述

聲音探測器感知聲音。本教程中使用的聲音檢測器類型是數(shù)字聲音檢測器,當(dāng)在環(huán)境中檢測到一定級別的聲音時(shí),它會被激活。傳感器板連接到一個(gè)小麥克風(fēng)以拾取聲音

本教程允許您學(xué)習(xí)如何創(chuàng)建一個(gè)帶有聲音檢測器的系統(tǒng),該系統(tǒng)允許您快速連續(xù)兩次打開或關(guān)閉導(dǎo)聯(lián)。它類似于名為 Clapper 的市售產(chǎn)品,這是一種聲音電子開關(guān),可以在用戶拍手時(shí)激活或禁用與其連接的燈。

原理圖,示意圖

?

poYBAGNtnzGAK2_ZAAFEz-dB1LI357.png
Arduino 輕拍器
?

?

  • 將聲音檢測器上的 VCC 引腳連接到 Arduino 的 3.3-V 引腳。
  • 將聲音探測器上的 GND 引腳連接到 Arduino 的 GND 引腳。
  • 將聲音探測器上的輸出引腳連接到 Arduino 的數(shù)字引腳 8。
  • LED 的負(fù)極連接到 Arduino 的 GND 引腳。
  • 將 LED 的正極連接到 Arduino 的數(shù)字引腳 7

程序

int NumberSounds = 0;
int SoundPin = 8;
int RawValue = 0;
int NumberClaps = 0;
int LightOn = 0;
unsigned long SoundDetectedTime = 0;
unsigned long PreviousSoundDetectedTime = 0;
int UniqueClapMinTime = 100;
int LEDPin = 7;
unsigned long PreviousClapTime = 0;
unsigned long CurrentClapTime = 0;
unsigned long MaxTimeBetweenClaps = 2000;


void setup()
{
 pinMode(SoundPin, INPUT);
 pinMode(LEDPin, OUTPUT);
 Serial.begin(9600);
 Serial.println("The Light Clapper ...");
}


int IsSoundPartOfUniqueClap()
{
 int result = 0;
 unsigned long ElapsedTime = 
   SoundDetectedTime -  
   PreviousSoundDetectedTime;
 if (ElapsedTime >= UniqueClapMinTime)
 {
    result = 1;
 }
 return result;
}



int CheckTurnOnOffLight()
{
 int result = 0;
 unsigned long ElapsedTime =  
   CurrentClapTime - PreviousClapTime;
 if (ElapsedTime <= MaxTimeBetweenClaps)
 {
    if (NumberClaps == 2)
    {
       result = 1;
       NumberClaps = 0;
    }
 }
 else
 {
    NumberClaps = 1;
 }
 return result;
}


void loop()
{
 RawValue = digitalRead(SoundPin);
 if (RawValue == 0)
 {
    Serial.print("SOUND DETECTED ... ");
    Serial.print(", Sound Number: ");
    Serial.print(NumberSounds);
    Serial.print(", RawValue: ");
    Serial.println(RawValue);
    NumberSounds++;

    // Process raw data for claps
    PreviousSoundDetectedTime = 
      SoundDetectedTime;
    SoundDetectedTime = millis();
    if(IsSoundPartOfUniqueClap())
    {
       NumberClaps++;

       // Update Clap Times
       PreviousClapTime = 
         CurrentClapTime;
       CurrentClapTime = millis();

       // Turn Light ON/OFF as needed
       if (CheckTurnOnOffLight())
       {
          LightOn = ~LightOn;
          if (LightOn)
          {
             digitalWrite(LEDPin, HIGH);
          }
          else
          {
             digitalWrite(LEDPin, LOW);
          }
       }
    }
 }
}

?

程序分析

?

自程序啟動并初始化為 0 以來,聲音檢測器檢測到的聲音數(shù)量是變量 NumberSounds:

int NumberSounds = 0;

聲音探測器上的輸出引腳分配給 Arduino 的數(shù)字引腳 8:

int SoundPin = 8;

RawValue 變量保存聲音檢測器的狀態(tài)并初始化為 0:

int RawValue = 0;

NumberClaps 變量存儲當(dāng)前的掌聲計(jì)數(shù),以切換 LED 燈所需的兩次。這是開始 0 拍手:

int NumberClaps = 0;

如果 LED 已打開,則 LightOn 變量為非零,否則為 0。這里初始化為0:

int LightOn = 0;

SoundDetectedTime 變量存儲最后檢測到的聲音的時(shí)間,并用于計(jì)算不同拍手的數(shù)量,因?yàn)閱蝹€(gè)拍手可以生成多個(gè)正的聲音檢測器讀數(shù)。此變量的初始值為 0:

unsigned long SoundDetectedTime = 0;

PreviousSoundDetectedTime 變量保存上一次檢測到的聲音的時(shí)間,并用于確定唯一拍手的數(shù)量:

unsigned long PreviousSoundDetectedTime = 0;

UniqueClapMinTime 變量存儲檢測到的聲音之間的最小時(shí)間間隔(以毫秒為單位),程序必須將其識別為唯一的拍手:

int UniqueClapMinTime = 100;

LEDPin 變量代表數(shù)字引腳 7,它連接到 LED 的正極端子

int LEDPin = 7;

PreviousClapTime 變量保存上一次拍手發(fā)生的時(shí)間(以毫秒為單位)并初始化為 0:

unsigned long PreviousClapTime = 0;

CurrentClapTime 變量保存當(dāng)前拍手發(fā)生的時(shí)間(以毫秒為單位)并初始化為 0:

unsigned long CurrentClapTime = 0;

MaxTimeBetweenClaps 變量指定可用于切換 LED 燈的兩次連續(xù)拍手之間的最長時(shí)間。默認(rèn)情況下,超時(shí)值設(shè)置為 2、000 毫秒或 2 秒。

unsigned long MaxTimeBetweenClaps = 2000;

setup() 函數(shù)初始化程序并:

1. 將連接到聲音檢測器輸出引腳的 Arduino 引腳設(shè)置為輸入引腳,以便可以測量電壓。

2. 將連接到 LED 正極端子的 Arduino 引腳設(shè)置為輸出引腳,它可以向 LED 提供電壓并驅(qū)動 LED。

3. 初始化串行監(jiān)視器并將通信速度設(shè)置為 9、600 波特。

4. 向串行監(jiān)視器打印一條指示程序已啟動的文本消息。

void setup()
{
1.pinMode(SoundPin, INPUT);
2. pinMode(LEDPin, OUTPUT);
3. Serial.begin(9600);
3. Serial.println("The Light Clapper ...");
}

IsSoundPartOfUniqueClap() 函數(shù)確定聲音檢測器檢測到的聲音是新的唯一拍手的開始還是當(dāng)前拍手的繼續(xù)。這是通過以下方式實(shí)現(xiàn)的:

計(jì)算自檢測到上一個(gè)聲音以來經(jīng)過的時(shí)間。

如果此時(shí)間大于或等于識別唯一拍手所需的最短時(shí)間,則該函數(shù)返回 1。

否則,函數(shù)返回 0。

int IsSoundPartOfUniqueClap()
{
int result = 0;
unsigned long ElapsedTime =
SoundDetectedTime -
PreviousSoundDetectedTime;
if (ElapsedTime >= UniqueClapMinTime)
{
result = 1;
}
return result;
}

CheckTurnOnOffLight() 函數(shù)通過在兩秒內(nèi)檢測到兩次連續(xù)拍手來確定是否應(yīng)切換 LED。這是通過以下方式實(shí)現(xiàn)的:

計(jì)算當(dāng)前檢測到的拍手和之前檢測到的拍手之間的經(jīng)過時(shí)間。

如果經(jīng)過的時(shí)間小于或等于拍手之間的最大允許時(shí)間,則如果檢測到的拍手次數(shù)為 2,則將返回值設(shè)置為 1,這意味著應(yīng)切換 LED 開/關(guān)狀態(tài),并重置檢測到的拍手次數(shù)為 0。

如果經(jīng)過的時(shí)間大于拍手之間的最大允許時(shí)間,則將檢測到的拍手?jǐn)?shù)設(shè)置為 1,以指示當(dāng)前檢測到的拍手是兩次拍手打開/關(guān)閉序列的唯一有效拍手。

如果應(yīng)該切換 LED,則返回 1,否則返回 0。

int CheckTurnOnOffLight()
{
int result = 0;
unsigned long ElapsedTime =
CurrentClapTime - PreviousClapTime;
if (ElapsedTime <= MaxTimeBetweenClaps)
{
if (NumberClaps == 2)
{
result = 1;
NumberClaps = 0;
}
}
else
{
NumberClaps = 1;
}
return result;
}

loop() 函數(shù)讀取聲音檢測器的輸出,確定檢測到的聲音是唯一的拍手還是先前拍手的延續(xù),確定是否檢測到兩次拍手序列,如果是,則切換 LED 燈。這是通過以下方式實(shí)現(xiàn)的:

讀取聲音檢測器的狀態(tài)。

如果讀取的值等于 0,表示檢測到聲音,則函數(shù):

將一些調(diào)試信息打印到串行監(jiān)視器。

更新跟蹤當(dāng)前聲音檢測事件和先前聲音檢測事件的時(shí)間的變量。

如果此聲音檢測事件是新的獨(dú)特鼓掌的一部分,則函數(shù):

將檢測到的拍手次數(shù)增加 1。

更新前一次拍手和當(dāng)前拍手的時(shí)間。

如果在 2 秒內(nèi)發(fā)生了兩次連續(xù)拍手,則函數(shù):

通過對 LightOn 變量執(zhí)行按位非運(yùn)算來切換 LED 狀態(tài)變量。

如果 LightOn 變量的計(jì)算結(jié)果為真(非零),則打開 LED。

如果 LightOn 變量的計(jì)算結(jié)果為假(零),則關(guān)閉 LED。

void loop()
{
RawValue = digitalRead(SoundPin);
if (RawValue == 0)
{
Serial.print("SOUND DETECTED ... ");
Serial.print(", Sound Number: ");
Serial.print(NumberSounds);
Serial.print(", RawValue: ");
Serial.println(RawValue);
NumberSounds++;
// Process raw data for claps
PreviousSoundDetectedTime =
SoundDetectedTime;
SoundDetectedTime = millis();
if(IsSoundPartOfUniqueClap())
{
NumberClaps++;
// Update Clap Times
PreviousClapTime =
CurrentClapTime;
CurrentClapTime = millis();
// Turn Light ON/OFF as needed
if (CheckTurnOnOffLight())
{
LightOn = ~LightOn;
if (LightOn)
{
digitalWrite(LEDPin, HIGH);
}
else
{
digitalWrite(LEDPin, LOW);
}
}
}
}
} 

?


檢測器 Arduino
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費(fèi)
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
  6. 2.33 MB  |  次下載  |  免費(fèi)
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊
  8. 2.62 MB  |  次下載  |  免費(fèi)
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
  14. 2.50 MB   |  次下載  |  免費(fèi)
  15. 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
  16. 0.60 MB   |  次下載  |  免費(fèi)

本月

  1. 1愛華AIWA HS-J202維修手冊
  2. 3.34 MB   |  37次下載  |  免費(fèi)
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
  4. 1.63 MB   |  23次下載  |  免費(fèi)
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費(fèi)
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
  16. 1.81 MB   |  1次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分