今回はPIRセンサとサーボを連携させてみます。
ハードウェアPWMを使うのでサーボをデジタル出力0番ピンに、PIRセンサをデジタル入力1番ピンにつなぎます。
動くものを検知した時に動き、検知していない時は止まるようにプログラムします。
// pir_servo.c sample program for RaspberryHabu // Licence CC 0 ( Public Domain ) #include "stdio.h" #include "wiringPi.h" #include "unistd.h" int main() { int pir,pwm; if (-1 == wiringPiSetup()) { printf("setup error!"); exit(1); } pinMode(1,PWM_OUTPUT); pinMode(0,INPUT); while(1){ pir=digitalRead(0); if(pir == 1) { pwmWrite(1,10); usleep(50000); pwmWrite(1,500); usleep(50000); pwmWrite(1,10); }else if(pir == 0){ pwmWrite(1,0); sleep(5); } printf("channel 0 : %d servo : %d\n", pir,pwm); pwmWrite(1,0); sleep (1); } }
動く物を検知したとき、アナログ入力1ピンにつながったRaspberryPi上のLEDが光ります。
人が動いたときに何かを動かすようなロボットが作れます。
例えば扉の片側にサーボで扉のカギを開け閉めできるように設置するとオートロックドアを作れますね。