Четверг, 28.03.2024, 12:27
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Форум » Мастерская » Наши достижения » ИК-дальномер Sharp GP2Y0A02 (20-120см) (+код программы)
ИК-дальномер Sharp GP2Y0A02 (20-120см)
SpaceДата: Суббота, 15.08.2009, 05:07 | Сообщение # 1








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Купил тут совсем не давно Sharp smile3 . Решил заняться программной частью. Поискал по робофоруму. Нашёл пару кодов и на их основе написал под этот Sharp прогу. Хотя даже не написал, а дополнил. А конкретно, результаты можно посмотреть на LCD дисплее, + коментарии практически к каждому действию. И подбирал константы потому что практически к каждому шарпу судя по тому, что написано в wiki робофорума надо подбирать свои константы. Мдааа... Часа 3 я на это убил crazy crazy crazy Всё получилось хотя от погрешности в ~1 и ~2 см избавится не смог. Но это не страшно. Определяет от 20 см до 30 точно. Дальше ошибается на 1 см. Если использовать другой Sharp, то нужно ТОЛЬКО изменить константы, а точней подобрать wacko

Код программы, мож кому надо будет:
Code
'-------------------------------------------------------------------------------
' Sharp GP2Y0D02 тест
' Измерение расстояния, с выводом результатов на LCD-дисплей
' Автор: Space
' Robotsspace.ucoz.ru
' Space (c) 2009
'-------------------------------------------------------------------------------

'О ик-дальномерах подробно почитать можно на робофоруме:
'http://roboforum.ru/wiki/Ик-дальномеры_SHARP
'рассказывается о формулах на основе, которых пишется программа

'-------------------------------------------------------------------------------
$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
Прикрепления: 0106802.jpg (107.8 Kb) · 0537977.jpg (110.8 Kb) · 9854101.jpg (85.1 Kb)
 
юрииДата: Вторник, 18.08.2009, 21:13 | Сообщение # 2








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
круто dance4
 
SpaceДата: Среда, 19.08.2009, 13:10 | Сообщение # 3








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Кто-нибудь ещё дальномеры юзал или мож кто собирается?
 
S-T-A-L-K-E-RДата: Среда, 19.08.2009, 13:41 | Сообщение # 4








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
хорошая штука, но дороговата...

http://rassionrobots.ucoz.ru/ -"Робототехника"
 
SpaceДата: Среда, 19.08.2009, 13:53 | Сообщение # 5








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
знаю, но оно того стоит good
 
Bass85Дата: Среда, 19.08.2009, 17:53 | Сообщение # 6








Зарегистрирован 12.02.2009
Группа: Опытные
Сообщений: 422
Статус: Offline
Я хочу но пока не до него. Если бы не нужно было заказывать то уже бы купил а так у нас в имраде за него очень много просят и больше негде. А может лучше ультразвуковой?(их тоже нет и нужно заказывать angry )
 
SpaceДата: Среда, 19.08.2009, 18:18 | Сообщение # 7








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
ультразвукой не знаю где заказать из наших русских магазинов, а так бы взял. А sharp можешь на робоформе заказать. отправку делают почти сразу после оплаты. До меня за 2 дня всё дошло.
 
S-T-A-L-K-E-RДата: Среда, 19.08.2009, 18:27 | Сообщение # 8








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
Раз уж пошло на то, то, я тоже хочу, но, пока нужно освоить программирование, а то эта штука никуда не сгодится (гы) sad

http://rassionrobots.ucoz.ru/ -"Робототехника"
 
Bass85Дата: Среда, 19.08.2009, 18:27 | Сообщение # 9








Зарегистрирован 12.02.2009
Группа: Опытные
Сообщений: 422
Статус: Offline
В терра электронике есть. У нас этот же имрад с ними работает angry
 
SpaceДата: Среда, 19.08.2009, 18:37 | Сообщение # 10








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Quote (S-T-A-L-K-E-R)
Раз уж пошло на то, то, я тоже хочу, но, пока нужно освоить программирование, а то эта штука никуда не сгодится acute sad

acute - этот смайлик в твоих сообщениях меня начинает уже раздражать kolobok_mrgreen happy

Заклинаю, учи BASCOM AVR kolobok_ugeek

Добавлено (19.08.2009, 18:37)
---------------------------------------------
Чёт я сплю...
Вот чё сотворил. Теперь препятствия определяет и сервой крутит smile3

Код для сервы с переходом на метку:

Code
For I = 25 To Top Step 7
X = Center + I
Servo(1) = X
Waitms Wait1
Gosub Sharp_left
Next

For I = 25 To Top Step 7
X = Center - I
Servo(1) = X
Waitms Wait1
Gosub Sharp_right
Next

Функция работы Шарпа, на определение препятствия справа или слева:

Code
Sharp_right:
Declare Function Sharp_a02(byval 0 As Byte) As Byte
Function Sharp_a02(byval 0 As Byte) As Byte
Local Vout As Word
    Start Adc : Vout = Getadc(0)                             'Sharp connected for example to PA=0(ADC0)
    Stop Adc
    If Vout < 600 Then : Sharp_a02 = 0 : Else : Sharp_a02 = 1 : End If
    If Sharp_a02 = 1 Then : Led = 1 : Waitms 1000 : Led = 0 : End If
End Function
Return

Sharp_left:
Declare Function Sharp_a0(byval 0 As Byte) As Byte
Function Sharp_a0(byval 0 As Byte) As Byte
Local Vout As Word
    Start Adc : Vout = Getadc(0)                             'Sharp connected for example to PA=0(ADC0)
    Stop Adc
    If Vout < 600 Then : Sharp_a0 = 0 : Else : Sharp_a0 = 1 : End If
    If Sharp_a0 = 1 Then : Led = 1 : Waitms 1000 : Led = 0 : End If
End Function
Return
 
S-T-A-L-K-E-RДата: Среда, 19.08.2009, 18:42 | Сообщение # 11








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
Р.С. Ау меня эти смайлики не двигаются, поэтому и не раздражают)

http://rassionrobots.ucoz.ru/ -"Робототехника"
 
pashteetДата: Среда, 21.10.2009, 20:15 | Сообщение # 12








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Прикупил такую игрушку, сижу изучаю biggrin
 
юрииДата: Четверг, 19.11.2009, 17:41 | Сообщение # 13








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
а мона на ниву или восьмерку из дальномера парктроники забацать lol smile3
 
RomarioДата: Четверг, 04.11.2010, 09:46 | Сообщение # 14








Зарегистрирован 04.11.2010
Группа: Новички
Сообщений: 1
Город: Северодвинск
Статус: Offline
А можно примерчик как в кучу эти коды собрать?

Сообщение отредактировал Romario - Четверг, 04.11.2010, 09:46
 
Форум » Мастерская » Наши достижения » ИК-дальномер Sharp GP2Y0A02 (20-120см) (+код программы)
  • Страница 1 из 1
  • 1
Поиск: