2016/04/17

LinkIt ONE:簡單試用Grove聲音感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove聲音感測器

主要是個麥克風,加上其他一堆零件。
背面照。
我接到A0。
程式碼:
#define SOUND_SENSOR_PIN A0
#define LED_PIN 13
#define THRESHOLD 100

unsigned long t_extended;

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  t_extended = millis();
}

void loop() {
  int v = analogRead(SOUND_SENSOR_PIN);
  Serial.println(v);

  unsigned long t = millis();
 
  if(v > THRESHOLD){
    t_extended = t + 3000;
    digitalWrite(LED_PIN, HIGH);
  }

  if(t > t_extended){
    digitalWrite(LED_PIN, LOW);
  }
}

功能很簡單,若音量大於THRESHOLD,就會點亮LED,持續3秒鐘,然後熄滅。

收工。

LinkIt ONE:簡單試用Grove觸摸感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove觸摸感測器

正面照。
要觸摸的地方在背面。原理是在手指觸摸(甚至只要靠得夠近即可),電容會改變,便可達到偵測的功能。
我接在D8。
程式碼:
#define TOUCH_PIN 8
#define LED_PIN 13

void setup(){
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
}

void loop(){
  if(digitalRead(TOUCH_PIN) == HIGH){
    digitalWrite(LED_PIN, HIGH);
  }
  else{
    digitalWrite(LED_PIN, LOW);
  }
}


很簡單,以手指觸摸時,就點亮LED,反之則熄滅。

收工。

LinkIt ONE:簡單試用Grove灰塵感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove灰塵感測器,測量空氣中細懸浮微粒。

正面照。左下有兩個調整旋鈕,但根據官方資料,我們不可隨意更動。
背面照。
必須接在D8。
程式碼,完全抄自官方範例。
#define DUST_SENSOR_PIN  8
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 2000;//sampe 30s
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;


void setup(){
  Serial.begin(9600);
  pinMode(DUST_SENSOR_PIN, INPUT);
  starttime = millis(); //get the current time;
}

void loop(){
  duration = pulseIn(DUST_SENSOR_PIN, LOW);
  lowpulseoccupancy = lowpulseoccupancy + duration;

  if((millis() - starttime) >= sampletime_ms){ //if the sampel time = = 30s
    ratio = lowpulseoccupancy / (sampletime_ms * 10.0); // Integer percentage 0~100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve

    Serial.print("concentration = ");
    Serial.print(concentration);
    Serial.println(" pcs/0.01cf");
    Serial.println("\n");
   
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}

然後打開序列埠監控視窗。
有興趣的人,請自行查閱官方文件,據說可測1微米與2.5微米,咦,真的嗎?

收工。