Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« on: May 05, 2012, 10:40:47 am » |
salve a tutti, sarei interessato ad accendere dei led alla lettura di un tag rfid. L' id del tag viene inviato via seriale, ma il programma che ho fatto non riesce a fare nulla perchè è in grado di intercettare un solo carattere sulla seriale, qualcuno potrebbe consigliarmi un codice per fare questo? (L' id di un tag è alfanumerico e composto da 10 caratteri)
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #1 on: May 05, 2012, 10:45:08 am » |
Ciao
premesso che senza vedere il tuo codice è difficile... comunque:
- crei un array di char dove andrai a salvare i vari caratteri letti dalla seriale - quando avrai letto 10 caratteri farai un confronto tra il valore nel tuo array e quello che ti aspetti
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #2 on: May 05, 2012, 10:54:14 am » |
il problema è che non sono molto pratico, qualcuno avrebbe un codice da mandarmi?
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #3 on: May 05, 2012, 11:07:35 am » |
ciao
è impossibile mandarti un codice "pronto" senza neppure sapere come hai attaccato il lettore rfid, quale hardware hai, qual'è il codice "valido", a che pin hai collegato il led... inizia a postare quanto hai già scritto così possiamo sistemarlo insieme
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #4 on: May 05, 2012, 11:18:57 am » |
certo! scusa se non ti ho dato tutte le informazioni. Allora: il tx del lettore l'ho collegato all' rx di arduino e l'alimentazione del lettore collegata al gnd e +5v di arduino, uso un arduino uno e un mac con leopard e arduino ide 1.0 oppure 0022. Il codice è: int Led=12;
int incomingByte;
void setup()
{
pinMode(Led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == 'id della card') {
digitalWrite(Led, HIGH);
}
}
if (incomingByte == ' id della card') {
digitalWrite(Led, LOW);
}
} Il problema e che non funziona nulla! 
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #5 on: May 05, 2012, 11:36:58 am » |
l'ho scritto al volo... compila ma non ho sottomano un arduino per provarlo... prima di collegare il lettore rfid prova con il serial monitor inviando tu il codice che ti aspetti corretto... e mi aspetto che mi spieghi come funziona  #define LED 12 #define BUFFER_SIZE 11
const char* RFID_ID = "XXXXXXXXXX"; char buffer[BUFFER_SIZE]; byte buffer_position; int output_state;
void setup() { pinMode(LED, OUTPUT); output_state = LOW; digitalWrite(LED, output_state); Serial.begin(9600); buffer_position = 0; }
void loop() {
if(Serial.available() != 0) { byte rx_byte = Serial.read(); if(buffer_position < BUFFER_SIZE - 2) { buffer[buffer_position] = rx_byte; buffer_position++; } else { buffer[0] = rx_byte; buffer_position = 1; } if(buffer_position == BUFFER_SIZE - 1) { buffer[buffer_position] = '\0'; if(strcmp(buffer, RFID_ID) == 0) { if(output_state == LOW) output_state = HIGH; else output_state = LOW; digitalWrite(LED, output_state); } buffer_position = 0; } } }
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #6 on: May 05, 2012, 11:41:32 am » |
non esageriamo.... ho solo 12 anni  !
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #7 on: May 05, 2012, 11:46:59 am » |
mi dispiace ma non funziona!
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
0
Offline
Edison Member
Karma: 15
Posts: 1928
Have you mooed today?
|
 |
« Reply #8 on: May 05, 2012, 12:08:06 pm » |
Ciao cece99, io di solito quando ho qualcosa sotto mano, e non so proprio da che parte prenderlo, per prima cosa faccio una ricerca con google: http://bit.ly/ILQr1jVedrai che troverai molti progetti completi, a disposizione. CHe hw stai utilizzando (parlo del lettore rfid)?
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #9 on: May 05, 2012, 12:19:22 pm » |
utilizzo un lettore seedstudio che comunica in ttl! ho già cercato su google ma nulla.
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Tuscany
Offline
Edison Member
Karma: 20
Posts: 1062
|
 |
« Reply #10 on: May 05, 2012, 12:27:00 pm » |
ma se modifichi il tuo sketch cosi'
void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print(incomingByte,DEC); } }
sul SerialMonitor appare qualcosa ?
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #11 on: May 05, 2012, 12:38:04 pm » |
no, non appare nulla!
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Tuscany
Offline
Edison Member
Karma: 20
Posts: 1062
|
 |
« Reply #12 on: May 05, 2012, 12:47:08 pm » |
Allora, presupposto che il Reader RFID funzioni, che sia alimentato alla tensione giusta, che il TAG sia della stessa frequenza, che il Baudrate sia identico, che...... etc etc etc
c'e' un problema di collegamenti.
Ma probabilmente il problema e' una delle cose appena menzionate.
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1145
http://cesarecacitti.wordpress.com/
|
 |
« Reply #13 on: May 05, 2012, 12:53:06 pm » |
impossibile: ho caricato uno sketch che mostra il numero del tag e funziona tutto: mi mostra l' id! i tag e il reader sono a 125 khz!
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #14 on: May 05, 2012, 01:00:26 pm » |
ok c'erano un paio di errori, questo va provato inserendo via serial monitor 'XXXXXXXXXX' mi cambia lo stato del led sulla porta 6... #define LED 6 #define BUFFER_SIZE 11
const char* RFID_ID = "XXXXXXXXXX"; char buffer[BUFFER_SIZE]; byte buffer_position; int output_state;
void setup() { pinMode(LED, OUTPUT); output_state = LOW; digitalWrite(LED, output_state); Serial.begin(9600); buffer_position = 0; }
void loop() {
if(Serial.available() != 0) { byte rx_byte = Serial.read(); if(buffer_position < BUFFER_SIZE - 1) { buffer[buffer_position] = rx_byte; buffer_position++; if(buffer_position == BUFFER_SIZE - 1) { buffer[buffer_position] = '\0'; if(strcmp(buffer, RFID_ID) == 0) { if(output_state == LOW) output_state = HIGH; else output_state = LOW; digitalWrite(LED, output_state); } buffer_position = 0; } } } }
|
|
|
|
|
Logged
|
|
|
|
|
|