Bom dia pessoal, tudo bem?

 Tenho um Atmega 328p e preciso que ele trate uma String...

 A minha string de teste é a seguinte:

"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110"

O problema começa quando ele "corta" essa String, sketch:

void setup() {
     Serial.begin(9600);
}
void loop() {
     if(Serial.available()){
          if(Serial.read() == '0'){
               Serial.write("0");
          }else{
               Serial.write("1");
         }
    }
}

Ele me retorna apenas "11111111111"...

Percebi que se eu mando diferentes Strings ele me retorna diferentes tamanhos também, mas nunca o tamanho correto...

Alguém sabe o que pode ser?

Exibições: 65

As respostas para este tópico estão encerradas.

Respostas a este tópico

Olá.

 O Serial.write, a principio, recebe um caractere. 

algo como:

Serial.write('1'); // Com aspas simples.

Veja se não é isso.

Como vc manda os caracteres ? Tem algum delay ?

Convém sempre que mandar incluir alguns pequenos delays e sempre que receber nunca colocar delays.

Acontece que se vc colocar em loop o envio de strings rapidamente vc lota o buffer de transmissão. É preciso enviar para o buffer de transmissão em velocidade compatível com a capacidade de transmissão.

Já receber é o oposto, vc precisa estar livre pra receber sem delays.

Teste colocando a string no terminal da IDE e transmita. Veja se ela é recebida e interpretada corretamente.

Vale incluir um contador de caracteres recebidos.

Sobre o write com aspas simples ou duplas, pela documentação:

https://www.arduino.cc/reference/pt/language/functions/communicatio...

Tanto faz, preciosismo meu... 

Boa tarde Eduardo, tudo bem?

Então.. não consigo mandar com pequenos delays pois quem está mandando esta String é um HC-05, o que eu poderia configurar é apenas o baudrate, porém, não sei se surge efeito nisto.

Se não é interessante eu colocar delays para receber, então eu teria que receber tudo, armazenar em variável e depois tratá-lá?

Mas enfim, o problema é que eu não consigo receber, então nem teria como eu armazenar tudo em uma variável..

Teria alguma solução para isto?

Pelo trecho que vc enviou parece tudo perfeito. O erro não está aih. Pode inclusive testar só esse trecho de forma isolada, ele vai funcionar.

Mande fotos da montagem, esquema, o codigo completo, facilita.

Bom dia Eduardo, tudo bem?

 Consegui resolver o problema, apenas criei um laço para que eu receba tudo primeiramente e armazene em um vetor.

 Aí depois eu tratei o meu vetor. :)

Valeu!

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço