EasyVr Com leitura Serial (TX RX) - Leitura de Hora (RTC)

Boa noite Pessoal.

Estou com um probleminha chato no meu projeto:

Escopo:            Arduino Uno + Arduino Mega com EasyVR

Comunicação:   Serial (Porta 0,1 e GND do Uno)  + Serial (Porta 1,0 e GND do Mega).

Funciona basicamente assim:

1 - Mega manda uma "String" para o Uno.   Ex:  "Hora"

2 - Uno Retorna uma "String" com a Hora.   Ex:  "10:10"

A Comunicação está funcionando, porém na 1ª interação a minha leitura é 0.

Só quando eu chamo novamente que me traz os valores corretos e o EasyVR me diz o Horário.

Debug de Print

hora00

hora2249

Alguém poderia me ajudar?

Por que será que o MEGA já não me traz o valor da HORA na 1ª Interação?

Segue o Código:

Uno

Serial.print(String(clock.hour, DEC));
Serial.print(":");
Serial.print(String(clock.minute, DEC));

Mega

Case "X":

{

Serial.write("hora");                          //Manda para o UNO via (TX,RX) Pinos(0,1)

String msg = 0;                                //msg = Mensagem -> INT, Mensagem em Byte
int index = 0;

if (Serial.available()) {
    delay(100);                                       // Delay faz receber toda Mensagem de uma vez
while(Serial.available()){                      // "Se Disponivel = Verifica se há Mensagem
    msg += (char)Serial.read();              // Armazena a mensagem lida

index = msg.indexOf (':');                     // Orientação para identificar o antes e depois: (10) : (10)

String strHora = msg.substring(0,index);
String strMin = msg.substring((index+1),index+3);

int tabSonsHora = strHora.toInt()+13;            // 13 - Diferença de Índice na tabela de Sons
int tabSonsMin = strMin.toInt()+13;

easyvr.playSound(tabSonsHora, EasyVR::VOL_FULL);

     if(tabSonsHora>1)
         easyvr.playSound(76, EasyVR::VOL_FULL);                             //Horas
     else

         easyvr.playSound(75, EasyVR::VOL_FULL);                             //Hora


easyvr.playSound(tabSonsMin, EasyVR::VOL_FULL);
      if(tabSonsMin>1)
          easyvr.playSound(74, EasyVR::VOL_FULL);                             //Minutos
      else
          easyvr.playSound(73, EasyVR::VOL_FULL);                             //Minuto

}Break;

Fim Case

 

Exibições: 316

Responder esta

Respostas a este tópico

Resolvido!!!!!!

O Celso Me Ajudou era só um delay().

Ficou Assim:  Acrescentei o Delay(500); na segunda linha, depois que envio a String "Hora";

Serial.write("hora");   //Manda para o UNO via (TX,RX) Pinos(0,1)

delay(500);

Valeu  Celso Eiju Ito  (http://labdegaragem.com/profile/eijuito)

podia compartilha o codigo  da easyvr fala as horas o codigo completo

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço