diff --git a/doorbell.pde b/doorbell.pde index cf0307c..5830006 100644 --- a/doorbell.pde +++ b/doorbell.pde @@ -17,6 +17,7 @@ #define DOORBELL_BACKWARD_ANGLE 90 #define DOORBELL_FORWARD_ANGLE 180 + Servo servo; int state; unsigned long prev_millis; @@ -25,6 +26,7 @@ unsigned int start_count; unsigned int ring_count; unsigned int finish_count; + void next_state(int nstate, unsigned int nduration=0) { state = nstate; prev_millis = millis(); @@ -36,6 +38,14 @@ void same_state() { duration = 100; } +void ring_bell() { + // ensure servo attached again + servo.attach(SERVO_PIN); + ring_count = 3; + Serial.println("DING DONG"); + next_state(STATE_BELL_FORWARD); +} + void setup() { Serial.begin(9600); servo.attach(SERVO_PIN); @@ -47,7 +57,12 @@ void setup() { void loop() { if ( Serial.available() ) { - // TODO handle serial data + char c = Serial.read(); + + // run command + if ( c == 'T' ) { + ring_bell(); + } } if ( (millis() - prev_millis) > duration ) { @@ -63,11 +78,7 @@ void loop() { if ( v <= DOORBELL_THRESHOLD ) { start_count++; if ( start_count > 2 ) { - // ensure servo attached again - servo.attach(SERVO_PIN); - ring_count = 3; - Serial.println("DING DONG"); - next_state(STATE_BELL_FORWARD); + ring_bell(); } else { same_state();