Пятница, 22.11.2024, 22:49
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
Важно!!!
Для успешного просмотра
сайта воспользуйтесь
браузером Mozilla Firefox



Мини-Профиль
Гость


Группа:
Гости
Время:22:49

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!

Категории раздела
О программаторах [4]
Не много о том как и с помощью чего программировать.
Программирование в BascomAVR [6]
Учимся благодаря статьям писать программы. Язык Basic
Программирование в CV AVR? [4]
Учимся благодаря статьям писать программы. Язык Си

Поиск

Наш опрос
Как вы нашли наш сайт?
Всего ответов: 405

Друзья сайта
roboforum
  • robozone
  • Железный феликс
  • robo.com.ua
  • imobot
  • ASARobotics
  • Grover
  • Электроника
  • Your Device
  • Программирование BASCOM
  • Basic для PIC мк
  • Электроника для всех
  • RassionRobots
  • Newrobots-world

  • Статистика

    Каталог-Молдова - Ranker, Statistics
    RoboRing.Ru
    << | list | ? | >>
    Rambler's Top100
    Рейтинг@Mail.ru
    Рейтинг робо-сайтов


    Помоги сайту
    ЯндексЯндекс. ДеньгиХочу такую же кнопку


    Главная » Статьи » Программирование » Программирование в BascomAVR

    Подключаем ИК-дальномер Sharp GP2Y0A21 (10-80см)
    Демонстрационный вариант работы шарпа.
    Ну здесь всё просто. Для определения препятствия нам всего лишь надо считывать данные с ацп. Срабатывание шарпа настроим в проге. Если требуется измерять расстояние в см, то здесь уже по сложней. Надо подумать над несколькими формулами, по которым будет считать расстояние. Я измерять расстояние уже пробовал можно глянуть здесь. В программе шарп будет срабатывать когда препятствие окажется в диапозоне, когда АЦП будет меньше или равно 500. Когда он сработает загорится светодиод.

    $regfile = "m16def.Dat"                                     ' мк ATmega16

    $crystal = 16000000                                         ' частота кварца 16мГц

    Config Adc = Single , Prescaler = Auto , Reference = Internal       'конфигурация АЦП

    Config Pina.2 = Input

    Config Portc.4 = Output : Led Alias Portc.4

    Dim АЦП As Word

    Enable Interrupts                                           'разрешаем все прерывания

    Led = 1                                                     'изначально гасим светодиод

    Do

    Start Adc                                                   'запускаем аналого-цифровое преобразование

    АЦП = Getadc(2)                                             'считываем результат с пина 2 порта А.

    If АЦП >= 500 Then : Led = 0 : Else : Led = 1 : End If

    Loop

    End




    Реальная работа шарпа, которую можно применить на роботе, для объезда препятствий.
    Если у вас есть только один шарп и нет сервопривода, который будет вращать его на 180, чтобы делать обзор и справа, и слева, но вы хотите чтобы робот поворачивал в разном направление, то фиксируем его точно по центру и изменяем программу. Собсно приведённая программа ниже может быть сразу зашита в мк.

    $regfile = "m16def.dat"
    $crystal = 16000000

    Config Adc = Single , Prescaler = Auto , Reference = Internal

    Config Pind.2 = Output : M1f Alias Portd.2
    Config Pind.3 = Output : M1b Alias Portd.3
    Config Pind.4 = Output : M2f Alias Portd.4
    Config Pind.5 = Output : M2b Alias Portd.5

    Enable Interrupts

    Dim АЦП1 As Word , Выбор_разворота As Bit

    Выбор_разворота = 0

    Do
    Start Adc : АЦП1 = Getadc(2)
    If АЦП1 >= 500 Then : Gosub Отъехать_от_препятствия_спереди : Else : Gosub Вперёд : End If
    Loop

    Вперёд:

    M1f = 1 : M2f = 1
    M1b = 0 : M2b = 0
    Return

    Назад:
    M1f = 0 : M2f = 0
    M1b = 1 : M2b = 1
    Return

    Разворот_вправо:
    M1f = 1 : M2f = 0
    M1b = 0 : M2b = 1
    Return

    Разворот_влево:
    M1f = 0 : M2f = 1
    M1b = 1 : M2b = 0
    Return

    '**********************Отъезд от препятствия по центру**************************
    Отъехать_от_препятствия_спереди:
    Do
    Start Adc : АЦП1 = Getadc(2) : Stop Adc
    Gosub Назад
    Loop Until АЦП1 <= 300

    If Выбор_разворота = 0 Then : Gosub Разворот_вправо : Else : Gosub Разворот_влево : End If
    Wait 1                                                      'Время разворота
    If Выбор_разворота = 0 Then : Выбор_разворота = 1 : Else : Выбор_разворота = 0 : End If       'Переустанавливаем переменную
    Return


    Скачать демонстрационный вариант.
    Скачать для объезда препятствий.
    Категория: Программирование в BascomAVR | Добавил: Space (31.01.2010)
    Просмотров: 3461 | Теги: Подключаем шарп, дальномер, Sharp, как подключить дальномер, как подкючить шарп | Рейтинг: 5.0/2 |
    Всего комментариев: 2
    2 DeepBlack  
    0
    Чёнить придумаем wink
    //----------------------------------------------
    http://robotsspace.ucoz.ru/publ/dalnomer_sharp_cvavr/9-1-0-72 //Придумали!
    //переманиваю народ на Сишник =)

    1 Dimsan  
    0
    Ещё бы исходничек на Си и вообще красота.

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]