Boa noite
adquirir um LCD nokia 5110, mas estou apanhando com o Display, segui o tutorial do Arduino & CIA http://www.arduinoecia.com.br/2013/05/display-lcd-nokia-5110.html, Tem poucos tutoriais que explicam o funcionamento deste LCD, apesar de ser bastante utilizado. Tenho um RTC ds1307 e consegui fazer aparecer a hora no display, mas a tela fica piscando, apesar de ter feito poucas alterações no código original do mesmo.
Como bom hobbysta estou automatizando meus aquarios, iniciando pelo alimentador, a ideia é informa no LCD a hora do RTC, a quantidade de ração que vai cair (no caso vai aparecer os millisegundos que o motor ficara acionado) e os horários em que ocorrerá o arraçoamento.
O alimentador está funcionando, agora estou fazendo os devidos upgrades nele rsrs.
Se alguém tiver algum material sobre como configurar este LCD ou puder contribuir eu agradeço.
Código alimentador do aquário
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <Wire.h>
#include "RTClib.h"
// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)
RTC_DS1307 rtc;
int motPin = 6; // Alimentador 1
int motPin2 = 7; // Alimentador 2
int motState = LOW;
int motState2 = LOW;
int dose1 = 110; // aquario killifish
int dose2 = 110; // betta
void setup()
{
Serial.begin(9600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
pinMode(motPin, OUTPUT); // motor 1
pinMode(motPin2, OUTPUT); // motor 2
}
void loop()
{
display ();
alimentador1 (); //killi
alimentador2 (); // betta
}
void display (){
DateTime now = rtc.now();
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
display.begin();
display.setContrast(50); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
display.setTextSize(1); //Seta o tamanho do texto
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(0,0); //Seta a posição do cursor
display.print(' ');
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.print(':');
display.print(now.second(), DEC);
display.println();
delay(1000);
display.setTextColor(WHITE, BLACK);
display.println("Aquario 1 =");
display.print(dose1);
display.println(" Aquario 2 =");
display.print(dose2);
display.setTextSize(0);
display.setTextColor(BLACK);
display.display();
}
void alimentador1 (){
DateTime now = rtc.now();
digitalWrite(motPin, motState);
if ((((now.hour() == 6) || (now.hour() == 12) || (now.hour() == 18)) && (now.minute() == 29) && (now.second()<=2))){ // hora da ação
digitalWrite(motPin2, HIGH);
delay (dose1); // seria o tempo necessário para a dose correta de ração
Serial.println("ligou mot1");
digitalWrite(motPin, LOW);
delay(2000); // garante que para o proximo if de tempo o segundo inicial já passou
}
}
void alimentador2 (){
DateTime now = rtc.now();
digitalWrite(motPin2, motState2);
if ((((now.hour() == 6) || (now.hour() == 12) || (now.hour() == 18)) && (now.minute() == 30) && (now.second()<=2))){ // hora da ação
digitalWrite(motPin2, HIGH);
delay (dose1); // seria o tempo necessário para a dose correta de ração
Serial.println("ligou mot1");
digitalWrite(motPin2, LOW);
delay(2000); // garante que para o proximo if de tempo o segundo inicial já passou
}
}
Tags:
up
Luiz obrigado pela dica, contudo se eu insiro a função display na função Setup infelizmente o display não funciona, pelo menos da forma que escrevi o código. já estou uns 3 dias pesquisando mas não achei nenhum material sobre o assunto que não precise definir pixel por pixel do LCD, igual a este do Arduino & CIA, mas estou tendo dificuldades em fazer informar a hora.
Quanto a modularizar eu não sei se entendi a dica, se for para dividir em varias funções, eu tentei fazer o código mais simples e em pequenos blocos para ficar melhor de se trabalhar. Agora se for relativo a formatação do código, quando eu copio o código do sublime e colo aqui ele perde toda a formatação ficando da forma que está ai em cima infelizmente.
E quanto ao pessoal programar mal, vc vai ter que chamar atenção de de bastante gente, pelo que percebo no fórum 80% dos participantes é do nível iniciante e publicam seu código justamente por não saberem fazer e pedir opinião dos demais que possuem mais experiencia, alem do mais acho que foi para isso q fizeram o fórum não é mesmo.
Mas para mim que sou leigo, só de escrever alguma coisa que faça algo funcionar já chega a ser magico.
Mas reconheço que vc tem razão.
Luiz, obrigado novamente, entendi o que vc quis dizer vou tentar fazer a noite.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues.
Ativado por