Marcia e Davi, aparecem na primeira linha do display quando acionado o push da tela do celular, e as outras mensagens na segunda linha substituindo a anterior a cada toque.
Nestas telas também envia a hora para o display e liga relés
//Programa: Imprime data e hora no display lcd 16x2
//Baseado no virtuabotixRTC
//Biblioteca virtuabotixRTC
#include <virtuabotixRTC.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
// Determina os pinos ligados ao modulo
// RTC(clock, data, rst)
virtuabotixRTC RTC(6, 7, 8);
//Meu Logo
byte a[8]= {B11111,B11111,B11000,B11111,B11111,B00000,B00000,B00000,};
byte b[8]= {B11111,B11111,B10001,B11011,B11011,B11011,B11111,B11111,};
byte c[8]= {B11111,B11111,B00011,B11111,B11111,B00000,B00000,B00000,};
byte d[8]= {B11111,B11011,B11011,B11011,B11011,B11011,B11011,B11111,};
void setup()
{
lcd.init();
lcd.backlight();
lcd.createChar(1, a);
lcd.createChar(2, b);
lcd.createChar(3, c);
lcd.createChar(4, d);
//Coloca meu logo no final do display, utilizando as colunas 13, 14 e 15
lcd.setCursor(13,0); //Coloca o cursor na coluna 0, linha 0
lcd.write(1); //Escreve o simbolo
lcd.setCursor(14,0); //Coloca o cursor na coluna 0, linha 0
lcd.write(2); //Escreve o simbolo
lcd.setCursor(15,0); //Coloca o cursor na coluna 0, linha 0
lcd.write(3); //Escreve o simbolo
lcd.setCursor(14,1); //Coloca o cursor na coluna 0, linha 0
lcd.write(4); //Escreve o simbolo
// Informacoes iniciais de data e hora
/*depois da data e hora ajustada, comente a linha abaixo e compile novamente,
ou seja, a hora ja foi armazenada no RTC e agora se você "recompilar"
a hora e a data já estão em andamento.
O Macete é colocar a hora com um minuto adiantado e quado chegar a três segundos antes
da hora que você ajustou clique para carregar, depois é só recompilar comentando a linha
abaixo
*/
// (segundos, minutos, hora, dia da semana, dia do mes, mes, ano)
//RTC.setDS1302Time(00, 47, 20, 6, 03, 07, 2015);
}
void loop()
{
// Le as informacoes do CI
RTC.updateTime();
// Imprime as informacoes no serial monitor
lcd.setCursor(0,0);
//Serial.print("Data: ");
// Chama a rotina que imprime o dia da semana
printdayofweek(RTC.dayofweek);
//lcd.print(" ");
lcd.print(RTC.dayofmonth);
lcd.print("/");
lcd.print(RTC.month);
lcd.print("/");
lcd.print(RTC.year);
lcd.setCursor(0,1);
// Adiciona um 0 caso o valor da hora seja <10
if (RTC.hours < 10)
{
lcd.print("0");
}
lcd.print(RTC.hours);
lcd.print(":");
// Adiciona um 0 caso o valor dos minutos seja <10
if (RTC.minutes < 10)
{
lcd.print("0");
}
lcd.print(RTC.minutes);
lcd.print(":");
// Adiciona um 0 caso o valor dos segundos seja <10
if (RTC.seconds < 10)
{
lcd.print("0");
}
lcd.print(RTC.seconds);
delay( 1000);
}
void printdayofweek(int day)
{
switch (day)
{
case 1:
lcd.print("Sun");
break;
case 2:
lcd.print("Mon");
break;
case 3:
lcd.print("Tue");
break;
case 4:
lcd.print("Wed");
break;
case 5:
lcd.print("Thu");
break;
case 6:
lcd.print("Fri");
break;
case 7:
lcd.print("Sat");
break;
}
}