[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » Мастерская » Я начинающий » Помогите с программой ))
Помогите с программой ))
KrishДата: Вторник, 12.04.2011, 15:23 | Сообщение # 1
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Сделал электронику, теперь нужна программа.
Робот состоит:
1) "Мозг" - atmega16, собран по схеме MRC40, на 16 Mhz
2) ДД с робоспейс, на l293d
3) RC5 модуль.
4) 1 SHARP (2Y0A21) на 10-80см.
5) 1 Севропривод.
6) моторы - сдвоенный редуктор TAMIYA.
Брал за пример kapandu.

Вот вроде бы программа, но я не знаю как подключать RC5. Помогите, за одно проверьте программу.

Code
*******************************************************************************

$regfile = "m16def.dat"                    'используем мк ATmega16
$crystal = 16000000                    'частота кварцевого резонатора 16MHz

'****************************Настройка таймеров и сервоприводов*****************

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       ' таймер для ШИМ двигателей
Config Servos = 1 , Servo1 = Portc.2 , Reload = 12          ' Указываем кол-во серв, присваеваем имя Servo1 порту PC2, указываем длину импульса.

'*************************** Порт A ********************************************

' Поключили дальномер, порт A7, настройки АДС ниже

'*************************** Порт В ********************************************

'*************************** Порт C ********************************************

Config Pinc.2 = Output                    ' Подключили серву1 к порту С2, настройки сервы выше

'*************************** Порт D ********************************************

Config Pinc.6 = Output : Dr1 Alias Portc.6                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pinc.7 = Output : Dr2 Alias Portc.7                  'ногу сконфигурировали как выход и обозвали Dr2
Config Pinc.5 = Output                    'ногу ШИМа 1-ого  движка сконфигурировали как выход
Config Pinc.4 = Output                    'ногу ШИМа 2-ого движка сконфигурировали как выход

'*****************************Настройка ADC*************************************

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

'*******************************************************************************

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

'************************Переменные и константы*********************************

Dim Speed As Integer , Sharp As Integer                         
Dim I As Integer                       
Dim Vout As Word

'*****************************Основной цикл*************************************
Speed = 255
1:
Do

Gosub Вперёд                    ' Если сигнала от ик-датчика(Sharp) не поступает, значит двигаемся всё время прямо

'******************Вращение сервопривода и датчика Sharp************************

For I = 45 To 90 Step 1                    ' Вращаем сервой справа на лево
      Gosub Sharp_right                    ' считаем что шарп смотрит вправо
      Servo(1) = I
      Waitms 12                    ' ждем 12 мс
Next

For I = 90 To 135 Step 1                    ' Вращаем сервой справа на лево
      Servo(1) = I
      Gosub Sharp_left                    ' считаем что шарп смотрит влево
      Waitms 12                    ' ждем 12 мс
Next

For I = 135 To 90 Step -1                    ' Вращаем сервой слева на право
      Gosub Sharp_left                    ' считаем что шарп смотрит вправо
      Servo(1) = I
      Waitms 12                    ' ждем 12 мс
Next

For I = 90 To 45 Step -1                    ' Вращаем сервой слева на право
      Gosub Sharp_right                    ' считаем что шарп смотрит влево
      Servo(1) = I
      Waitms 12                    ' ждем 12 мс
Next

Loop

'*******************************************************************************
'      Включение комбинации моторов для движения в заданном направлении
'*******************************************************************************

Стоп:                    ' стоим на месте
Dr1 = 0 : Dr2 = 0 : Pwm1a = 0 : Pwm1b = 0
Return

Вперёд:
                       ' едим вперёд на заданной скорости
Dr1 = 0 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

Назад:                    ' едим назад на заданной скорости

Dr1 = 1 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Разворот_вправо:                    ' делаем Разворот_вправо на заданной скорости

Dr1 = 0 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Разворот_влево:                    ' делаем Разворот_влево на заданной скорости

Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

'***********************************Sharp***************************************

Sharp_right:

Start Adc : Vout = Getadc(7)                    'Sharp connected for example to PA=0(ADC0)
Stop Adc
If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
If Sharp = 1 Then : Led1 = 1
      Gosub Разворот_влево : Waitms 500 : Led1 = 0 : Gosub Вперёд : End If

Return

Sharp_left:

Start Adc : Vout = Getadc(7)                    'Sharp connected for example to PA=0(ADC0)
Stop Adc
If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
If Sharp = 1 Then : Led2 = 1
      Gosub Разворот_вправо : Waitms 500 : Led2 = 0 : Gosub Вперёд : End If

Return

End

'*******************************************************************************

Вот меня смущает вот этот момент:
'*************************** Порт D ********************************************

Code
Config Pinc.6 = Output : Dr1 Alias Portc.6                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pinc.7 = Output : Dr2 Alias Portc.7                  'ногу сконфигурировали как выход и обозвали Dr2
Config Pinc.5 = Output                    'ногу ШИМа 1-ого  движка сконфигурировали как выход
Config Pinc.4 = Output                    'ногу ШИМа 2-ого движка сконфигурировали как выход

Вот ДД: http://robotsspace.ucoz.ru/publ/7-1-0-50
для чего на нём En2 и En1, вроде бы подключаю я только in3, in4, in2, in1?

Добавлено (12.04.2011, 15:23)
---------------------------------------------
Дайте программу RC5 модуля на TSOP1736


LacOS

Сообщение отредактировал Krish - Вторник, 12.04.2011, 12:23
SpaceДата: Вторник, 12.04.2011, 17:54 | Сообщение # 2
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Quote (Krish)
для чего на нём En2 и En1, вроде бы подключаю я только in3, in4, in2, in1?

шим подаётся на эти выводы, если шим не нужен просто подключаешь на эти выводы +5В. Там я вроде перемычку для этого делал.
Quote (Krish)
Дайте программу RC5 модуля на TSOP1736

ищи на робофоруме, радиокот тоже встречалось там.

Ты б лучше не спешил брать куски целиком. Начни с начала. Подключи моторы и шарп. И на основе этого сделай хотя б чтоб препятствия он объезжал. Как сделаешь прикручивай серву, на неё шарп и делай тоже самое. ток чтоб робот сервой крутил в разные стороны. А потом уже RC5. Как за счёт одного шарпа сделать всё, смотри статью от неё и отталкивайся.


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

LacOS
SpaceДата: Вторник, 12.04.2011, 18:34 | Сообщение # 4
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Code
Config Pinc.4 = Output : Dr1 Alias Portc.4                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pinc.5 = Output : Dr2 Alias Portc.5                  'ногу сконфигурировали как выход и обозвали Dr2
Config Pinc.6 = Output : Dr3 Alias Portc.6                  'ногу сконфигурировали как выход и обозвали Dr3
Config Pinc.7 = Output : Dr4 Alias Portc.7                  'ногу сконфигурировали как выход и обозвали Dr4

На 4 порт подрубаешь In1, на 5 In2 (Для 1-ого мотора). На 6 In3, на 7 In4(для второго мотора)


SpaceДата: Вторник, 12.04.2011, 18:35 | Сообщение # 5
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Управление через шим

KrishДата: Вторник, 12.04.2011, 19:15 | Сообщение # 6
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Если я такую программу залью:
Code
$regfile = "m16def.dat"                    ' файл спецификации Меги16
$crystal = 16000000                    ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pind.2 = Output : R Alias Portd.2                    'ногу сконфигурировали как выход и обозвали R
Config Pind.3 = Output : L Alias Portd.3                    'ногу сконфигурировали как выход и обозвали L
Config Pind.4 = Output                    'ногу ШИМа  сконфигурировали как выход
'----------------------------------------------------------------------------
Dim Speed As Byte

Speed = 80                    ' задаём скорость мотору

Do
    R = 1 : Pwm1b = Speed                    'вращаем в одну сторону 3 секунды
    Wait 3

    R = 0 : Pwm1b = 0                    'остановка мотора на 3 секунды
    L = 0 : Pwm1b = 0
    Wait 3

    L = 1 : Pwm1b = Speed                    'вращаем в другую сторону 3 секунды
    Wait 3

    R = 0 : Pwm1b = 0                    'остановка мотора на 3 секунды
    L = 0 : Pwm1b = 0
    Wait 3
Loop   
Config Rc5 = Pinс.2
Enable Interrupts
Dim Address As Byte , Command As Byte
       
Do
      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
Loop
End

ТО по rc5 протоколу он ездить будет?


LacOS

Сообщение отредактировал Krish - Вторник, 12.04.2011, 19:16
SpaceДата: Вторник, 12.04.2011, 20:33 | Сообщение # 7
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
wacko нет crazy
И чего ты хотел добиться этим кодом я не понимаю. Ты тупо скопировал с робофорума кусок кода. В этом цикле, последнем выполняется вывод данных на пк через uart, нажал на клавишу на пульте, она и выводится на экран пк (в программе терминал).


KrishДата: Среда, 13.04.2011, 11:28 | Сообщение # 8
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, тогда дай программу ))

LacOS
SpaceДата: Среда, 13.04.2011, 17:33 | Сообщение # 9
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
ну дам программу и чё ты дальше с ней делать будешь.. задавать вопросы что там и для чего и как переделать под своё. нафик мне это надо. с чего начать я уже сказал. вот и вперёд. А ты пока берешься за то чего даже не понимаешь dry

KrishДата: Пятница, 15.04.2011, 11:09 | Сообщение # 10
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Всё с программой всё супер, найду фотик скину видео.
Хочу подключить LCD wh1602b к attiny2313 и сделать часы, это реально?
Есть ли такие проекты у Вас?


LacOS
SpaceДата: Пятница, 15.04.2011, 11:25 | Сообщение # 11
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Реально, только ещё микросхема ds1307 нужна. Проекта пока нет. но уже в процессе. Как доделаю выложу

KrishДата: Суббота, 16.04.2011, 21:47 | Сообщение # 12
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, хм, мне сказали что нужен часовой кварц, а то кварц на 16 mhz безбожно врёт...

LacOS
SpaceДата: Суббота, 16.04.2011, 21:53 | Сообщение # 13
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
ну естественно к микросхеме этой ещё и кварц нужен. платку собиру на днях, схема такова:
Прикрепления: 2875665.jpg (63.3 Kb)


KrishДата: Суббота, 16.04.2011, 21:56 | Сообщение # 14
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, да, я видел, на робозона. я хотел бы тебе свою нарисовать, но не знаю в какой программе ты рисуешь?! дай пожалуйста название программы))

LacOS
SpaceДата: Суббота, 16.04.2011, 21:58 | Сообщение # 15
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Если научишься искать по сайту, то большинство вопросов отпадут.
смотри тут


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