Étape 3: Arduino côté - logiciels
Je souligne les parties les plus intéressantes provenant des quatre sections de l’esquisse de l’Arduino :
1• appel de bibliothèques
#inclure < Wire.h > #include "I2C_RGBC_Reader.h"
2• définition des variables et constantes
I2C_RGBC_Reader myRGBC_Reader ;
3• la procédure setup() lance le lecteur de couleur et appelle le tarage standard
myRGBC_Reader.begin ();
myRGBC_Reader.standard ();
L’adresse I2C est définie et tarage standard sont envoyés vers le capteur de couleur.
4• la procédure loop() comprend deux parties principales : une fonction memorise() apprend les couleurs
Serial.println ("apprendre de 0..3") ;
Serial.Print ("> coloris objet required\n") ;
while (!. Serial.available()) ;
myRGBC_Reader.memorise ((commande - 0 x 30)) ;
et une fonction de getRGBC() lit le cylindre tandis qu’une fonction recognise() identifie la couleur.
myRGBC_Reader.getRGBC (r, g, b, c) ;
myRGBC_Reader.recognise (n, p) ;
Calcul des distances repose sur la reconnaissance : le plus proche couleur mémorisée de la couleur en lecture est activée. Un indice de proximité est également prévu : il devrait être inférieure à 100 %, sinon la couleur retournée confiance est faible.
La couleur n est alors codé sur 2 bits et envoyé à la TX-C.
• cas ne = 0 aucun objet i1 = i2 0 = 0
• cas = 1 couleur bleue i1 = i2 0 = 1
• cas = 2 couleur rouge i1 = 1 i2 = 0
• cas = 3 couleur blanche i1 = 1 i2 = 1
Si (n == 0) {}
digitalWrite (out1pin, basse) ;
digitalWrite (out2pin, basse) ;
}
ElseIf (n == 1) {}
digitalWrite (out1pin, basse) ;
digitalWrite (out2pin, HIGH) ;
}
ElseIf (n == 2) {}
digitalWrite (out1pin, HIGH) ;
digitalWrite (out2pin, basse) ;
}
ElseIf (n == 3) {}
digitalWrite (out1pin, HIGH) ;
digitalWrite (out2pin, HIGH) ;
}
else {}
digitalWrite (out1pin, basse) ;
digitalWrite (out2pin, basse) ;
}