Ir ao conteúdo
  • Cadastre-se

Nuno Azevedo

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá a todos, sou um estudante e estou a fazer um projeto que consiste mostrar num display o meu nome e de um colega, a hora e data e o codigo de uma tag RFID e estou a usar uma arduino uno. O problema e que apos alguns segundos o display começa a mostrar coisas que não devia e ficam algumas coisas fora do sito. Agradeço desde já toda a ajuda e aqui esta um video do funcionamento --------------------------------------------------------------------------- #include <SoftwareSerial.h> SoftwareSerial RFID(2, 3); #include "Wire.h" #define DS1307_ADDRESS 0x68 byte zero = 0x00; int segundos = 0; int minutos = 0; int horas = 0; int diadasemana = 0; int diadomes = 0; int mes = 0; int ano = 0; void setup() { Wire.begin(); RFID.begin(9600); Serial.begin(9600); //SelecionaDataeHora(); clearLCD(); Hidecursor(); backlightOn(); } int Tempo=0; int Tempo2=0; void loop() { char i; if (RFID.available() > 0) { i = RFID.read(); if (i==2){ cursorSet(1,61); } if (i>47){ Serial.print(char(i)); } } if(Tempo>1000){ Mostrarelogio(); Tempo=0; } if(Tempo2>1000){ titulo(); Tempo2=0; } delay(4); Tempo=Tempo+4; Tempo2=Tempo2+4; } void SelecionaDataeHora() //Seta a data e a hora do DS1307 { byte segundos = 0; //Valores de 0 a 59 byte minutos = 24; //Valores de 0 a 59 byte horas = 11; //Valores de 0 a 23 byte diadasemana = 4; //Valores de 0 a 6 - 0=Domingo, 1 = Segunda, etc. byte diadomes = 12; //Valores de 1 a 31 byte mes = 2; //Valores de 1 a 12 byte ano = 15; //Valores de 0 a 99 Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); Wire.write(ConverteParaBCD(segundos)); Wire.write(ConverteParaBCD(minutos)); Wire.write(ConverteParaBCD(horas)); Wire.write(ConverteParaBCD(diadasemana)); Wire.write(ConverteParaBCD(diadomes)); Wire.write(ConverteParaBCD(mes)); Wire.write(ConverteParaBCD(ano)); Wire.write(zero); //Start no CI Wire.endTransmission(); } byte ConverteParaBCD(byte val){ //Converte o número de decimal para BCD return ( (val/10*16) + (val%10) ); } byte ConverteparaDecimal(byte val) { //Converte de BCD para decimal return ( (val/16*10) + (val%16) ); } void Mostrarelogio() { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); segundos = ConverteparaDecimal(Wire.read()); minutos = ConverteparaDecimal(Wire.read()); horas = ConverteparaDecimal(Wire.read() & 0b111111); diadasemana = ConverteparaDecimal(Wire.read()); diadomes = ConverteparaDecimal(Wire.read()); mes = ConverteparaDecimal(Wire.read()); ano = ConverteparaDecimal(Wire.read()); cursorSet(1,21); Serial.print(" Hora: "); Serial.print(horas); Serial.print(":"); Serial.print(minutos); Serial.print(":"); Serial.print(segundos); Serial.print(" "); cursorSet(1,41); Serial.print(" Data: "); Serial.print(diadomes); Serial.print("/"); Serial.print(mes); Serial.print("/"); Serial.print(ano); Serial.print(" "); } void clearLCD(){ Serial.write(12); } // start a new line void newLine() { Serial.write(10); } // move the cursor to the home position void cursorHome(){ Serial.write(1); } // turn on backlight void backlightOn(){ Serial.write(char(19)); // use 0 minutes to turn the backlight on indefinitely } void Hidecursor(){ Serial.write(4); } void cursorSet(int xpos, int ypos){ Serial.write(char(3)); Serial.write(xpos); //Column position Serial.write(ypos); //Row position } void titulo(){ cursorSet(1,1); Serial.print(" NUNO / TIAGO"); } ----------------------------------------------------------------------------

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...