Arduino > Capteur de distance infrarouge
Contents (hide)
Brancher le capteur à une entrée analogique et lire la distance mesurée avec la fonction analogRead(A#) :
int lecture = analogRead(A0);
Pour afficher la lecture du capteur dans le moniteur série d'Arduino:
void setup() { // CONFIGURER LA COMMUNICATION SERIE Serial.begin(57600); } void loop() { // FAIRE UNE LECTURE ANALOGIQUE int lecture = analogRead(A0); // ENVOYER LA LECTURE Serial.println( lecture ); // PRENDRE UNE PETITE PAUSE delay(100); }
void setup() { // CONFIGURER LA COMMUNICATION SERIE Serial.begin(57600); } void loop() { // FAIRE UNE LECTURE ANALOGIQUE int lecture = analogRead(A0); // ENVOYER LA LECTURE Serial.println( lecture ); // PRENDRE UNE PETITE PAUSE delay(100); }
Le GP2D12 est un capteur analogique qui permet de mesurer des distances entre 10cm et 1m. Fiche technique: http://www.alldatasheet.com/view.jsp?Searchword=GP2D12
Branchements à l'Arduino | |
Borne du capteur | Broche de l'Arduino |
Vo | D(data) |
GND | Gnd |
Vcc | 5V |
Il faut noter que la tension mesurée n'est pas en relation linéaire avec la distance. Ces données ne peuvent pas être utilisées tel quel dans notre code: elles doivent être linéarisées. Voici la formule a utiliser:
A = analogRead(GP2D12)
Distance en cm = (6787 / (A - 3)) - 4
http://www.acroname.com/robotics/info/articles/irlinear/irlinear.html
/* read_gp2d12_range Function that reads a value from GP2D12 infrared distance sensor and returns a value in centimeters. Javier Valencia 2008 float read_gp2d12_range(byte pin) It can return -1 if something gone wrong. */ float read_gp2d12_range(byte pin) { int tmp; tmp = analogRead(pin); if (tmp < 3) return -1; // invalid value return (6787.0 /((float)tmp - 3.0)) - 4.0; }