roboforum.ru

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

Уроки программирования робота для чайников

Re: Уроки программирования робота для чайников

Ven-Tures » 14 июн 2009, 21:27

тут
Изображение

Re: Уроки программирования робота для чайников

Qzen » 15 июн 2009, 06:39

Поменял, тут творится интересная штука, адреса он все равно не выдает =)
Он выдает нечто вроде: 36А-00001111, 35А-00001111 и т.д. используя эти два значения =) - это на скорости 115200.
На скорости 2400 он пишет подряд: КККККК и т.д. до бесконечности.
А интересного тут то, что при прошивке тестовой прошивки происходит вышеописанное для скорости 115200. Значит, определённая закономерность есть =)
И вообще, попробуйте кто-нибудь, у кого-нибудь такая прога пашет как надо? Может, косяк в коде? :)

Re: Уроки программирования робота для чайников

galex1981 » 15 июн 2009, 10:15

В коде никакого косяка нет, уже много раз пробовал.

Re: Уроки программирования робота для чайников

Qzen » 15 июн 2009, 16:30

Короче, не знаю, что за шлак он печатает помимо адресов и кодов, но тем не менее он их печатает. На скорости 2400 ещё можно это проследить .а вот на 115200 уже практически невозможно.
За что отвечает строчка Print Chr(12)??
А в целом фиг бы с ним, с терминалом, главное, что от пульта бот работает. Всем спасибо за помощь =)

Re: Уроки программирования робота для чайников

galex1981 » 15 июн 2009, 16:41

Строчка Print Chr(12) означает перевод на другую строку в терминале

Re: Уроки программирования робота для чайников

Qzen » 15 июн 2009, 16:42

Найден косяк - надо было Выключить минибота и снова включить, тогда всё будет шикарно! :))

Re: Уроки программирования робота для чайников

blindman » 15 июн 2009, 16:47

galex1981 писал(а):Строчка Print Chr(12) означает перевод на другую строку в терминале
Это символ Form Feed - в принтерах означал перемотку бумаги до следующей страницы. Для перехода на новую строку надо 0x0A [chr(10), Line Feed], 0x0D [chr(13), Carridge Return] или 0x0A 0x0D - зависит от настроек терминала

Re: Уроки программирования робота для чайников

Ven-Tures » 15 июн 2009, 17:14

А в целом фиг бы с ним, с терминалом, главное, что от пульта бот работает. Всем спасибо за помощь =)


Ты какую прогу прошил, что робот стал работать?

Re: Уроки программирования робота для чайников

galex1981 » 15 июн 2009, 17:16

Да любая из прог с кодом RC5 будет работать

Re: Уроки программирования робота для чайников

Ven-Tures » 15 июн 2009, 17:22

ну вот это прошил и ничего.
Код: Выделить всёРазвернуть
$prog &HFF , &HE4 , &HD9 , &H00       'указываем какие фусибиты надо прошить
$regfile = "m32def.dat"       ' файл спецификации Меги32
$crystal = 8000000       ' указываем на какой частоте будем работать
$baud = 9600       ' указываем частоту дла usart (теперь нужно только для отладки программы)

'----------------------------------------------------------------------------
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 = 200       ' указываем скорость робота

Config Rc5 = Pind.3
Enable Interrupts
Dim Address As Byte , Command As Byte

Print "Start MiniBot"       ' выводим в терминал отладочное сообщение

Do
   Gosub Прием_rc5
   If Command = 255 Then
      Gosub Стоп
   Elseif Command = 32 Then
      Gosub Прямо
      Waitms 100
   Elseif Command = 33 Then
      Gosub Назад
      Waitms 100
   Elseif Command = 17 Then
      Gosub Влево
      Waitms 100
   Elseif Command = 16 Then
      Gosub Вправо
      Waitms 100
   End If
Loop

Прием_rc5:
   Getrc5(address , Command)
   If Address <> 255 And Command <> 255 Then
      Command = Command And &B01111111
      'Print Chr(12);       ' выводим в терминал символ
      'Print "Address - " ; Address;       ' выводим в терминал адрес
      'Print "Command - " ; Command;       ' выводим в терминал номер команды
   End If
Return

Влево:
   Gosub Стоп : Waitms 10
   Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Вправо:
   Gosub Стоп : Waitms 10
   Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Прямо:
   Gosub Стоп : Waitms 10
   Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Назад:
   Gosub Стоп : Waitms 10
   Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Стоп:
   Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return

Re: Уроки программирования робота для чайников

EdGull » 15 июн 2009, 17:25

минибот какой версии?

Re: Уроки программирования робота для чайников

Ven-Tures » 15 июн 2009, 17:27

2.0

Re: Уроки программирования робота для чайников

Qzen » 15 июн 2009, 17:37

Код: Выделить всёРазвернуть
'$prog &HFF , &HE4 , &HD9 , &H00       'указываем какие фусибиты надо прошить
$regfile = "m32def.dat"                                     ' файл спецификации Меги32
$crystal = 7372800                                          ' указываем на какой частоте будем работать
$baud = 115200                                              ' указываем частоту дла usart (теперь нужно только для отладки программы)

'----------------------------------------------------------------------------
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 = 100                                                 ' указываем скорость робота

Config Rc5 = Pind.3
Enable Interrupts
Dim Address As Byte , Command As Byte

Print "Start MiniBot"                                       ' выводим в терминал отладочное сообщение

Do
   Gosub Прием_rc5
   If Command = 255 Then
      Gosub Стоп
   Elseif Command = 32 Then
      Gosub Прямо
      Waitms 100
   Elseif Command = 33 Then
      Gosub Назад
      Waitms 100
   Elseif Command = 17 Then
      Gosub Влево
      Waitms 100
   Elseif Command = 16 Then
      Gosub Вправо
      Waitms 100
   End If
Loop

Прием_rc5:
   Getrc5(address , Command)
   If Address <> 255 And Command <> 255 Then
      Command = Command And &B01111111
      'Print Chr(12);       ' выводим в терминал символ
      'Print "Address - " ; Address;       ' выводим в терминал адрес
      'Print "Command - " ; Command;       ' выводим в терминал номер команды
   End If
Return

Влево:
   Gosub Стоп : Waitms 10
   Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Вправо:
   Gosub Стоп : Waitms 10
   Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Прямо:
   Gosub Стоп : Waitms 10
   Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Назад:
   Gosub Стоп : Waitms 10
   Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Стоп:
   Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return

Все коды пульта здесь: http://content.foto.mail.ru/list/qzen/59/i-89.jpg

Re: Уроки программирования робота для чайников

Ven-Tures » 15 июн 2009, 17:47

И у тебя и без терминала работает да?

Просто, чёт дальше тишина...

Re: Уроки программирования робота для чайников

EdGull » 15 июн 2009, 17:49

Ven-Tures писал(а):2.0

шапку кода возьми из заводской прошивки


cron
Rambler\'s Top100 Mail.ru counter