Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Отчитане на разстояние чрез Arduino и инфрачевен сензор

GP2Y0A02YK0F и GP2Y0A21YK са ифрачервени сензори за разстояние от Sharp с обхват съответно от 20 до 150 и от 10 до 80 см. Захранват се с 5V напрежение, които могат да се вземат наготово от Arduino. За връщане на данни се използва някой от аналоговите входове на микроконтролера.

За визуализиране на измереното разстояние ще използваме светодиод, свързан през съпротивление. В зависимост от разстоянието до обеката, сензорът връща данни, които могат да се видят като числа през Serial Monitor-а на Arduino IDE софтуера.

Свързване


При свързвана на сензора към захранване е препоръчително да се използва кондензатор от 100 uF или повече за стабилизиране на напрежението. Анода се връзва към червения проводник, а катода към черния. Най-лесно може да бъде монтиран като крачетата му се вкарат в самия JST конектор.

Съпротивлението в схемата на светодиода се изчислява според вида и яркостта му. Свързва се към анода(+) на светодиода и към някой от цифровите изходи на Arduino, отбелязан с ~ пред номера. Катода(-) се свързва към маса (GND)

Код

/*

* Променя яркостта на светодиод, в зависимост от разстоянието до обекта
* Връща информация за него в Serial Monitor-а

* Tihomir Trifonov (07-2011)
* С подкрепата на Robotev.com

*/

const int analogInPin = A0; // Аналогов вход за сензора
const int analogOutPin = 10; // Аналогов изход за светодиода

int sensorValue = 0; // запазва стойността прочетена от сензора
int outputValue = 0;  // присвоява стойността която ще се подаде 
                      // на светодиода


void setup() {
Serial.begin(9600); // стартира серийна комуникация с PC
}

void loop() {

sensorValue = analogRead(analogInPin); // прочита аналоговия сигнал от сензора

outputValue = map(sensorValue, 0, 1023, 0, 255); // формира изходен сигнал, 
                                                 //пропорционален на входния

analogWrite(analogOutPin, outputValue); // подава сигнала към изхода                             
                                        // за да се визуализира чрез светодиода

Serial.print("sensor = "); // извежда в Serial Monitor-а               
                           // прочетените данни
Serial.print(sensorValue); 
Serial.print("\n"); //слага всяка стойност на нов ред

delay(10);// чака 10 ms за да се установи сензора
}

Ако всичко е наред със схемата и кода, то като отдалечаваме предмет от сензора, светодиода ще свети все по-слабо и показанията в Serial Monitor ще се променят.