всем привет! приобрел себе для игрушек Такой дальномер Почитал как он устроен, и попробовал написать программу при увеличении или уменьшении дистанции до обьекта изменять частоту ШИМ. Результат проверяю на Осцилле или на излучателе звука.
Проблема в том что работает это как-то криво, только на некоторых расстояниях излучатель пищит а гдето не пищит. Может кто имел дело? помогите.
PIC16f73 -4hmz кристалл.
Code
TRISC.0 = 0 ' Триггер
TRISC.1 = 1 'ответ от дальномера
TRISC.2 = 0 'аппаратный ШИМ
mycount var word
dist var word
mycount = 0
main: 'тело программы
PORTC.0=1: pauseus 10 : PORTC.0=0 'посылаем 10мкс как триггер для дальномера
DEFINE PULSIN_MAX 10000 ' -на угад написал, 10 000 сколько это? 10мс или 1 мс там ведь значения делятся на 10...
PULSIN PORTC.1,1,mycount ' ловлю высокий импульс на входе и записываю длинну в переменную
dist=mycount/58*2 'делю длинну волны на 58 и получаю дистанцию в сантиметрах. *2 просто так, чтобы задать частоту для ШИМ
HPWM 1,127,dist 'генерю аппаратный ШИМ
pause 100 'не знаю нужна ли пауза но просто так поставил.
goto main