Pages: [1]   Go Down
Author Topic: Problemas con lcd valore extraños  (Read 690 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

estoy creando un sistema para control un aquarium voy poco a poco no soy muy electronico pero si me defiendo en programa jejej la cosa es que cre un temporizador para la luces del acurio y que me muestre el estado en un lcd pero cuando le da la gana funciona bien la lcd solo la lcd tiene problema por incluso con la lcd mala sigue enciendo y apgando las luces a la hora indica aqui le dejo un video y que me pudieran ayudar estoy usando arduino nano y discupen las conecciones no te nia para una caja plastica use un plato de comida china jejeje pero ya vien lo demas gracias

  http://youtu.be/IaBVQ4SBX1w 

Code:
#include <Wire.h>
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
#define DS1307_I2C_ADDRESS 0x68

LiquidCrystal lcd(12, 11, 9, 8, 7, 6);
RTC_DS1307 RTC;
char months[][12] = {"No","Ener", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Agos", "Sep", "Oct", "Nov", "Dic"};

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

int filtro = 4;
int bombilla = 3;

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

   void setup()
   {
     
    Serial.begin(9600);
    lcd.createChar(0, smiley);
    lcd.begin(16, 2);
    Wire.begin();
    RTC.begin();
   
    pinMode(filtro, OUTPUT);
    pinMode(bombilla, OUTPUT);

    delay(2000);
    lcd.clear();   
    lcd.setCursor(3, 0);
    lcd.print("INICIANDO!");     
     for(int i=5; i>0; i--)
    {
     lcd.setCursor(7, 1);
     lcd.print(i);
     delay(1000);     
     }
     lcd.clear();   
 }
   
  void loop() {
 
  lcd.setCursor(3, 0);
  DateTime now = RTC.now();
  int mins = now.minute();
  int secs = now.second();
  int hr = now.hour(); 
   filtro_hora(mins, hr);
   Lamparas (mins, hr);
   
  if(hr <= 12 && hr >= 1){
    if(hr<10){
      lcd.print(0);
    }
  lcd.print(hr);
  }else if(hr == 0 ){   
  int hrs =  hr + 12; 
  lcd.print(hrs); 
  }else{
  int hrs =  hr - 12;
   if (hrs<10){
     lcd.print(0);
   } 
  lcd.print(hrs);
  }
  lcd.print(":");
  if (mins<10)
  {
    lcd.print(0);
  }
  lcd.print(mins);

  lcd.print(" ");
  if(hr >= 12){
  lcd.print("PM");
   }else{
   lcd.print("AM");
   }
   lcd.print(" "); 
   lcd.write(8);
 
  int estado_luz = digitalRead(bombilla);
  if(estado_luz == 0){
    lcd.setCursor(9,1 );
    lcd.print("Lu Ence");
    delay(2);
   }else{     
    lcd.setCursor(9,1 );
    lcd.print("Lu Apag");
    delay(2);
   }
   
  int estado_fil = digitalRead(filtro);
  if(estado_fil == 1){
    lcd.setCursor(0,1 );
    lcd.print("Filt Enc");
    delay(2);
   }else{     
    lcd.setCursor(0,1 );
    lcd.print("Fil Apag");
    delay(2);
   }
   
   }
   
  void filtro_hora(int minutos, int horas) {
  int Iniciofiltro=420;
  int Finfiltro=1350;
  int Tiempo; 
  Tiempo=horas*60+minutos;
 
 
  if (Tiempo >= Iniciofiltro && Tiempo <= Finfiltro )//decimos al rele el encendido y apagado//
  {
    digitalWrite(filtro, HIGH);
    delay(1000);   
  }
  else
  {     
    digitalWrite(filtro, LOW);
    delay(1000);
  }
  }
 
void Lamparas (int minutos, int horas) {
  int EncendidoLamparas=1020;
  int ApagadoLamparas=1350;
  int Tiempo2; 
  Tiempo2=horas*60+minutos;

   
  if (Tiempo2 >= EncendidoLamparas && Tiempo2 <= ApagadoLamparas)
  {
    digitalWrite(bombilla, LOW);
    delay(1000);
  }
  else
  {
    digitalWrite(bombilla, HIGH);
    delay(1000);
  }
 
  }
 
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 110
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pinta que es un mal contacto.
o localizar el contacto que falla o mete en bucle cada X segundos la instrucción
lcd.begin(16, 2);
Esto te hará recuperar el funcionamiento de la pantalla, aunque se percibe un parpadeo que no es agradable.
Logged

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

Hola Alex,
Lo poco que puedo deducir de tu codigo y video es que tienes un conflicto entre tu pantalla y los pines 3 (bombilla) y 4 (filtro). Algunos controladores de pantallas usan esos pines con el 4to. bit superior ( de lenguaje Japones o Europeo). Seria bueno que intentaras correr tu codigo asignando otros pines para bombilla y filtro. Es solo una idea pues hace tiempo que no programo LCDs. Saludos!   
Logged

Pages: [1]   Go Up
Jump to: