Продукти

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

Откриване на препятствие с инфрачервен сензор и Arduino
20 февруари 2023

IR сензор или инфрачервен сензор се състой от два основни компонента: IR предавател и IR приемник.
IR предавател предава инфрачервени вълни, а IR приемник ги приема. Приемникът непрекъснато изпраща цифрови данни под формата на 0 или 1 до Vout на сензора. Ако пред предавателя има обект инфрачервените лъчи се отразяват и се приемат от приемника, ако няма обект приемника не приема нищо.

 

Фиг. 1 Конфигурация на инфрачервен сензор - виж в галерията под статията. 

 

- IR Receiver – инфрачервен приемник;
- IR Emitter LED – инфрачервен предавател;
- Distance Adjust – регулиране на разстоянието;
- Power LED – светодиод за захранването;
- Obstacle LED – светодиод за препятствие;
- Vcc – (+5V);
- Gnd – маса (-);
- Out – изход към Arduino.

 

 

 

За препятствие в проекта може да използваме ръката си , като при подаване на ръка пред
сензора, трябва да отпечата на монитора "OBSTACLE!!, OBSTACLE!!" (препятствие) и да светне
светодиода на Arduino-то. Като махнем ръката от сензора , трябва да изпише “clear” (чисто) и
светодиода да не свети.

 

 

Необходим хардуер:


- Arduino UNO;
- IR сензор;
- Проводници.

 

 

Фиг. 2 Схема на свързване - виж в галерията под статията. 

 

 

След като свържем схемата можем да преминем към качването на програмния код. 

 

 

Програмен код: 

 

int LED = 13; // светодиода на платката Arduino
int isObstaclePin = 7; // входен пин
int isObstacle = HIGH;
void setup()
{
pinMode(LED, OUTPUT); //задава светодиода като изход
pinMode(isObstaclePin, INPUT); //задаваме сензора като вход
Serial.begin(9600); //връзка със сериен монитор
}
void loop() {
isObstacle = digitalRead(isObstaclePin);
//проверка за откриване на препятствие
if (isObstacle == LOW)
{
Serial.println("OBSTACLE!!, OBSTACLE!!"); //отпечатва на сериен монитор, че е открито
препятствие
digitalWrite(LED, HIGH); //при открито препятствие светва лед на платката UNO
}
Else
{
Serial.println("clear"); //ако не е открито препятствие отпечатва на сериен монитор , че е чисто
digitalWrite(LED, LOW); //лед не свети
}
delay(200); //изчаква за 200mS
}