Bienvenido, Invitado |
Tienes que registrarte para poder participar en nuestro foro.
|
Estadísticas del foro |
» Miembros: 17,270
» Último miembro: andrei
» Temas del foro: 12,191
» Mensajes del foro: 117,649
Estadísticas totales
|
|
|
Usar la memoria EEPROM d Arduino para la config del programa |
Enviado por: giltesa - 26-06-2013, 11:32 PM - Foro: Arduino
- Respuestas (1)
|
![](https://www.spainlabs.com/foros/uploads/avatars/avatar_6.jpeg?dateline=1447431363) |
Usar la memoria EEPROM de Arduino para guardar la configuración del programa de forma muy cómoda :zpalomitas:
Código: /*
Author: Alberto Gil Tesa
WebSite: http://giltesa.com
License: CC BY-NC-SA 3.0
Date: 26/06/2013
Description:
Ejemplo de uso de una estructura STRUCT y UNION combinadas
para almacenar varios datos de forma comoda en la memoria
EEPROM del Arduino.
Cada vez que se reinicia el Arduino con el boton de RESET,
o se conecte a la corriente, aumentaran los datos y se
imprimiran los nuevos.
Solo es un ejemplo, lo ideal seria guardar la configuracion
de nuestro programa al encender el Arduino, y modificarla
desde un menu con un LCD y unos botones, etc.
Recomiendo leer las entradas:
Estructuras UNION: http://giltesa.com/?p=13666
Uso de las estructuras: http://giltesa.com/?p=13693
*/
struct DATOS{
float temperatura;
float humedad;
int luz;
boolean usable;
};
union MEMORIA{
DATOS dato;
byte b[sizeof(DATOS)];
}
miMemoria;
#include <EEPROM.h>
#define address 0
void setup()
{
// Se recuperan los datos de la memoria EEPROM:
for( int i=0 ; i<sizeof(DATOS) ; i++ )
miMemoria.b[i] = EEPROM.read( address+i );
// Se comprueba que se hayan podido leer los datos (que no se haya leido basura)
// No es la forma mas elegante de hacerlo pero funciona:
if( miMemoria.dato.usable == true )
{
miMemoria.dato.temperatura += 0.5;
miMemoria.dato.humedad += 0.1;
miMemoria.dato.luz += 1;
}
// Si nunca se habian usado se inicializan todos los datos:
else
{
miMemoria.dato.temperatura = 0.0;
miMemoria.dato.humedad = 0.0;
miMemoria.dato.luz = 0;
miMemoria.dato.usable = true;
}
// Se guardan los datos en la memoria EEPROM:
for( int i=0 ; i<sizeof(DATOS) ; i++ )
EEPROM.write( address+i , miMemoria.b[i] );
// Se imprime por pantalla los datos:
delay(1000);
Serial.begin(9600);
Serial.print("Temperatura = "); Serial.println(miMemoria.dato.temperatura);
Serial.print("Humedad = "); Serial.println(miMemoria.dato.humedad);
Serial.print("Luz = "); Serial.println(miMemoria.dato.luz);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
}
void loop()
{
// Una vez cargamos los datos en el SETUP ya podemos hacer uso de ellos desde nuestro programa.
// ...
}
|
|
|
[Duda] ¿Existe algo así? |
Enviado por: Hynnash - 26-06-2013, 01:01 PM - Foro: Electrónica
- Respuestas (8)
|
![](https://www.spainlabs.com/foros/uploads/avatars/avatar_42.gif?dateline=1447431368) |
Pues me vengo comiendo la cabeza desde hace dos días preguntándome si existe algo parecido a un relé pero en tamaño muy pequeño.
Me explico:
¿Existe algo que, al pasar la corriente eléctrica por él, accione de alguna manera un elemento mecánico hacia arriba o hacia abajo? (Como puede ser, por ejemplo, la punta de un bolígrafo) Todo esto sin superar, a lo ancho, el tamaño de un led de 5mm. Hacia abajo, lo que queráis.
Supongo que con una bobina puedes hacerte un mini-relé, para que lo atraiga magnéticamente, pero... ¿Y si quieres poner muchos juntos y que no se active el de al lado? :roto2:
Un saludo, foristas.
|
|
|
|