Go Down

Topic: Almacenar datos en la eprom (Read 175 times) previous topic - next topic

VicenteCarlos

Buenas tardes a todos.
Soy totalmente novato en Arduino.
Estoy creando un pequeño proyecto para un control de maqueta de tren. En concreto manejo una playa de vías y las cocheras para las locomotoras. Todo está saliendo bien, pero tengo un pequeño problema y es la ocupación de las cocheras. A cada cochera le he asignado el nombre de una variable, para evitar que se puedan meter dos locomotoras. Hasta ahí todo correcto.
El problema surge cuando se desconecta la maqueta. Las variables de ocupación se pierden con el evidente riesgo a la hora de volver a conectarla, y parte del atractivo de este proyecto se pierde.
Las variables tienen dos estados (1: Ocupada, 0: Libre).
He pensado en almacenar estos datos en la eprom para recuperarlos al volver a poner en marcha la maqueta, pero no se cómo se utiliza la eprom. Cómo se graba y como se lee.
He buceado por internet, pero no encuentro nada que lo explique genéricamente.
Muchas gracias a todos por vuestro interés, y sobre todo a aquellos que me puedan ayudar.
Saludos.


VicenteCarlos

Muchas gracias Victorjam

Ahora a ver si consigo entenderlo, jejeje.

VicenteCarlos

Buenas noches de nuevo.
No consigo hacer rodar este pequeño ejemplo.
He creado una variable a la que he llamado cochera1 y que a lo largo de el programa sufrirá diversos cambios, pero siempre teniendo un valor de 0 o 1. Este valor es el que quiero almacenar en la eprom para poder recuperar su estado en caso de fallo eléctrico.
Para esta prueba he puesto un led en el pin 10
Grabo en la posición de memoria 5 el valor "1"
a continuación le digo que "recupere" el valor de la posición 5 y lo asigne a la variable "valor1"
Si la variable es mayor que 0 deberá asignar valor 1 a la cochera1 y encender el led.

Sencillo, ¿verdad? Pues no consigo que me funcione. Me podríais echar una mano?
Muchísimas gracias.

#include <EEPROM.h>

void setup() {
 
int cochera1=0; //variable que nos indica si la cochera esta libre (valor 0) u ocupada (valor 1)
int posicionmemoria=5;
int valor1=0;
pinMode(10,OUTPUT);

EEPROM.write(posicionmemoria,1);
EEPROM.get(posicionmemoria,valor1);
if( valor1>0)
{
  cochera1=1;
  digitalWrite(10,HIGH);
  delay(2000);
}

surbyte

Hola VicenteCarlos, veo que sigues sin leer las normas del foro.
Los códigos se publican como lo indican las normas no como simple texto.
Asi que debes ir, leer las normas, y luego editar tu post#3.

Go Up