[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум » Мастерская » Я начинающий » Помогите с программой ))
Помогите с программой ))
KrishДата: Воскресенье, 17.04.2011, 15:49 | Сообщение # 16
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Блин хочется что нибудь интересное спаять)) кроме робота))
В столе у меня деталей на 10 роботов хватит )) а идей нет(

Добавлено (17.04.2011, 15:48)
---------------------------------------------
короче, не могу подключить ДД.. :(
http://robotsspace.ucoz.ru/publ/7-1-0-50 вот ДД
Вот программа...

Code
$regfile = "m16def.dat"                    ' файл спецификации Меги16
$crystal = 16000000                    ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.4 = Output : Drl Alias Portc.4                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.5 = Output : Drr Alias Portc.5                  'ногу сконфигурировали как выход и обозвали Drr
Config Pinc.3 = Output : Dre Alias Portc.3                  'ногу сконфигурировали как выход и обозвали Dre
Config Pinc.2 = Output : Drw Alias Portc.2                  'ногу сконфигурировали как выход и обозвали Drw
'----------------------------------------------------------------------------

Dim Speed As Byte
Speed = 200                    ' указываем скорость робота

Config Rc5 = Pinc.7
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Start"                    ' выводим в терминал отладочное сообщение

Do
    Gosub Прием_rc5
    If Command = 255 Then
       Gosub Стоп
        Waitms 0
   Elseif Command = 32 Then
       Gosub Прямо
        Waitms 0
    Elseif Command = 33 Then
       Gosub Назад
        Waitms 0
    Elseif Command = 17 Then
       Gosub Влево
        Waitms 0
    Elseif Command = 16 Then
       Gosub Вправо
        Waitms 0
    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

Влево:
    Drl = 0 : Drr = 1 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Вправо:
    Drl = 1 : Drr = 0 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Прямо:
   Drl = 1 : Drr = 0 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Назад:
    Drl = 0 : Drr = 1 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

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

Исправь плиз что не так, space, и напиши к какому порту ты что подключил))
Напиши плиз правильно, чтоб вопросов лишних не было... а то я не понимаю((

Добавлено (17.04.2011, 15:49)
---------------------------------------------
Мозг atmega16, у меня есть возможность подключения только к портам A и C :(


LacOS
SpaceДата: Воскресенье, 17.04.2011, 16:00 | Сообщение # 17
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Читай и разбирайся . Для управления одним мотором требуется 3 вывода. Тебе надо ещё 2 добавить вот так:
Code
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.4 = Output : Drl Alias Portc.4                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.5 = Output : Drr Alias Portc.5                  'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output                    'ногу ШИМа  сконфигурировали как выход
Config Pinc.3 = Output : Dre Alias Portc.3                  'ногу сконфигурировали как выход и обозвали Dre
Config Pinc.2 = Output : Drw Alias Portc.2                  'ногу сконфигурировали как выход и обозвали Drw
Config Pind.5 = Output  

Pd5 и Pd4 через эти выводы подаётся шим сигнал. Отмечается ка OC1A, OC1B

Прикрепления: 2699864.gif (23.3 Kb)


KrishДата: Воскресенье, 17.04.2011, 17:05 | Сообщение # 18
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, Я En1 и En2 контакты не ставил... Они нужны?

LacOS
SpaceДата: Воскресенье, 17.04.2011, 17:07 | Сообщение # 19
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
если шим не собирался использовать, то убирай строки

Code
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Code
Dim Speed As Byte  
Speed = 200                    ' указываем скорость робота

И все такие строки:

Code
Pwm1b = Speed : Pwm1a = Speed:


SpaceДата: Воскресенье, 17.04.2011, 17:08 | Сообщение # 20
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
А выводы En1 и En2 подсоедини на +5Вольт

KrishДата: Воскресенье, 17.04.2011, 17:39 | Сообщение # 21
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Если судить по твоей схеме то En1 и En2 соединён через резистор с "+" и также через резистор к "минусом" , для чего это?
тоесть я так понимаю я подключаю En2, in3, in4 к одному мотору.
En1, in1, in2 ко второму мотору?
Если да, то тогда всё ясно...

Добавлено (17.04.2011, 17:39)
---------------------------------------------
И вот ещё, я подключал сервы по твоему примеру, вот статья:
http://robotsspace.ucoz.ru/publ/podkljuchaem_servoprivod/8-1-0-67
Они не крутят:((( не знаю что делать.. питание подаю, порт мк живой


LacOS
KrishДата: Воскресенье, 17.04.2011, 17:43 | Сообщение # 22
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Вот короче:
1) ДД:

2) Платформа:

3) Мозг

4)RC5
Прикрепления: 9742494.jpg (36.4 Kb) · 1511090.jpg (36.8 Kb) · 3518895.jpg (48.3 Kb) · 8027247.jpg (27.4 Kb)


LacOS
SpaceДата: Воскресенье, 17.04.2011, 17:43 | Сообщение # 23
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Quote (Krish)
Если судить по твоей схеме то En1 и En2 соединён через резистор с "+" и также через резистор к "минусом" , для чего это?

подтяжка так сделана. где-то видал похожую схему, по её примеру и собирал.
Quote (Krish)
тоесть я так понимаю я подключаю En2, in3, in4 к одному мотору.
En1, in1, in2 ко второму мотору?
Если да, то тогда всё ясно...

да.
Quote (Krish)
И вот ещё, я подключал сервы по твоему примеру, вот статья:
http://robotsspace.ucoz.ru/publ/podkljuchaem_servoprivod/8-1-0-67
Они не крутят:((( не знаю что делать.. питание подаю, порт мк живой

проверяй правильно ли подключил серву. прога рабочая 100% ищи проблему в электронике


KrishДата: Воскресенье, 17.04.2011, 18:33 | Сообщение # 24
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Бываю подключаю питание на ДД и моторы левый самопроизвольно крутиться из за чего это?
Схемы проверял нету ошибок...
А вообще есть разница к какому порту подключать? я могу же в принципе серву к обсолютно любому порту поставить?

Добавлено (17.04.2011, 18:33)
---------------------------------------------

Quote (Space)
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.4 = Output : Drl Alias Portc.4 'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.5 = Output : Drr Alias Portc.5 'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output 'ногу ШИМа сконфигурировали как выход
Config Pinc.3 = Output : Dre Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dre
Config Pinc.2 = Output : Drw Alias Portc.2 'ногу сконфигурировали как выход и обозвали Drw
Config Pind.5 = Output

Смотри, М1:
pinc.4 - in3
pinc.5 - in4
pind.4 - En2
М2:
pinc.3 - in1
pinc.2 - in2
pind.5 - En1
Я так подключаю.


LacOS
SpaceДата: Воскресенье, 17.04.2011, 19:19 | Сообщение # 25
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Смотри, М1:
pinc.4 - in3
pinc.5 - in4
+5в - En2 (шим не используешь, а значит на порт мк вешать не надо)
М2:
pinc.3 - in1
pinc.2 - in2
+5в - En1
Quote (Krish)
А вообще есть разница к какому порту подключать? я могу же в принципе серву к обсолютно любому порту поставить?

на любой порт


KrishДата: Воскресенье, 17.04.2011, 19:39 | Сообщение # 26
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Я фьюзы на атмегу 16 не прошивал, мож из за этого серва не работает?

Добавлено (17.04.2011, 19:39)
---------------------------------------------
Вот прога моя для управления c RC5 ошибок надеюсь тут нет?

Code
$regfile = "m16def.dat"                    ' файл спецификации Меги8
$crystal = 16000000                    ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Pinc.7 = Output : Drl Alias Portc.7                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.6 = Output : Drr Alias Portc.6                  'ногу сконфигурировали как выход и обозвали Drr
Config Pinc.5 = Output : Dre Alias Portc.5                  'ногу сконфигурировали как выход и обозвали Dre
Config Pinc.4 = Output : Drw Alias Portc.4                  'ногу сконфигурировали как выход и обозвали Drw
'----------------------------------------------------------------------------

Dim Speed As Byte
Speed = 200                    ' указываем скорость робота

Config Rc5 = Pina.0
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Start"                    ' выводим в терминал отладочное сообщение

Do
    Gosub Прием_rc5
    If Command = 255 Then
       Gosub Стоп
        Waitms 0
   Elseif Command = 32 Then
       Gosub Прямо
        Waitms 0
    Elseif Command = 33 Then
       Gosub Назад
        Waitms 0
    Elseif Command = 17 Then
       Gosub Влево
        Waitms 0
    Elseif Command = 16 Then
       Gosub Вправо
        Waitms 0
    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

Влево:
    Drl = 0 : Drr = 1 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Вправо:
    Drl = 1 : Drr = 0 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Прямо:
   Drl = 1 : Drr = 0 : Dre = 1 : Drw = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Назад:
    Drl = 0 : Drr = 1 : Dre = 0 : Drw = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

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


LacOS
SpaceДата: Воскресенье, 17.04.2011, 19:47 | Сообщение # 27
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
вот, на сколько правильно приём команд по RC5 каналу написан не знаю. дел не имел. Подключи светодиод на PORTB.1, в проге я тебе вписал его, после пришивания он должен загореться и потухнуть:
Code
$regfile = "m16def.dat"                    ' файл спецификации Меги8
$crystal = 16000000                    ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Pinc.7 = Output : Drl Alias Portc.7                  'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.6 = Output : Drr Alias Portc.6                  'ногу сконфигурировали как выход и обозвали Drr
Config Pinc.5 = Output : Dre Alias Portc.5                  'ногу сконфигурировали как выход и обозвали Dre
Config Pinc.4 = Output : Drw Alias Portc.4                  'ногу сконфигурировали как выход и обозвали Drw
'----------------------------------------------------------------------------

Config Portb.1 = Output : Led Alias Portb.1

Config Rc5 = Pina.0

Dim Address As Byte , Command As Byte

Enable Interrupts

Led = 1
Waitms 500
Led = 0
Waitms 500

Do
     Gosub Прием_rc5
     If Command = 255 Then
        Gosub Стоп
         Waitms 100
    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
     End If
Return

Влево:
     Drl = 0 : Drr = 1
     Dre = 1 : Drw = 0
Return

Вправо:
     Drl = 1 : Drr = 0
     Dre = 0 : Drw = 1
Return

Прямо:
    Drl = 1 : Drr = 0
    Dre = 1 : Drw = 0
Return

Назад:
     Drl = 0 : Drr = 1
     Dre = 0 : Drw = 1
Return

Стоп:
     Drl = 0 : Drr = 0
     Dre = 0 : Drw = 0
Return


KrishДата: Воскресенье, 17.04.2011, 19:55 | Сообщение # 28
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Электронику проверил, всё должно работать...

Добавлено (17.04.2011, 19:50)
---------------------------------------------
Space, светодиод работает.

Добавлено (17.04.2011, 19:51)
---------------------------------------------
а можно чтобы он мигал ))

Добавлено (17.04.2011, 19:55)
---------------------------------------------
Я щас каждый порт проверю... если все будут работать, то дело в фьюзах... других вариантов нет:(


LacOS
SpaceДата: Воскресенье, 17.04.2011, 19:57 | Сообщение # 29
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
не получится, чтоб он мигал нужно засунуть те строки что я вписал между новым циклом

Code
do
Led = 1  
Waitms 500  
Led = 0  
Waitms 500
loop

но одновременно к сожалению два цикла работать не могут sad


KrishДата: Воскресенье, 17.04.2011, 20:31 | Сообщение # 30
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Серьезно, если я фьюзы не прошил из за этого проблем не может быть?

Добавлено (17.04.2011, 20:31)
---------------------------------------------
Нашёл проблемку... можно ДД подключить к разьему АДС port A?


LacOS
Форум » Мастерская » Я начинающий » Помогите с программой ))
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: