Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 8954|回復: 8
打印 上一主題 下一主題

arduino MEGA2560&&聲音檢測器模組 問題 求解

[複製鏈接]
1#
發表於 2014-11-27 22:38:07 | 顯示全部樓層
可以請拍一下照片你怎麼接的嗎?
2#
發表於 2014-11-27 23:28:34 | 顯示全部樓層
本帖最後由 ates1687 於 2014-11-27 23:33 編輯



int DO = 2;      
int AO = AO;   
int val;
int val1;       //建立數位的存取數值
int count=0; //<-不懂為什麼要宣告count @@?

void setup(){
  Serial.begin(9600);
  pinMode(DO, INPUT);
  pinMode(AO, INPUT);     //<-沒有宣告AO為類比輸入(關鍵是這一個)
}
void loop(){
  Serial.print("val:");
  val= analogRead(AO);
  
val1= digitalRead(DO)    //<-建議建立數位讀取,因為你都宣告int DO = 2;
  Serial.println(val);

if(val==LOW){              //應該改成" if(val==HIGH){ "  or  " if(val>0){ "
    count++;
  Serial.print("val:/n");     // "/n"方便看而已,代表自動換行
  Serial.println(val);         //顯示類比電壓
  Serial.print("count:/n");
  Serial.println(count);
  delay(300);
  }else{                              //就是val=LOW(沒有聲音的時候)<-只是註解,個人習慣這樣><"
  Serial.print("Sound too small     "); //顯示"聲音太小了"
  Serial.println(val);
  delay(300);
  }
}
-------------------------------------------------(文章分割線)
以上程式是參考用,錯了希望能糾正,給予回復者進步的空間!


以下是個人意見:(還是僅供參考,錯了在糾正↑)
analogRead代表類比輸入,讀取的數值假設是1~1025

digitalRead代表數位輸入,讀取的數值應該是0 1 高 低
你那個麥克風模組有兩個腳位分別是DO跟AO

AO就要接類比輸入,DO就要接數位輸入

DO判斷式:
if(val1==HIGH){  
//HIGH=有聲音,LOW=沒有聲音

AO判斷式:
if(val>50){          //當聲音到達"程度的音量",要看讀取的analogRead數值,自由發揮想要做什麼事
3#
發表於 2014-11-30 17:32:27 | 顯示全部樓層
以我的看法,因為你是買模組,所以你的硬體是被"綁死"的,
所以AO那個腳位,在接放大倍率的IC,如ua741(OPA)這一顆看看,
可是需要接示波器,你要增長的不是距離,而是把接收"更微小"的訊號放大
但是越大會越受到"環境音"的影響更大,所以要斟酌一下放大倍率!
4#
發表於 2014-12-1 18:38:27 | 顯示全部樓層
既然是模組的話,我是不太建議說去做任何更動!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-15 01:51 , Processed in 0.187133 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表