como andan??? espero que bien que tengo problemas con un código espero que me pueda ayudar resulta que tengo dos servos que guardo cuyos ángulos en la EEPROM y después los mando a llamar usando un Servo anda muy bien
el problema es cuando pongo dos motores porque yo almaceno una x cantidad de grados provenientes del motor 1 y otros del 2 pero a la hora de leer se ejecutan los dos juntos y no en el orden que se guardaron los ángulos de los servos
osea por ejemplo las 3 primeras casillas son ángulos del servo1 y las dos que siguen del segundo despues vienen otras dos casillas pero son ángulos del servo 1 y etc así sucesivamente
no logro que se ejecuten en orden de guardado los motores; como podría hacer???????? algo me falla en el código
se los dejo así le echan una miradita si pueden
desde ya mil gracias¡¡¡¡
#include<Servo.h>
#include <EEPROM.h>
//Creamos los objetos servo
Servo servo;
Servo servo2;
unsigned char c; //Letra del Servo
int posicion; //Posicion del servo
int valor[5]; //valor para almacenar lo del servo1
int valor2[5]; //valor2 para el servo2
int j[20]; // array para la EEPROM
void setup()
{
//Inicializamos los Servos
servo.attach(12);
servo2.attach(11);
//Inicializamos la comunicacion por Serial
Serial.begin(9600);
Serial.print(" \n");
Serial.println("xxxxxxxxxBienvenido Usuarioxxxxxxxxxxx");
Serial.println(" AUTOMATA Codigo1 by: Daniel Juarez");
}
void loop() {
if (Serial.available())
{
c = Serial.read();
posicion = Serial.parseInt();
// movemos el servo 1 o el dos y automaticamente el valor que se le dio se guarda
// se introduce la letra del servo + los grados para moverlo
if (c == 'a')
{
Serial.print("Motor1: ");
Serial.println(posicion);
servo.write(valor[0]);
delay(10);
valor[0] = posicion;
EEPROM.write(j[0], valor[0]);
Serial.print("Guardo en la posicion ");
Serial.print(j[0]);
Serial.print("\t");
Serial.println(valor[0]);
j[0]++;
valor[0]++;
}
else if (c == 'b')
{
Serial.print("Motor2: ");
Serial.println(posicion);
servo2.write(posicion);
delay(10);
valor2[0] = posicion;
EEPROM.write(j[0], valor2[0]);
Serial.print("Guardo en la posicion ");
Serial.print(j[0]);
Serial.print("\t");
Serial.println(valor2[0]);
j[0]++;
valor2[0]++;
}
/*
else if (c == 'm')
{
graba();
} */
else if (c == 'z')
{
automata(); //lee los datos guardados y hace mover los servos
}
else if (c == 'x')
{
borrar(); //boorra los datos de la EEPROM
}
}
}
/*
void graba() {
EEPROM.write(j[0], valor);
Serial.print("Guardo en la posicion ");
Serial.print(j[0]);
Serial.print("\t");
Serial.println(valor);
j[0]++;
EEPROM.write(j[0], valor2);
//Serial.print("Guardo en la posicion ");
//Serial.print(j[0]);
//Serial.print("\t");
Serial.println(valor2);
j[0]++;
}
*/
void automata() {
Serial.println("EJECUTANDO MEMORIA¡¡¡¡¡");
delay(10);
int i = 0;
for (i = 0; i < 10; i++)
{
valor[0] = EEPROM.read(i);
valor2[0] = EEPROM.read(i);
Serial.println( EEPROM.read(i));
servo.write(valor[0]);
delay(500);
servo2.write(valor2[0]);
delay(500);
}
}
void borrar() {
pinMode(13, OUTPUT);
Serial.println("Borrando Memoria¡¡¡¡¡");
for (int i = 0 ; i <100; i++) {
EEPROM.write(i, 0);
/*EEPROM.length()*/
}
digitalWrite(13, HIGH);
Serial.println("Memoria Borrada¡¡¡¡¡");
}