 . Решил заняться программной частью. Поискал по форуму и в wiki. Нашёл пару кодов и на их основе написал под этот Sharp прогу. Хотя даже не написал, а дополнил. А конкретно, результаты можно посмотреть на LCD дисплее, + коментарии практически к каждому действию. И подбирал константы потому что практически к каждому шарпу судя по тому, что написано в wiki надо подбирать свои константы. Мдааа... Часа 3 я на это убил
 . Решил заняться программной частью. Поискал по форуму и в wiki. Нашёл пару кодов и на их основе написал под этот Sharp прогу. Хотя даже не написал, а дополнил. А конкретно, результаты можно посмотреть на LCD дисплее, + коментарии практически к каждому действию. И подбирал константы потому что практически к каждому шарпу судя по тому, что написано в wiki надо подбирать свои константы. Мдааа... Часа 3 я на это убил   
   
   Всё получилось хотя от погрешности в ~1 и ~2 см избавится не смог. Но это не страшно. Определяет от 20 см до 30 точно. Дальше ошибается на 1 см.
 Всё получилось хотя от погрешности в ~1 и ~2 см избавится не смог. Но это не страшно. Определяет от 20 см до 30 точно. Дальше ошибается на 1 см.Код, если кому надо будет:
- Код: Выделить всё • Развернуть
- '-------------------------------------------------------------------------------
 $regfile = "m16def.Dat" ' мк ATmega16
 $crystal = 16000000 ' частота кварца 16мГц
 '-------------------------------------------------------------------------------
 '-------------------------------- LCD-дисплей-----------------------------------
 $lib "lcd4.lbx" 'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
 'Библиотека lcd4.lbx использует следующее подключение:
 Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
 Config Lcd = 16 * 2 'используем дисплей на 2 строчки по 16 знакомест в каждой
 '-------------------------------------------------------------------------------
 '----------------------------Константы и переменные-----------------------------
 'Формула: R=M/(V+B)-K
 Const M = 20000
 Const K = -1
 Const B = -100
 Dim Range As Word , Range1 As Word , Vout As Word , Vout1 As Word
 '-------------------------------------------------------------------------------
 '--------------------------------Настройка ADC----------------------------------
 Config Adc = Single , Prescaler = Auto , Reference = Internal
 '-------------------------------------------------------------------------------
 '--------------------------------------------- ----------------------------------
 'Далее перед вывод информации на дисплее отключаем курсор,
 'если этого не сделать он будет мешаться в виде такого
 ' знака "_". И делаем очистку с помощью команды "Cls".
 Cursor Off 'отключаем отображение курсора на LCD
 Cls 'очитка дисплея
 Locate 1 , 5 'позиция курсора(1-строка, 5-начало надписи с 5-ого знакоместа)
 Lcd "RoboHome" 'выводим надпись
 Locate 2 , 4 ' позиция курсора(2-строка, 4-начало надписи с 4-ого знакоместа)
 Lcd "Sharp test" 'выводим надпись
 Wait 2 'задержка 2 секунды
 '-------------------------------------------------------------------------------
 'Начало цикла основной программы
 Do
 Start Adc : Vout1 = Getadc(0) 'Запускаем ADC на PA0
 Stop Adc 'Останавливаем ADC
 Vout = Vout1 + B
 Range1 = M / Vout
 Range = Range1 - K
 Cls 'очитка дисплея
 Locate 1 , 1 ' позиция курсора
 Lcd "Range = " ; Range ; "cm" 'выводим результат преобразования на ЖК
 Locate 2 , 1 ' позиция курсора
 Lcd "Vout = " ; Vout ; 'выводим результат преобразования на ЖК
 Waitms 100 ' зедержка 0,1 секунды
 Loop
 End



 
 




