Problema Codigo
buenas tardes, estoy desarrollando un codigo en arduino uno, y tengo un problema que estoy intentado solucionar pero no lo consigo, es el siguiente:
estoy intentando desallorar un menu, pero la hora de ejecutar el codigo y abrir el monitor serial, el mensaje me aparece ciclicamente, es decir, no soy capaz de hacer que el programa se que esperando que teclee una de las opciones.es decir, que me aparezca el menu una sola vez, si no que me aparece constantemente.
les incluyo la parte del codigo donde creo que hay que modificar algo, pero no ha sido capaz de encontrar ningun ejemplo en la web:
estoy intentando desallorar un menu, pero la hora de ejecutar el codigo y abrir el monitor serial, el mensaje me aparece ciclicamente, es decir, no soy capaz de hacer que el programa se que esperando que teclee una de las opciones.es decir, que me aparezca el menu una sola vez, si no que me aparece constantemente.
les incluyo la parte del codigo donde creo que hay que modificar algo, pero no ha sido capaz de encontrar ningun ejemplo en la web:
code: [select]
serial.println("para calibrar las celdas pulse 1, 2, 3 o 4:");
char temp=serial.read();
if(serial.available())
{
char temp2;
////// entramos en la calibracion de la celda 1///////
if(temp == '1')
{
serial.println("calibrando celda 1:");
e='1';
while(e!='0')
{
if(serial.available())
{
serial.print("\t leyendo celda 1:");
serial.print(celda1.get_units(), 1);
serial.print(" gramos"); //cambie esta kg y volver ajustar el factor de calibración si se siguen las unidades del si como una persona sana
serial.print(" || factor de calibracion: ");
serial.println(calibration_factor1);
serial.println("para guardar el factor pulse y:");
serial.println(" para salir pulse 0");
temp2= serial.read();
if(temp2 == '+')
calibration_factor1 += 1;
else if(temp2 == '-')
calibration_factor1 -= 1;
else if(temp2 == '0') //para salir del bucle while///
{
e='0';
}
else if(temp2 == 'y' || temp2 == 'y')
{
eepromwritelong(direccion_celda1, calibration_factor1); //guardar valor en eeprom interna
//direccion += 4;
serial.println("factor guardado:");
factor1=(eepromreadlong(0));
serial.println(factor1);
}
}
delay(1000);
}
serial.flush();
}
primero el monitor serie del ide no permite el carriadge return por mas que lo diga yo no podido.
usa programas terminales como termite realterm u otro
verás que si pones y usas cosas asi.
en lugar de solo poner
serial.print("\t leyendo celda 1:");
serial.print(celda1.get_units(), 1);
usa
si celda1.get_units es float
tienes que usar una función que convierte un float en cadena de caracteres como lo es
dtostrf y lo usas asi
usa programas terminales como termite realterm u otro
verás que si pones y usas cosas asi.
en lugar de solo poner
serial.print("\t leyendo celda 1:");
serial.print(celda1.get_units(), 1);
usa
code: [select]
char buf[40];
sprintf( buf, "\t leyendo celda 1: %1d\r\n", celda1.get_units);
serial.print(buf);
si celda1.get_units es float
tienes que usar una función que convierte un float en cadena de caracteres como lo es
dtostrf y lo usas asi
code: [select]
static float f_val = 123.6794;
static char outstr[15];
void setup() {
dtostrf(f_val,7, 3, outstr);
serial.begin(9600);
serial.println(outstr);
}
void loop(){
}
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Problema Codigo
arduino
Comments
Post a Comment