Arduino > Capteur de distance infrarouge

1.  Instructions générales

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);
}

2.  Envoyer la lecture analogique au moniteur série


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);
}

3.  GP2D12 (10cm à 1m)

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 capteurBroche de l'Arduino
VoD(data)
GNDGnd
Vcc5V

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;
}