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