Pages: [1]   Go Down
Author Topic: Arduino+LCD+LM35+PushButton ayuda!!  (Read 2657 times)
0 Members and 1 Guest are viewing this topic.
MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

antes que nada....
buenas compañeros, soy nuevo en el foro eh adquirido un arduino uno, estudio ing electronica y
pues que decir... me encanta la electrónica no se mucho programar bien pero poco a poco
aprendo cada dia...

ya eh realizado varios ejemplos con el arduino, pero ahora en la escuela me piden un control
de temperatura... y pues al comienzo empece a buscar el código lo admito  smiley-red
pero pues que bueno resulto no encontrarlo pues buscando y leyendo fui aprendiendo un poco mas.

ya pude poco a poco desde, escribir en un display, leer el lm35, mostrar sus lecturas, activar un led...
solo que no se como cambiar la variable a controlar!!

este es el codigo que poco a poco aun que es muy corto eh ido haciendo

ejemplo digamos a los 30 grados se enciende y si es menos se debe apagar, pero
podrian ayudarme a como cambiar ese valor externamente con push button?
la idea es tener dos push button para subir y bajar la temperatura a activar el led

de antemano un saludo a todos en el foro y revisare bien ya que los proyectos de todos ustedes
y sus colaboraciones me ayudan a aprender y querer mas al arduino UNO.

Code:
#include <LiquidCrystal.h>
float tempC=0;
int tempPin=0;//el pin de arduino que obtiene voltajes

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  pinMode(13,OUTPUT);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("TEMPERATURA LM35");
}

void loop()
{
    tempC=(5*analogRead(tempPin)*100.0)/1024.0;
  lcd.setCursor(5,1);
  lcd.print(tempC);
  delay(1000);
  if(tempC < 32)
  {
   digitalWrite(13, HIGH);
   }
  else
  {
  digitalWrite(13, LOW);
   }
}
Logged

Venezuela
Offline Offline
God Member
*****
Karma: 16
Posts: 515
Ground, ground, always ground
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola GIGAFLARE,
Hice algunos cambios a tu codigo a fin de que haga lo que necesitas.
Escogi los pines 6 y 7 del Arduino para los botones de subir o bajar el ajuste de temperatura respectivamente. Tambien agregue la opcion de ver en el terminal de la IDE el valor de ajuste actual. No pude ejecutar el codigo en mi Arduino pero compila y no deberias tener problemas. Cualquier duda o problema solo hazlo saber.

Code:
#include <LiquidCrystal.h>
float tempC=0;
int tempPin=0;//el pin de arduino que obtiene voltajes

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int  SetTempUp = 6;    // pin 6 de Arduino con boton de incremento de temperatura
const int  SetTempDown = 7;  // pin 7 de Arduino con boton de decremento de temperatura

int TemButtonCounter = 32;   // contador de veces que se incrementa
                             // o decrementa el ajuste de temperatura
                             // valor inicial es de 32 grados
int TempButtonUpState = 0;   // estado actual del boton de incremento de temperatura
int TempButtonDownState = 0; // estado actual del boton de decremento de temperatura
int lastTempButtonState = 0; // ultimo estado (si se incremento o decremento la temperatura)

void setup()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  pinMode(SetTempUp, INPUT);
  pinMode(SetTempDown, INPUT);
 
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("TEMPERATURA LM35");
}

void loop()
{
   // lectura del boton de incremento de temperatura
   
   TempButtonUpState = digitalRead(SetTempUp);
 
   // comparar TempButtonState con su estado previo
 
   if (TempButtonUpState != lastTempButtonState) {
     
     // si el ultimo estado cambio, incrementar el contador
     
     if (TempButtonUpState == HIGH)
     {
      TemButtonCounter++;
     }
  }
   // guardar el estado actual como ultimo estado,
   // para la proxima vez que se ejecute el lazo
   lastTempButtonState = TempButtonUpState;
   
      // lectura del boton de decremento de temperatura
   
   TempButtonDownState = digitalRead(SetTempDown);

  // compara el estado del boton (incremento o decremento) con el ultimo estado
 
   if (SetTempDown != lastTempButtonState) {
     
     // si el ultimo estado cambio, decrementar el contador
     
     if (SetTempDown == HIGH)
     {
      TemButtonCounter--;
     }
   }
   // guardar el estado actual como ultimo estado,
   // para la proxima vez que se ejecute el lazo
   lastTempButtonState = SetTempDown;
 
  Serial.println(TemButtonCounter);
 
  tempC=(5*analogRead(tempPin)*100.0)/1024.0;
  lcd.setCursor(5,1);
  lcd.print(tempC);
  delay(1000);
  if(tempC < TemButtonCounter)
  {
   digitalWrite(13, HIGH);
   }
  else
  {
  digitalWrite(13, LOW);
   }
}
Logged

MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buenas compañero ya eh modificado el codig pero aun no logro que salga el valor en grados y  con una frase ejemplo

temperatura 1:           38°
frase                     valor obtenido

y los grados ya intente de varias formas pero no lo visualiza en display.
Logged

Venezuela
Offline Offline
God Member
*****
Karma: 16
Posts: 515
Ground, ground, always ground
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola GIGAFLARE,
Tu no podrias revisar la salida que obtienes en el monitor serial de Arduino IDE?  Estoy aclararia un poco si tienes un problema de hardware o software.
Logged

MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas compañero,

te comento ya pude solucionar el problema poniendo en el codigo los valores
Code:
byte grado[8] = {
  0b00111,
  0b00101,
  0b00111,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
//para asignar los valores del simbolo
void setup

lcd.createChar(1, grado);//asignarle al simbolo el valor 1 si no estoy mal

void loop

lcd.write(1);//para llamar al simbolo

espero que a un compañero le pueda servir esto, si alguien igual que yo no entiende bien el codigo
puede dejar mensaje para ayudarlo a entenderlo aun que soy principiante

con respecto a la salida serial estoy empezando a entender pero no la use en el codigo solo la inclui por el codigo que habias puesto
aun que me sirvio de mucho para entender como utilizar el monitor serial incluido en arduino ^^, muchas gracias compañero por tu ayuda

Logged

Pages: [1]   Go Up
Jump to: