
Нам понадобится:
Arduino uno: http://ali.ski/gC_mOa
Дальномер Sharp 2Y0A21: http://ali.ski/VZW_wp
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Датчик Sharp 2YoA21 это аналог ультразвукового дальномера HC-SR04 только он меряет дальность не ультразвуком как его собрат, а инфракрасными диодами.
Согласно даташиту характиристики такие:
- Напряжение питания: 5В
- Максимальный потребляемый ток: 40 мА (типичный — 30 мА)
- Диапазон работы: 10 см — 80 см
Как видите характеристики гораздо хуже, но достоинство от ультразвукового дальномера это безвредность, то есть ультразвук довольно вреден здоровью. так что выбор за Вами.
Ну а тут приведет пример работы данного датчика.
Схема подключения приведена в самом начале статьи.
После подключения всех компонентов необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
const int IRpin = A0;          // аналоговый пин для подключения выхода Vo сенсора
int value1;                    // для хранения аналогового значения
void setup() {
  Serial.begin(9600);            // Запуск последовательного порта
  }
void loop() {
  Serial.println(irRead(), DEC);
 // получаем сглаженное значение  и переводим в напряжение
 float volts = analogRead(IRpin)*0.0048828125;
 // и в расстояние в см 
 float distance=32*pow(volts,-1.10);
 Serial.print(distance);      // выдаем в порт значение
 delay(200);                    
}
// Усреднение нескольких значений для сглаживания
int irRead() {
  int averaging = 0;             //  переменная для суммирования данных
  // Получение 5 значений
  for (int i=0; i<5; i++) {
    value1 = analogRead(IRpin);
    averaging = averaging + value1;
    delay(55);      // Ожидание 55 ms перед каждым чтением
  }
  value1 = averaging / 5;      // усреднить значения
  return(value1);              
} 
Ссылка на скетч: https://yadi.sk/d/iQJALJOS3FNgm3
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.