Go Down

Topic: Mostrar mensaje de alarmas en lcd (Read 1 time) previous topic - next topic

etorom

Muy buenas a todos!soy nuevo en esto de arduino, bueno la verdad esque soy electricista y trabajo tambien de cuadrista de automatismo y tal, el tema de automátas lo controlo un poco todo lo que es entradas y salidas pero no el de programación.
En programación estoy un poco verde aún,estoy intentando hacer con una lcd de 16x2 un voltímetro,bueno mi proyecto final es tener varias lecturas en una lcd de 128 x 64 pero  primero quiero empezar por abajo.


Leer la entrada analógica y hacer el calculo ya lo tengo hecho, y me lee de 0 a 15 volts que es el rango que quiero.
Ahora lo que quiero es que me de un mensaje en la lcd cuando la  tensión baje de valor,entonces me de un mensaje de "bateria baja" o "Cargar" o "OK".
Tambien e hecho activar 2 salidas para los leds uno rojo y uno verde para provar,eso lo hace bien.

Mi pregunta es como lo hago para que no se muestren los 3 mensajes a la vez en el diplay?
Os adjunto el programa:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int analogPin = 0;     // el pin analagico 0 conectado al dial de un potenciometro (terminal central del potenciometro)

int  val = 0;           // declaración de la variable en la que se almacenará el valor leido por el conversor.
int ledPin1 =13;
int ledPin2 = 8;
void setup()
{
  lcd.begin(16,2);
    Serial.begin(9600);          //  Inicialización del modulo Serial.
   pinMode(13, OUTPUT);
  pinMode(8,OUTPUT);
}


void loop()
{
    Serial.print(analogRead(0)*15./1023.);//formula para pasar a voltios, *15 es el valor maximo que nos dará el voltimetro,
    lcd.setCursor(0,0);                                     //y 1023 es el tope del valor que lee el arduino
    lcd.print(analogRead(0)*15./1023.);
    lcd.print("v");
    val = Serial.println ("volts");   // envia la palabra al serial.
   

   if (val = analogRead(0)*15/1023.>12.5)
     {
       lcd.setCursor(1,4);
     

       lcd.print("OK");
       
     lcd.print("");

       digitalWrite(8, HIGH);
       digitalWrite(8,LOW);
       
     }
     
      if (val = analogRead(0)*15/1023.<11.5)
       {
         digitalWrite(13, HIGH);
         digitalWrite(13,LOW);
         lcd.setCursor(5,9);
       lcd.print("LOW");
     
       
       
       } 
     
      if (val = analogRead(0)*15/1023.<10.0)
     {
       lcd.setCursor(10,16);
      lcd.print("Cargar");
     }
     
  }
 

espero respuestas GRACIAS!!

Sergegsx

utiliza else if
http://arduino.cc/en/Reference/Else
u pon las condiciones en orden para que la mas restrictiva sea la que se muestra
si compruebas 11 y luego compruebas 10 y el valor es 9. se van a ejecutar las dos
pero si el valor es 9 y compruebas 10 ya no comprobara 11.
para esto necesitas else if lo que hace es que ejecute un if y si no se cumple compruebe otro if encadenador, y asi continuamente

Go Up