#include #include #define SERVO_PIN 6 #define DETECTOR_PIN 2 #define BUZZER_PIN 12 #define BUZZER_GND 8 #define SHOOT_DELAY 3000 Servo srv; void setup() { Bridge.begin(); Console.begin(); pinMode(BUZZER_GND, OUTPUT); digitalWrite(BUZZER_GND, LOW); while(!Console) {} Console.println("Hello!"); tone(BUZZER_PIN, 1000, 1000); srv.attach(SERVO_PIN); pinMode(DETECTOR_PIN, INPUT); } void shoot(void) { Process p; p.begin("sh"); p.addParameter("/root/fb-test/post.sh"); p.run(); while(p.available() > 0) { char c = p.read(); Console.print(c); } Console.println("Shooted!"); } bool wait_cat(void) { unsigned long tm = millis(); bool detected = false; unsigned long start_detected = millis(); while(millis()-tm < 60000) { int i = 10; while(i--) { srv.write(0); delay(200); if(!digitalRead(DETECTOR_PIN)) { if(!detected) { start_detected = millis(); detected = true; } else { if(millis()-start_detected > 500) { tone(BUZZER_PIN, 500, 500); shoot(); return true; } } } else if(detected) { detected = false; } srv.write(90); delay(200); } detected = false; delay(3000); } return false; } void loop() { wait_cat(); delay(3*60000); }