Tengo un problema con un programa keestoy haciendo,
CODIGO:
#include <EEPROM.h>
int addr = 0;
float voltios_por_analog = 0.004887586; //Valor en voltios de uno de los niveles de la entrada analógica (1-1023)
int num_resistores=5;
int entrada=7; //Declaración de variables
float valor_analog, voltios;
// captura de datos
if (Serial.available()>1){
int dato = Serial.read(); //Serial.write(dato);
EEPROM.write(addr, 0);
EEPROM.write(addr, dato);
}
// entrada datos voltaje AN7
valor_analog = analogRead (entrada);
voltios = valor_analogvoltios_por_analognum_resistores;
// redondeo a una cifra
int RPM;
float f;
f = voltios;
RPM = (int) f;
int lectura = EEPROM.read(addr);
// Imprimo el resultado
if (RPM > lectura) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
Tengo un problema con un programa keestoy haciendo,
CODIGO:
#include <EEPROM.h>
int addr = 0;
float voltios_por_analog = 0.004887586; //Valor en voltios de uno de los niveles de la entrada analógica (1-1023)
int num_resistores=5;
int entrada=7; //Declaración de variables
float valor_analog, voltios;
// captura de datos
if (Serial.available()>1){
int dato = Serial.read(); //Serial.write(dato);
EEPROM.write(addr, 0);
EEPROM.write(addr, dato);
}
// entrada datos voltaje AN7
valor_analog = analogRead (entrada);
voltios = valor_analogvoltios_por_analognum_resistores;
// redondeo a una cifra
int RPM;
float f;
f = voltios;
RPM = (int) f;
int lectura = EEPROM.read(addr);
// Imprimo el resultado
if (RPM > lectura) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
No hay manera que funcione, creo que el problema esta en la manera que guarda el dato en la eeprom y la lee.
Os agradeceria ke me ayudarais
Gracias de antemano. un saludo.
cuando usas las funciones disponibles debes mirar en las referencias del lenguaje los tipos de datos con los que trabajan.por ejemplo defines valor_analog como float ,cuando va a recibir el valor de analogRead que ha de ser int (valores de 0 a 1023).
La condicion if(Serial.available() > 1) no te funcionara si hay un solo byte disponible en el buffer,mejor (Serial.available () > 0)
A EEPROM.write() tienes que pasarle la direccion (int) y el dato a guardar ha de ser byte (tu le pasas un int,la variable datos) .
En la variable lectura ,idem,recoges un dato de la EEPROM tipo byte en un int.
Hay alguna cosa mas pero no me da tiempo…
Todas estas cosas te pueden ocasionar conversiones y cosas inesperadas en las operaciones matematicas