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?

Exibições: 322

Responder esta

Respostas a este tópico

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?

estou uso esse shield no meu projeto.

um 16x2 normal, me diz uma coisa, dá erro no dia e ano tbm ou só no mês?

só no mês

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço