#include "ReelTwo.h"
#include "ServoDispatchDirect.h"
#include "ServoEasing.h"
#include "core/PushButton.h"
#define CLOSE_BUTTON_PIN A0
#define OPEN_BUTTON_PIN A1
#define MY_SERVOS 0b000001
#define MY_OTHER_SERVOS 0b000010
const ServoSettings servoSettings[] PROGMEM = {
{ 2, 800, 2200, MY_SERVOS }, /* 0: my servo */
{ 3, 800, 2200, MY_SERVOS }, /* 1: my servo */
{ 4, 800, 2200, MY_SERVOS }, /* 2: my servo */
{ 5, 800, 2200, MY_SERVOS }, /* 3: my servo */
{ 6, 800, 2200, MY_SERVOS }, /* 4: my servo */
{ 7, 2200, 800, MY_OTHER_SERVOS }, /* 5: my servo */
{ 8, 800, 2200, MY_OTHER_SERVOS }, /* 6: my servo */
{ 9, 800, 2200, MY_OTHER_SERVOS }, /* 7: my servo */
};
ServoDispatchDirect<SizeOfArray(servoSettings)> servoDispatch(servoSettings);
PushButton closeButton(CLOSE_BUTTON_PIN);
PushButton openButton(OPEN_BUTTON_PIN);
void setup()
{
REELTWO_READY();
SetupEvent::ready();
// Attach function closeServo to the 'close' button
closeButton.attachClick(closeServos);
// Attach function openServo to the 'open' button
openButton.attachClick(openServos);
servoDispatch.setServosEasingMethod(MY_SERVOS, Easing::BounceEaseOut);
servoDispatch.setServosEasingMethod(MY_OTHER_SERVOS, Easing::CircularEaseOut);
}
void openServos()
{
// Move servos in group MY_SERVOS to 100% over 2000ms
servoDispatch.moveServosTo(MY_SERVOS, 2000, 1.0);
// Move servos in group MY_OTHER_SERVOS to 100% over 4000ms
servoDispatch.moveServosTo(MY_OTHER_SERVOS, 4000, 1.0);
}
void closeServos()
{
// Move servos in group MY_SERVOS to 0% over 2000ms
servoDispatch.moveServosTo(MY_SERVOS, 2000, 0.0);
// Move servos in group MY_OTHER_SERVOS to 0% over 4000ms
servoDispatch.moveServosTo(MY_OTHER_SERVOS, 4000, 0.0);
}
void loop()
{
AnimatedEvent::process();
}