Мой minibot

Готовая электроника для самодельного робота. Уровень от начинающих до опытных конструкторов.

Re: Мой minibot

Сообщение galex1981 » 20 апр 2010, 16:33

to enzimscd: а вообще программатор сам у тебя какой? STK200?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Мой minibot

Сообщение EdGull » 20 апр 2010, 17:27

у него масеркитовская поделка
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Задержка времени

Сообщение enzimscd » 21 апр 2010, 21:26

Подскажите как в bascom сделать такую программу: запускаем двигатель с одной скоростью, через 5 секунд его скорость уменьшается. Мы ведь speed определили до DO. Я имею ввиду:
Код: Выделить всё
Dim Speed As Byte
Speed =70
Do
Drl =0
Drr =0
Pwb1b =Speed;Pwm1a =Speed
Loop


А потом как занести в него другое значение?Я написал так(но там все не так):

Код: Выделить всё
$regfile = "m32def.dat"                                     ' файл спецификации Меги32
$crystal = 7372800                                          ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.2 = Output : Drl Alias Portc.2                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.3 = Output : Drr Alias Portc.3                  'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output                                      'ногу ШИМа левого  движка сконфигурировали как выход
Config Pind.5 = Output                                      'ногу ШИМа правого движка сконфигурировали как выход
'----------------------------------------------------------------------------
Dim Speed As Byte
Speed = 90                                                  'Возможно задание скорости в пределах от 70 до 255

Do
  Drl = 1                                                   'направление движения левого движка, в моём случае это прямо
  Drr = 1                                                   'направление движения правого движка, в моём случае это прямо
  Pwm1b = Speed : Pwm1a = Speed

Loop
                                                        'Возможно задание скорости в пределах от 70 до 255
     Waitms 5000
          Speed = 150
Do
  Drl = 1                                                   'направление движения левого движка, в моём случае это прямо
  Drr = 1                                                   'направление движения правого движка, в моём случае это прямо
  Pwm1b = Speed : Pwm1a = Speed
Loop


Добавлено спустя 47 минут 56 секунд:
Re: Мой minibot
У меня программатор вот такой: http://www.masterkit.ru/main/set.php?code_id=216002
Последний раз редактировалось EdGull 21 апр 2010, 22:04, всего редактировалось 2 раз(а).
Причина: !!! Не забываем тэг Code !!!
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение galex1981 » 21 апр 2010, 21:52

У тебя пример неверный - из 1го бесконечного цикла программа никогда не выйдет, соответственно во второй цикл никогда не попадешь. Проще всего сделать так: объявляешь переменную Speed глобально, то есть в начале программы, создаешь прерывание по таймеру, им отсчитываешь 5 секунд, по истечении этого времени переменной Speed присваиваешь новое значение
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Мой minibot

Сообщение enzimscd » 21 апр 2010, 22:23

А как именно указать чтобы прерывание происходило через 5 сек?


Код: Выделить всё
$regfile = "m32def.dat"                                     ' файл спецификации Меги32
$crystal = 7372800                                          ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.2 = Output : Drl Alias Portc.2                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.3 = Output : Drr Alias Portc.3                  'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output                                      'ногу ШИМа левого  движка сконфигурировали как выход
Config Pind.5 = Output                                      'ногу ШИМа правого движка сконфигурировали как выход
'----------------------------------------------------------------------------
Dim Speed As Byte
Speed = 90                                                  'Возможно задание скорости в пределах от 70 до 255
Enable Timer0
Enable Interrupts
  Config Timer0 = Timer , Prescale = 1024
Do
  Drl = 1                                                   'направление движения левого движка, в моём случае это прямо
  Drr = 1                                                   'направление движения правого движка, в моём случае это прямо
  Pwm1b = Speed : Pwm1a = Speed

Loop
                                                        'Возможно задание скорости в пределах от 70 до 255
Timer0:
   Speed = 150
Последний раз редактировалось enzimscd 21 апр 2010, 23:27, всего редактировалось 2 раз(а).
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение galex1981 » 21 апр 2010, 22:37

Что именно непонятно? Как прерывание по переполнению таймера делать - можно в обучалке по баскому найти, там же написано как вычислить период по которому происходит переполнение по таймеру. То есть завести переменную, инкременируемую при каждом переполнении таймера, потом пересчитать, по какому ее значению проходит 5 секунд, и при сравнении ее с этим значением менять скорость, обнуляя ее потом. В общем весь алгоритм рассказал, осталось тебе только запрограммировать его. Обучалка по баскому: http://avr.easycoding.org/bascom_lessons/index.htm
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Мой minibot

Сообщение enzimscd » 22 апр 2010, 22:36

Подскажите пожалуйста на каком порту находится приемник инфракрасного излучения...PD6?
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение galex1981 » 23 апр 2010, 08:54

В версии 2.1 минибота на порту PD.3. А вообще на любой порт повесить можно
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Мой minibot

Сообщение enzimscd » 23 апр 2010, 13:48

А в версии 2.1 как мне подключить дальномер? На какой разъем? Не могу сам разобраться...
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение EdGull » 23 апр 2010, 13:53

на любой АЦП (ADC) только не забудь что шарпу нужно 5В
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Мой minibot

Сообщение enzimscd » 23 апр 2010, 14:03

На плате АЦП - это Х10,Х11,Х12. Я не ошибся?
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение EdGull » 23 апр 2010, 14:22

да, ты не ошибся.
Но на сколько я помню у тебя не полная комплектация, а значит у тебя нет Меги88
прийдется тебе перемычку кидать на один из свободных портов АЦП меги32
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Мой minibot

Сообщение enzimscd » 23 апр 2010, 18:51

Как мне ее найти? Вы на счет перемычки можете подробнее рассказать? Или подпаиваться самому искать АЦП на 32-ой?
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Re: Мой minibot

Сообщение EdGull » 23 апр 2010, 18:58

кого ее?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Мой minibot

Сообщение enzimscd » 23 апр 2010, 19:01

У меня еще такой вопрос: я программирую на ассемблере и теперь не знаю как мне обработать PD.3,чтобы контроллер понял информацию, приходящую с TSOP. Если бы я использовл BASCOM,то взял бы за шаблон предложенную на форуме программу. Но кнопка пульта присылает код ,например, 63...Если бы эта цифра пришла на порт, я бы разобрался, но PD.3 это один бит,т.е. 1 или 0...Или посмотреть дополнительные возможности вывода PD.3? Может там через передатчик или как?

Добавлено спустя 1 минуту 38 секунд:
кого ее?

Перемычку.
Аватара пользователя
enzimscd
 
Сообщения: 25
Зарегистрирован: 22 авг 2009, 17:47
Откуда: ладыжин

Пред.След.

Вернуться в МиниБот — национальный класс роботов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5