人感センサー

私のIOT

秋月電子で売られている人感センサーを三種類、試した。

今回、3Vという要件の素に試した。

SB412Aはしばしば見かけるが、3Vじゃ動かなかった。注に(安定化されている)とあり、通常は0.5Vくらいの差は必要だからさもありなん。

パナソニックのEKMC1601111は3Vで動いた。
しかし、アウト部分に10Kオーム程度のプルダウン抵抗(OUTとGNDの間)が必要だった。説明書見ても分かりづらいわ。

日本セラミックのPSUP7C-02-NCL-16-1は負論理で動く。

試したArduinoのサンプルコードをおいておく。

#define LED 11
#define SENS 2 // 2 or 3 pin

volatile boolean phase = false;

void detect(){
  if (digitalRead(SENS) == 0) {
    phase = true;
  }else{
    phase = false;
  }
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(SENS, INPUT);
  delay(5000); 
  attachInterrupt(digitalPinToInterrupt(SENS), detect, CHANGE);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (phase){
    digitalWrite(LED,1);
  }else{
    digitalWrite(LED,0);
  }
  delay(1000);
}

安くて扱い安いのはパナソニックかな。好みですが。
それをmicrro:bitでテストしたプログラム。ポート番号の指定の仕方がむつかしい。

let _switch = 0
basic.forever(() => {
    _switch = pins.digitalReadPin(DigitalPin.P1);
    if (_switch == 1) {
        basic.showIcon(IconNames.Confused)
    } else {
        basic.clearScreen()
    }

    basic.pause(1000)
})

P0はサウンド用に残しておく

コメント