Pages: [1]   Go Down
Author Topic: Mostrar mensaje de alarmas en lcd  (Read 1016 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!!
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Pages: [1]   Go Up
Jump to: