problema condicional

hola a tod@s:

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;

void setup () {
pinMode (entrada, INPUT);
pinMode (12, OUTPUT);
Serial.begin (9600);
}

void loop () {

// 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);
}

Serial.write(EEPROM.read(addr) );
Serial.flush();
delay(2000);

}


El problema lo tengo aqui:

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.

ozuisoft:
hola a tod@s:

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;

void setup () {
pinMode (entrada, INPUT);
pinMode (12, OUTPUT);
Serial.begin (9600);
}

void loop () {

// 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);
}

Serial.write(EEPROM.read(addr) );
Serial.flush();
delay(2000);

}


El problema lo tengo aqui:

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

Saludos.
Quita la expresion RPM = (int) f y coloca solo RPM = f