Go Down

Topic: Llamado de variables en al EEPROM (Read 557 times) previous topic - next topic

Dani_Juarez

Oct 23, 2017, 11:58 pm Last Edit: Oct 25, 2017, 12:49 am by surbyte Reason: Titulo inutil "Ayuda .."
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¡¡¡¡

Code: [Select]

#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¡¡¡¡¡");

}


surbyte

QUe pasa con este hilo? http://forum.arduino.cc/index.php?topic=506521.msg3453834#msg3453834
Y los similares en ingles.
NO puedes habrir hilos similares en cada parte del foro inglés/español/otro idioma!!

Dime cual cierro?

Dani_Juarez

#2
Oct 25, 2017, 06:26 pm Last Edit: Oct 25, 2017, 06:40 pm by surbyte Reason: Los enlaces van con etiquetas

Go Up