Ir para conteúdo
Fórum Script Brasil
  • 0

Pedido de Ajuda - Display mostra caracteres estranhos passado uns segu


NunoAzevedo

Pergunta

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 https://www.youtube.com/watch?v=LOEH346Uq8w&feature=youtu.be

---------------------------------------------------------------------------
#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");
}

----------------------------------------------------------------------------

Editado por NunoAzevedo
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...