roboforum.ru

Технический форум по робототехнике.

Мой minibot

Re: Мой minibot

galex1981 » 20 апр 2010, 16:33

to enzimscd: а вообще программатор сам у тебя какой? STK200?

Re: Мой minibot

EdGull » 20 апр 2010, 17:27

у него масеркитовская поделка

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

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 !!!

Re: Мой minibot

galex1981 » 21 апр 2010, 21:52

У тебя пример неверный - из 1го бесконечного цикла программа никогда не выйдет, соответственно во второй цикл никогда не попадешь. Проще всего сделать так: объявляешь переменную Speed глобально, то есть в начале программы, создаешь прерывание по таймеру, им отсчитываешь 5 секунд, по истечении этого времени переменной Speed присваиваешь новое значение

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 раз(а).

Re: Мой minibot

galex1981 » 21 апр 2010, 22:37

Что именно непонятно? Как прерывание по переполнению таймера делать - можно в обучалке по баскому найти, там же написано как вычислить период по которому происходит переполнение по таймеру. То есть завести переменную, инкременируемую при каждом переполнении таймера, потом пересчитать, по какому ее значению проходит 5 секунд, и при сравнении ее с этим значением менять скорость, обнуляя ее потом. В общем весь алгоритм рассказал, осталось тебе только запрограммировать его. Обучалка по баскому: http://avr.easycoding.org/bascom_lessons/index.htm

Re: Мой minibot

enzimscd » 22 апр 2010, 22:36

Подскажите пожалуйста на каком порту находится приемник инфракрасного излучения...PD6?

Re: Мой minibot

galex1981 » 23 апр 2010, 08:54

В версии 2.1 минибота на порту PD.3. А вообще на любой порт повесить можно

Re: Мой minibot

enzimscd » 23 апр 2010, 13:48

А в версии 2.1 как мне подключить дальномер? На какой разъем? Не могу сам разобраться...

Re: Мой minibot

EdGull » 23 апр 2010, 13:53

на любой АЦП (ADC) только не забудь что шарпу нужно 5В

Re: Мой minibot

enzimscd » 23 апр 2010, 14:03

На плате АЦП - это Х10,Х11,Х12. Я не ошибся?

Re: Мой minibot

EdGull » 23 апр 2010, 14:22

да, ты не ошибся.
Но на сколько я помню у тебя не полная комплектация, а значит у тебя нет Меги88
прийдется тебе перемычку кидать на один из свободных портов АЦП меги32

Re: Мой minibot

enzimscd » 23 апр 2010, 18:51

Как мне ее найти? Вы на счет перемычки можете подробнее рассказать? Или подпаиваться самому искать АЦП на 32-ой?

Re: Мой minibot

EdGull » 23 апр 2010, 18:58

кого ее?

Re: Мой minibot

enzimscd » 23 апр 2010, 19:01

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

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

Перемычку.


cron
Rambler\'s Top100 Mail.ru counter