Приклад роботи з avr та ультразвуковим датчиком HC-SR04, MainLoop

Характеристики ультразвукового далекоміра HC-SR04
- Вимірюваний діапазон: 2 см - 500 см
- Точність: 0,3 см
- Кут огляду: Модуль датчика відстані HC-SR04 має 4 висновки:
- VCC: живлення 5 вольт
- Trig: вхід тригера, що запускає вимірювання
- Echo: вихід, на якому генерується імпульс, тривалість якого пропорційна відстані
- GND: земля
У документації на модуль датчика відстані HC-SR04 зазначено, що для запуску вимірювань на вхід Trig треба подати імпульс тривалістю 10-15 мікросекунд. Після цього на виході Echo з'явиться імпульс тривалістю 150мкс - 25мс. Тривалість цього імпульсу пропорційна відстані до об'єкта, від якого відбився ультразвуковий сигнал. Для того щоб з тривалості сигналу в мікросекундах отримати відстань в сантиметрах використовується формула:
де: T — тривалість сигналу в мікросекундах D — відстань у сантиметрах
Якщо ж відбитий сигнал не дійшов до приймача, то на виході Echo буде імпульс тривалістю 38 мілісекунд папуг,
Приклад використання ультразвукового далекоміра HC-SR04 з мікроконтролером AVR atmega
Опис програми для avr atmega: програма запускає вимірювання, генеруючи імпульс 10 мкс. на виході PD3, з'єднаного із входом Trig. Вихід Echo підключено до PD2, який використовується як зовнішнє переривання. По передньому фронту на PD2 скидаємо в нуль таймер лічильник timer1. За заднім фронтом на PD2 запам'ятовується значення таймера лічильника timer1. Далі отримана довжина імпульсу переводиться в сантиметри і виводиться в uart. Через 1 секунду цикл вимірів повторюється. Так як timer1 налаштований так, що тривалістьтика дорівнює 8.68 мкс (1/(7372800/64)), то використовується перерахований коефіцієнт для переведення в сантиметри 58/8.68 = 6.68, округляємо до 7;
Далі наведено вихідний текст лише основних функцій для avr atmega, повністю вихідники проекту avr-gcc (WinAvr) можна завантажити тут.