Utilizzo del sensore di colore GY_31
Con la libreria fornita all'interno di qusta cartella l'inizializzazione e la lettura dei vari parametri viene automatizzata. L'unico compito che spetta all'utilizzatore è di mappare i dati con una scala che abbia senso per come sta usando il sensore. Ad esempio se si usa il sensore al buio, oppure fuori al sole, oppure illuminando con i led sopra la scheda i dati di calibrazione cambiano enormemente.
Per questo motivo consiglio di decidere una modalità di lettura, impostare il programma con quella modalità e scrivere i dati su un plotter seriale. Ora osserviamo come si comporta il sensore quando mettiamo davanti al sensore dei cartoncini di controllo (rosso, blu e verde). E mappiamo con il comando map(value, sx, dx, mappedsx, mappedDx)
.
Ad esempio se vediamo che quando inseriamo un cartoncino nero davanti al sensore il valore sale a 90, e quando invece mettiamo un cartoncino rosso scende a 15, possiamo usare il comando:
map(value, 90, 15, 0, 100)
per fare in modo che quando vede nero ci dia un valore prossimo allo 0, e quando vede del rosso ci dia valori vicini al 100.
#include"GY_31.h"
GY_31 sensore;
void setup() {
/*nella libreria ci sono 2 diversi setup:
setup(s0, s1, s2, s3, out)
setup(s0, s1, s2, s3, out, led) //inizializza anche il pin Led
e leggere i valori con:
read(mod)dove mod può essere RED GREEN BLUE CLEAR
attenzione, il sensore non è calibrato, nel 90% dei casi bisogna calibrare il sensore e rimapparlo con dei valori sensati. sotto vedete dei parametri che dovrebbero andare bene, ma potrebbero non essere perfetti
set_led(mod) come da nome, si decide se accendere o meno i led
*/
//S0, S1, S2, S3, out
sensore.setup(8, 9, 10, 11, 12, 13);
sensore.set_led(HIGH);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Rosso: ");
Serial.println(sensore.read(RED)); // dato grezzo
Serial.print("Rosso calibrato: ");
Serial.println(map(sensore.read(RED), 60, 15, 0, 100)); // dato calibrato
/*
stando al datasheet, le calibrazioni corrette sono:
rosso: map(data,60,15,0,100)
blu: map(data,80,11,0,100)
verde: map(data,80,20,0,100)
ma sentitevi liberi di cambiarle a vostro piacimento
*/
}