Пример за работа с avr и ултразвуков сензор HC-SR04, MainLoop

Спецификации на ултразвуковия измервател на разстояние HC-SR04
- Обхват на измерване: 2см - 500см
- Точност: 0,3 см
- Ъгъл на видимост: Модулът за сензор за разстояние HC-SR04 има 4 изхода:
- VCC: 5 волта захранване
- Trig: Вход за задействане, който задейства измервания
- Ехо: изход, който генерира импулс, чиято продължителност е пропорционална на разстоянието
- GND: земя
В документацията за модула на сензора за разстояние HC-SR04 се посочва, че за да започне измерването, трябва да се приложи импулс с продължителност 10-15 микросекунди към входа Trig. След това на изхода Echo ще се появи импулс с продължителност 150 µs - 25 ms. Продължителността на този импулс е пропорционална на разстоянието до обекта, от който е отразен ултразвуковият сигнал. За да се получи разстоянието в сантиметри от продължителността на сигнала в микросекунди, се използва формулата:
където: T — продължителност на сигнала в микросекунди D — разстояние в сантиметри
Ако отразеният сигнал не достигне приемника, тогава изходът на ехото ще има продължителност на импулса от 38 милисекунди,
Пример за използване на ултразвуков далекомер HC-SR04 с микроконтролер AVR atmega
Описание на програмата за avr atmega: програмата започва измервания чрез генериране на импулс от 10 µs. на изхода на PD3, свързан към входа Trig. Изходът Echo е свързан към PD2, който се използва като външно прекъсване. На нарастващия фронт на PD2 нулираме брояча на таймера timer1 на нула. На задния фронт PD2 съхранява стойността на брояча на таймера timer1. Освен това получената дължина на импулса се преобразува в сантиметри и се показва в uart. След 1 секунда цикълът на измерване се повтаря. Тъй като timer1 е конфигуриран така, че продължителносттатик е 8,68 µs ( 1/(7372800/64) ), тогава се използва преобразуваният коефициент за преобразуване в сантиметри 58/8,68 = 6,68, закръглено до 7;
Изходният текст само на основните функции за avr atmega е даден по-долу, целият изходен код за проекта avr-gcc (WinAvr) може да бъде изтеглен тук.