2019年4月30日 星期二

MT7697拍手兩次 關滅燈(改編)


聲音感測模組測試可以到

http://yhhuang1966.blogspot.com/2017/10/arduino.html


以下是我改編過的拍手兩次..原版似乎不太準(Using Arduino IDE)
請在自行修正參數

#define micPin A0
#define ledPin 2
boolean ledState = false; //紀錄 LED 狀態,預設為打開
int micVal;  //紀錄偵測到的音量

long current = 0; //紀錄目前過門檻時戳
long last = 0; //紀錄上次過門檻時戳
long diff = 0; //紀錄前後兩次時間差
int count = 0; //紀錄已偵測到的次數

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
}
void loop() {
  if (analogRead(micPin) > 2000) {  //若超過門檻值
    delay(50);
    if (analogRead(micPin) > 2000 ) {
      Serial.println(analogRead(micPin));
      current = millis(); //紀錄目前時戳
      count++;  //次數
    }
    if (analogRead(micPin) > 2000 && count >= 2) {  //若次數已達 2 次
      diff = current - last; //計算前後兩次時間差
      Serial.println("disdance="+String(diff));
      if (diff > 300 && diff < 1500) {
         Serial.println("change");
        ledState = !ledState;
        count = 0;
      } else {
        count = 1; //太久或太慢
      }    
    }
    last = current; //以目前時戳更新上次時戳
    if (ledState) {
      digitalWrite(ledPin, HIGH);
    }else {
      digitalWrite(ledPin, LOW);
    }
  }

  delay(50);
}

沒有留言:

張貼留言

docker-mac Desktop清除容器log

 最近Docker遇到這個問題 Error grabbing logs: invalid character '{' looking for beginning of object key string. 建議的解法是刪除整個log檔,大家可以參考以下教學 htt...