coloquei a programação no arduino , sirene escolar com arduino só que na tela do lcd esta mostrando a dta dessa forma , 03/90/2017.
o que devo fazer?
Tags:
Bom dia,
Deve haver algum problema em seu sketch. Poste, de acordo com as regras do forum seu programa para ver se podemos ajudar.
Everton
boa tarde Everton.
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8,9,4,5,6,7);
RTC_DS1307 rtc;
int hora = 0;
int minuto = 0;
int segundo = 0;
void setup () {
Wire.begin();
rtc.begin();
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
if (!rtc.isrunning()) {
lcd.print("RTC parado, vou ajustar com a hora da compilacao...");
rtc.adjust(DateTime(__DATE__, __TIME__));
}
}
void printnn(int n) {
// imprime um numero com 2 digitos
// acrescenta zero `a esquerda se necessario
String digitos = String(n);
if (digitos.length() == 1) {
digitos = "0" + digitos;
}
lcd.print(digitos);
}
void loop () {
// Obtem a data e hora correntes e armazena em tstamp
DateTime tstamp = rtc.now();
hora = (tstamp.hour());
minuto = (tstamp.minute());
segundo = (tstamp.second());
// Mostra no monitor serial a data e hora correntes
lcd.setCursor(3, 0);
printnn(tstamp.day());
lcd.print('/');
printnn(tstamp.month());
lcd.print('/');
lcd.print(tstamp.year(), DEC);
lcd.setCursor(3, 1);
lcd.print (' ');
printnn(tstamp.hour());
lcd.print(':');
printnn(tstamp.minute());
lcd.print(':');
printnn(tstamp.second());
delay(1000);
lcd.clear();
//lcd.println();
Serial.print (hora);
Serial.print (":");
Serial.print (minuto);
Serial.print (":");
Serial.println (segundo);
// Periodo da manha
if (hora == 7 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 9 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 9 && minuto == 50 && segundo == 0) {
alarme();
}
if (hora == 11 && minuto == 35 && segundo == 0) {
alarme();
}
//periodo da tarde
if (hora == 13 && minuto == 20 && segundo == 0) {
alarme();
}
if (hora == 15 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 15 && minuto == 50 && segundo == 0) {
alarme();
}
if (hora == 17 && minuto == 20 && segundo == 0) {
alarme();
}
}
void alarme() {
digitalWrite(13, HIGH);
digitalWrite(6, HIGH);
lcd.setCursor(6, 0);
lcd.print ("CURSO");
lcd.setCursor(3, 1);
lcd.print ("PROGRAMACAO");
delay(10000);
digitalWrite(13, LOW);
digitalWrite(6, LOW);
lcd.clear();
}
Olá Tiago,
existem algumas linhas em seu programa que necessitam ser corrigidas para a sintaxe correta da linguagem.Corrija as seguintes linhas:
// Mostra no LCD a data
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(tstamp.day());
lcd.print('/');
lcd.print(tstamp.month());
lcd.print('/');
lcd.print(tstamp.year(), DEC);
lcd.setCursor(3, 1);
lcd.print (' ');
lcd.print(tstamp.hour());
lcd.print(':');
lcd.print(tstamp.minute());
lcd.print(':');
lcd.print(tstamp.second());
lcd.println();
delay(1000);
Nos dê retorno.
Um abraço
boa noite, fiz o que me indicou mas não deu certo
Boa tarde Tiago,
Me diz uma coisa me responde o seguinte:
Você consegui compilar o programa?
A hora mostrada na serial , os segundos são incrementados?
Poste o seu scketch anexado para verificarmos.
Everton
boa noite Everton.
vc viu a programação que te mandei, pois nela eu queria implementar botões pois estou utilizando shield LCD com teclado, e eu quero poder mudar a hora ou data tem como vc me ajudar.
desde ja muito obrigado pela sua atenção.
poderia postar o código? Qual modelo de dislay?
um 16x2 normal, me diz uma coisa, dá erro no dia e ano tbm ou só no mês?
só no mês
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por