Robofun 機器人論壇

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

類比輸入-蜂鳴片

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-11-12 19:05:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 a05520 於 2012-11-13 10:13 編輯

如何將亮燈與熄燈敲擊次數改變,以下是敲一亮,敲一熄:(麻煩大大,指點迷津,謝謝)

int ledPin = 13;
int knockSensor = 0;
int threshold = 200;
int sensorReading = 0;

int ledState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorReading = analogRead(knockSensor);
if (sensorReading>=threshold) {

ledState = !ledState;
digitalWrite(ledPin, ledState);
Serial.println("Knock!");

}

delay(100);
}
2#
發表於 2012-11-12 20:03:20 | 只看該作者
「將亮燈與熄燈敲擊次數改變」是指什麼?
3#
 樓主| 發表於 2012-11-12 20:33:05 | 只看該作者
目前程式是 敲擊蜂鳴片  使LED燈 亮 與 熄滅 。 敲一下亮,一下熄滅。 改成多下亮,多下熄滅,如3下亮,2下熄滅。
4#
發表於 2012-11-12 23:25:19 | 只看該作者
「將亮燈與熄燈敲擊次數改變」是指什麼?
coopermaa 發表於 2012-11-12 20:03



應該是把 蜂鳴器 當成輸入訊號,再去改變LED變化!
主要是利用 蜂鳴器 為 壓電元件,經敲擊後產生微量電壓變化,進而讓A/D腳位有感應!
5#
 樓主| 發表於 2012-11-12 23:37:21 | 只看該作者
回復 2# coopermaa


   目前程式是 敲擊蜂鳴片  使LED燈 亮 與 熄滅 。 敲一下亮,一下熄滅。 改成多下亮,多下熄滅,如3下亮,2下熄滅
6#
發表於 2012-11-13 23:29:01 | 只看該作者
蜂鳴片有沒被敲下,你應該知道是哪一行在判斷的吧?
就是這行:
if (sensorReading>=threshold) {

既然知道怎麼判斷蜂鳴片有沒被敲下,那就做個「敲擊次數的計數」,就可以解題了啊...

Try it! 很多事情試過之後,才會發現其實沒那麼困難。
7#
 樓主| 發表於 2012-11-14 23:23:47 | 只看該作者
回復 6# coopermaa

恩~我也有想到計數的方式,但是剛學不久,所以還是不懂。
8#
 樓主| 發表於 2012-11-15 17:36:31 | 只看該作者
弄了一整天還是弄不出來,誰能救救小弟...= ="'
9#
發表於 2012-11-15 19:14:12 | 只看該作者
先貼你目前寫出來的程式碼,再說說你解題的想法/邏輯 (預期怎樣,結果怎樣...)
10#
 樓主| 發表於 2012-11-15 20:13:14 | 只看該作者
int ledPin = 13;                  
int  knockSensor  =  0;                              

int threshold = 200;
int i=0;
int sensorReading = 0;      
int ledState = LOW;           
void setup() {
  pinMode(ledPin,  OUTPUT);                  
  Serial.begin(9600);                                    
}
void loop() {
   
  sensorReading = analogRead(knockSensor);      
   
    if  (sensorReading>=threshold)  {   
i=i+1;
    }
    if(i==2){
      
        ledState  =  !ledState;                                    
    digitalWrite(ledPin, ledState);      
    Serial.println("Knock!");   
   Serial.println(sensorReading);  
    }
  delay(100);  
}

利用i=i+1 算次數,先以兩次亮,兩次滅試試,但失敗...@^@

今天11點前一定要弄出來,不然就沒救了@@
11#
發表於 2012-11-17 19:57:04 | 只看該作者
我沒試過,不過看你的程式 i 好像只有做累加,並沒有歸零的動作喔
這樣可能頂多只能把 LED 打開,之後應該就不會有反應了

雖然沒在期限內趕出來,但是還是要有研究精神!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-12 00:47 , Processed in 0.218899 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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