Brazo repite movimientos guardado en la memoria Eeprom

hola amigos tengo un problema tengo que hacer un brazo que repita los movimientos, con un potenciometro le digo a que posiciones ir y con un swich gravo el movimiento, con otro reproduzco el movimiento y con otro borro la memoria eeprom encontre un codigo funte que si funciona :slight_smile: y me deja guardar los movimientos el problema esque es solo para 1 servo motor y yo nesecito 4 mas y no se como programarlo ya lo intente de varias maneras y no me funciona siempre me sale error o si no en mi arduino no funciona porfavor ayudenme aqui le dejo el codigo

#include <Servo.h>
#include <EEPROM.h>
#define Max 487
#define Min 135
int grabaBotPin = 2;
int ejecBotPin = 5;
int servoPin = 9;
int resetPin = 6;
int feedbackPin = A0;
int ledPin = 13;
int addr;
Servo myServo;

void setup() {
Serial.begin(9600);
pinMode(grabaBotPin, INPUT); digitalWrite(grabaBotPin, HIGH);
pinMode(ejecBotPin, INPUT); digitalWrite(ejecBotPin, HIGH);
pinMode(resetPin, INPUT); digitalWrite(resetPin, HIGH);
pinMode(ledPin, OUTPUT);
pinMode(feedbackPin, INPUT);
}

void loop() {
if(digitalRead(resetPin) == LOW){ //pone a 255 toda la memoria EEPROM

for(addr=0; addr<=512; addr++){ EEPROM.write(addr, 255); }
addr = 0;

}
if (digitalRead(grabaBotPin)==LOW) { //Graba posiciones del servo
delay(100);
grabaServo(servoPin, feedbackPin);
}
if (digitalRead(ejecBotPin)==LOW) { //Ejecuta en el servo lo grabado en la EEPROM
delay(400);
ejecutaServo(servoPin, ejecBotPin);
}
}

void ejecutaServo(int servoPin, int botonPin) {
addr = 0;
myServo.attach(servoPin);
while (digitalRead(botonPin)) {
int dato = EEPROM.read(addr);
if (dato == 255) break; //Detecta final de datos y termina
dato = map(dato, 0, 254, 0, 180); //Ajusta a valores posibles en servo
myServo.write(dato);
delay(1500);
addr++;
if (addr == 512) break;
}
myServo.detach();
delay(300);
}

void grabaServo(int servoPin, int analogPin) {
digitalWrite(ledPin, HIGH);
int dato = analogRead(feedbackPin);
if (dato < Min) dato = Min; if (dato > Max) dato = Max; //Limita valores
dato = map(dato, Min, Max, 0, 254); //Ajusta a valores posibles en EEPROM
EEPROM.write(addr, dato);
addr++;
digitalWrite(ledPin, LOW);
delay(300);
}

este codigo funciona para 1 solo motor y yo nesecito que funcione para 4 motores mas y cada uno con su potenciometro para diferentes movimientos y pueda grabarlos

Si, el código (con origen y autor borrado) y la foto están copiados de mi página.

http://www.jopapa.me/servofeedback.html

La solución muy simple, divide la EEPROM en cinco segmentos, uno para cada servo.

gracias un amigo me paso esa imagen me disculpo no sabia que era tu trabajo gracias

Ya te amplié la solución por mensaje.

Hola Jopapa, podrias enviarme a mi tambien la informacion que le has enviado a wilhelmk9?

Gracias anticipadas, un saludo

La respuesta es simplemente usar el código que tengo publicado y si quieres más servos, pues usas segmentos de la memoria del Arduino para cada uno. Del 1 al 100 parauno, de 101 al 200 para otro y así.

Gracias!!