#include <Servo.h>
Servo servo1; // Cria um servo objeto para controle de um servo
int pos[10];
int saveBtn = 2, onBtn = 3, resetBtn = 4;
int countPos = 0;
byte storagedPos = 0;
boolean isPressed = false;
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
servo1.attach(11);
pinMode(A0, INPUT);
pinMode(saveBtn, INPUT);
pinMode(onBtn, INPUT);
showPositionsSaved();
}
void loop() {
int value = analogRead(A0);
value = map(value, 0, 1023, 0, 180);
//Save the positions
if(digitalRead(saveBtn) && isPressed == false && countPos <= storagedPos){
pos[countPos] = value;
countPos ++;
isPressed = true;
showPositionsSaved();
} else {
isPressed = false;
}
storagedPos = sizeof(pos)/sizeof(int);
//Run the positions saved
if(digitalRead(onBtn)){
Serial.print("Running ....\n");
for(byte i = 0; i < (sizeof(pos)/sizeof(pos[0])); i++){
servo1.write(pos[i]);
delay(1000);
}
Serial.print("Awaiting ....\n");
}
//Reset the positions
if(digitalRead(resetBtn)){
for(int x = 0; x < sizeof(pos) / sizeof(pos[0]); x++){
pos[x] = 0;
countPos = 0;
}
}
if(digitalRead(saveBtn)){
digitalWrite(LED_BUILTIN, HIGH);
} else if (digitalRead(onBtn)) {
digitalWrite(LED_BUILTIN, LOW);
}
delay(100);
}
void showPositionsSaved(){
//Show the positions on Serial
Serial.print("CountPos: ");
Serial.println(countPos);
Serial.print("Pos. Saved: ");
Serial.println(sizeof(pos) / sizeof(pos[0]));
Serial.print("Pos. 1: ");
Serial.println(pos[0]);
Serial.print("Pos. 2: ");
Serial.println(pos[1]);
Serial.print("Pos. 3: ");
Serial.println(pos[2]);
Serial.print("Pos. 4: ");
Serial.println(pos[3]);
Serial.print("Pos. 5: ");
Serial.println(pos[4]);
Serial.print("Pos. 6: ");
Serial.println(pos[5]);
Serial.print("Pos. 7: ");
Serial.println(pos[6]);
}