// Serial Library
#include <SoftwareSerial.h>
int rxPin=2;
int txPin=3;
SoftwareSerial RfidData = SoftwareSerial(rxPin,txPin); // Com to Scanner TX's tied together
void setup(){
Serial.begin(9600);
RfidData.begin(9600);
}
void loop(){
Serial.println(RfidData.read());
}
#include <SoftwareSerial.h>
//creo una nuova porta seriale via software
SoftwareSerial RfidData = SoftwareSerial(2, 3);
void setup() {
//definisco il pin2(RX) come ingresso
pinMode(2, INPUT);
//definisco il pin3(TX) come uscita
pinMode(3, OUTPUT);
//setto la velocita delle seriali (software e hardware)
RfidData.begin(9600);
Serial.begin(9600);
}
void loop() {
Serial.println(RfidData.read());
delay(500);
}
Così mi stampa dei numeri ma quello che io vorrei ottenere è il tag rfid? Tutto questo mi servirebbe perchè se avvicino la chiave giusta si accende un led verde altrimenti un led rosso e scatta un lampeggiante
non ti aspetti che venga letto il TAG completo !!!!
STUDIATEVELI I REFERENCES !!! Su questo forum sarà stato ripetuto fino alla nausea che la Serial.read() legge UN SINGOLO carattere e che ti devi gestire TU il loop di lettura di tutti i caratteri !!!
Peggio che mai fare il cast che hai fatto nella modifica successiva ... la Serial.read() ritorna UN char e basta !!!
Certo, -1 e -1 erano perché non aspettavi la Serial.available() e, se non c'è nulla, la Serial.read() ritorna -1
2, 48,51,48,48,51,48,65,50,55,56,69,57 altro non sono che i caratteri ricevuti, UNO alla volta, stampati in valore decimale, il cui equivalente ASCII è : STX 0 3 0 0 3 0 A 2 7 8 E 9
Guglielmo
P.S. : STX rappresenta 'Start of Text' (0x02) ed è un codice ASCII di controllo flusso dati
pres961:
Cioè non ho ben capito dovrei fare un ciclo che legge carattere per carattere?
Si, esatto.
Poi tu dai questo comando: confronto = (String)Serial.read(); ovvero la String confronto è solo 1 carattere, quello ricevuto, non tutta la stringa ricevuta e la confronti con String tag.
Il confronto tra tag e confronto va bene, ma lo puoi fare solo dopo aver ricevuto un tot di caratteri.
confronto = confronto + (char) Serial.read();
Questo mette dentro e "accumula" nella String i vari caratteri
Ma questo non puoi farlo all'infinito!!! E devi mettere dentro solo i valori validi.
Bé ... se vuoi imparare qualche cosa SI, devi leggere carattere a carattere e gestire la cosa, se ne è parlato mille volte sul forum ed è una bella esperienza che ti servirà anche in futuro, se invece vuoi la "pappa fatta" ...
... puoi o usare la readBytes() oppure usare la readBytesUntil() ... guardatele e vedi quella che si adatta a cio che tu sai debba arrivarti.
Naturalmente NO ... in C non puoi mica sommare un char ad un altro ... devi gestire un array di char ...
... t'ho detto, fai un po' di ricerche, se ne è parlato molte volte !!!
Comunque ... necessita un tuo SERIO studio del C credo ... altrimenti non so cosa riuscirai a fare ...