Sharp GP2Y0A21 analoogkaugussensor31. Oct '13

Sissejuhatus

Käesolev kaugussensor on väga lihtsa ülesehitusega. Sensori toitepinge on 5V ning sensori väljundiks on pinge vahemikus 0V kuni 3.2V, mis tähendab et seda võib vabalt kasutada ka 3.3V toitepingega prototüüpimisplaatidega (nt mbed):

img/arduino-sharp-gp2y0a21.jpg

Sharp GP2Y0A21 kaugussensor

Tüüpilisel sumorobotil on kaks säärast kaugussensorit vastase asukoha tuvastamiseks:

img/arduino-sumorobot.jpg

Kaugussensorid sumorobotil

Sensori datasheet-ist leiab pinge ning kauguse vahelise seose graafiku:

Pygal000.20.20.40.40.60.60.80.8111.21.21.41.41.61.61.81.8222.22.22.42.42.62.62.82.8333.23.205101520253035404550556065707580Kaugus (cm)Pinge (V)013.576923076923077504.1153846153846403.256.004807692307699.88461538461535852.398.43269230769229148.88701923076928101.7140.86057692307693241.55528846153845151.3183.28846153846155303.33413461538464201.1225.71634615384616334.2235576923077250.9268.1442307692308365.11298076923083300.7353.0396.00240384615387400.6437.8557692307692411.4471153846154500.5522.7115384615385426.8918269230769600.45607.5673076923076434.6141826923077700.4692.4230769230769442.3365384615384580

Kõige lihtsamas näites kasutame kaugussensorit, et käega ust avada:

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

const char LCD_AUML = 0xE1;
boolean garaaziuks_kinni = false;

void setup() {
    lcd.begin(16, 2);
}

void loop() {
    int value = analogRead(A1);
    float voltage = value * 5 / 1023.0;
    int distance = 6762 / (value - 9) - 4;
    if (distance < 15) {
        garaaziuks_kinni = !garaaziuks_kinni;
    }

    lcd.setCursor(0, 0);
    lcd.print(voltage, 2);
    lcd.print("V -> ");
    lcd.print(distance);
    lcd.print("cm");
    lcd.print("    ");
    lcd.setCursor(0, 1);
    if (garaaziuks_kinni) {
        lcd.print("kinni");
    } else {
        lcd.print("lahti");
    }

    if (voltage < 0.4) {
        lcd.print(" ");
        lcd.print("ebat");
        lcd.print(LCD_AUML);
        lcd.print("pne");
    }

    lcd.print("                ");

    delay(500);
}

Harjutused:

  • Täienda koodi nii, et pikemat aega kätt sensori ees hoides ei tehtaks ust kinni ja lahti mitu korda.

Arduino Tiigriülikool Estonian IT College