Salve a tutti,
Ho comprato il segui linea a 5 canali della Sunfounder, e dello sketch di esempio che hanno nel loro sito/wiki non ho capito nulla, ho gia usato dei segui linea in passato, ma sempre ad 1 solo sensore ed erano molto semplici da utilizzare. Qualcuno mi darebbe una mano a capire come leggere ed interpretare i dati che mi fornisce questo segui linea, utilizzando arduino ?
E' un array di sensori che ti invia, sul bus I2C (quindi su quello va collegato), il valore di luminosità (quindi un dato analogico) letto da ogni sensore (quindi avrai un numero di 16 bit per ciascun elemento trasmittente/ricevente).
A te poi esaminare i vari valori e capire il chiaro(riflettente)/scuro(non riflettente) che significato abbiano ... :
Nota che per ciascun sensore, se ho capito bene leggendo il loro codice ...
#include <Wire.h>
int count = 0;
int raw_result[10];
int analog_result[5];
int high_byte;
int low_byte;
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
Serial.println("Ready");
delay(1000);
}
void loop() {
Wire.requestFrom(0x11, 10); // request 6 bytes from slave device #8
while (Wire.available()) { // slave may send less than requested
int c = Wire.read(); // receive a byte as character
Serial.print(c, HEX); // print the character
Serial.print(" ");
raw_result[count] = c;
count += 1;
}
Serial.println(' ');
count = 0;
for (int i = 0; i < 5; i++) {
high_byte = raw_result[i * 2] << 8;
low_byte = raw_result[i * 2 + 1];
analog_result[i] = high_byte + low_byte;
Serial.print(analog_result[i]);
Serial.print(" ");
}
Serial.println(' ');
delay(500);
}
... vengono inviati DUE bytes, prima il MSB e poi il LSB che devi mettere assieme in un intero non segnato (16 bit) per avere il valore analogico cercato.
Attenzione che alcuni commenti, in quel codice, mi sembrano errati ...
... esempio dice "// request 6 bytes from slave device #8" quando, in verità fa una "Wire.requestFrom()" per 10 bytes dall'indirizzo 0x11 :
Allora, intanto, cortesmente, quando si quota un post, NON è necessario riportarlo (inutilmente) tutto; bastano poche righe per far capire di cosa si parla ed a cosa ci si riferisce. Gli utenti da device "mobile" ringrazieranno per la cortesia
Poi, non so se il bianco è riportato come valore minimo o massimo, questo devi verificarlo tu facendo una semplicissima prova con un cartoncino completamente bianco ed uno completamente nero ... così hai i due estermi e sai tra che valori ti muovi
gpb01:
Poi, non so se il bianco è riportato come valore minimo o massimo, questo devi verificarlo tu facendo una semplicissima prova con un cartoncino completamente bianco ed uno completamente nero ... così hai i due estermi e sai tra che valori ti muovi
Non puoi capire quanto tu mi abbia aiutato, grazie mille e scusami se prima ho riportato l'intero messaggio