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
}
}

Exibições: 1176

Responder esta

Respostas a este tópico

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço