#ifndef SERVO_BEHAVIOUR_h #define SERVO_BEHAVIOUR_h #include <Arduino.h> #include "Behaviours.h" #include <Servo.h> /** \file ServoBehaviours.h \brief Behaviours to control a servo motor. This should be extended with stable behaviours that are developed in the future. */ /** \class ServoGoTo \brief Behaviour that sets a servo to an angle specified as its argument. */ class ServoGoTo : public Behaviour { Servo _servo; public: ServoGoTo(Servo servo, String name = "GoTo"); char* args(); String start(String args); }; /** \class ServoWiggle \brief Behaviour that wiggles a servo with the sweep angle specified as its argument. */ class ServoWiggle : public Behaviour { Servo _servo; int _start_time = 0; int _wiggle_time = 300; int _num_wiggles = 5; int _wiggles = 0; int _wiggle_angle = 0; //Calculate wiggle time by multiplying the angle by this... int _wiggle_factor = 5; public: ServoWiggle(Servo servo, String name = "Wiggle", int slowness=3) char* args() String start(String args); void update(); }; /** \class ServoGoAndReturn \brief Behaviour that sets a servo to an angle before returning its position back to zero, for a number of cycles specified as its argument. */ class ServoGoAndReturn : public Behaviour { Servo _servo; int _start_angle = 0; int _end_angle = 180; int _delay = 30; int _num_rotations = 1; int _rotations = 0; int _pause = 500; public: ServoGoAndReturn(Servo servo, String name="GoAndReturn", int delay=30, int pause=500, int start_angle = 2, int end_angle=178 ); char* args(); String start(String args); void update(); }; #endif