Meu "problema" é meio confuso mas irei tentar explicar:

Por algum motivo, que não sei qual é, quando se tenta ler o ID da tag ele é exibido em "loop". Exemplo de código:

#include <SoftwareSerial.h>

SoftwareSerial rfidReader(2, 3);
char c= 0;

void setup()
{
Serial.begin(9600);
rfidReader.begin(9600);
}

void loop()
{
if (rfidReader.available() > 0)
{
c = rfidReader.read();
Serial.print(c);
}
}

Se eu executa-lo, a ID aparecerá normalmente, mas se eu trocar o 'print' por 'println' (da quebra de linha automática) aparecerá em linhas diferentes o ID, cada caractere em uma linha. Ex:

6

6

0

0

6

C

1

5

5

5

4

A

E eu não quero que isso aconteça, pois resgato o ID via serial e insiro o valor no banco de dados, mas insere 12 valores, um com cada caractere e isso não pode acontecer.

Como resolver??

Exibições: 485

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

Respostas a este tópico

Vc ta mandando para o serial monitor o caracter de cada vez, tanto é que se vc tentar ler outra tag, o codigo dela vai aparecer do lado da anterior.Faça a leitura do código inteiro e só depois mande imprimir usando o println().

#include <SoftwareSerial.h>

SoftwareSerial rfidReader(2, 3);
char c[12];

void setup()
{
Serial.begin(9600);
rfidReader.begin(9600);
}

void loop()
{

int i = 0;
if (rfidReader.available() > 0)
{
c[i] = rfidReader.read();

i++;

if(i == 11)

Serial.println(c);
}

}

Esse código não exibi nada... Eu fiz esse:

#include <SoftwareSerial.h>

SoftwareSerial rfidReader(2, 3);
char r[15], c;

void setup()
{
Serial.begin(9600);
rfidReader.begin(9600);
}

void loop()
{

if(rfidReader.available() > 0){
int i;
for(i=0;i<=12;i++){
c = rfidReader.read();
r[i] = c;
}
Serial.println(r);
}
}

Porém aparece vários caracteres inválidos. Alguém sabe resolver??

Pessoal... Com a ajuda do Almir Filho eu consegui resolver esse problema. Segue código com a solução:

#include <SoftwareSerial.h>

SoftwareSerial rfid(2, 3);

char c, conc[12];
int i;

void setup(){
Serial.begin(9600);
rfid.begin(9600);
}

void loop(){
if(rfid.available()){
c = rfid.read();

if ((c >= 32) && (c <= 126)){
conc[i] = c;
i++;
}

if(i==12){
Serial.println(conc);
i=0;
}
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço