Четверг, 25.04.2024, 14:02
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 9
  • «
  • 1
  • 2
  • 3
  • 4
  • 8
  • 9
  • »
Архив - только для чтения
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
Проект "Kapanda"
DoniakДата: Суббота, 17.10.2009, 21:26 | Сообщение # 16








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
здорова получилось :)
 
pashteetДата: Воскресенье, 18.10.2009, 20:22 | Сообщение # 17








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Спасибо thank_you

Добавлено (18.10.2009, 20:22)
---------------------------------------------
Прикрутил ТСОП, теперь можно управлять с пульта! dance4 Очень нравится! Все расценивают как "умную" игрушку biggrin

 
pashteetДата: Воскресенье, 18.10.2009, 20:31 | Сообщение # 18








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Ну и как пологается - аттачи:


Фото "доработанного" MRC-40

Добавлено (18.10.2009, 20:31)
---------------------------------------------
П.С. Видео будет завтра, сегодня у дочки День Рождения dance4

Прикрепления: 5771479.jpg (600.9 Kb) · 9365971.jpg (615.7 Kb)
 
юрииДата: Воскресенье, 18.10.2009, 20:44 | Сообщение # 19








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
Quote (pashteet)
у дочки День Рождения

big_hbd поздравляю


Сообщение отредактировал юрии - Воскресенье, 18.10.2009, 20:45
 
SpaceДата: Воскресенье, 18.10.2009, 21:14 | Сообщение # 20








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Quote (pashteet)
у дочки День Рождения

Это замечательно, поздравляю! happybirth
Пробовал тоже играться с ик-управлением, но заработало только на тиньке 2313, а таже прога на меге не хотела работать. Точней она работало, но оооочень заторможено, ощущение было что там задержка стоит в секунд 5 не меньше. Скинь потом саму прогу и напиши какие фьюзы прошивал.
 
pashteetДата: Воскресенье, 18.10.2009, 21:53 | Сообщение # 21








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Quote (Space)
Пробовал тоже играться с ик-управлением, но заработало только на тиньке 2313, а таже прога на меге не хотела работать. Точней она работало, но оооочень заторможено, ощущение было что там задержка стоит в секунд 5 не меньше. Скинь потом саму прогу и напиши какие фьюзы прошивал.

Я смотрел твою тему на робофоруме!
Нашел элементарную ошибку - кондеры на кварц! Тинька заводит кварц на 16 при кондерах в 30пФ, а мега -нет! только при 22пФ crazy
Так что если ты кондеры не перипаивал в схеме, то она врятли бы заработала pardon
Сейчас организовано управление 9-ю командами (вперед, вперед вправо, вперед влево, назад, назад вправо, назад влево, стоп, разворот вправо, разворот влево) Завтра буду мутить управление скоростью и еще что-нибудь придумаю crazy
 
SpaceДата: Воскресенье, 18.10.2009, 21:59 | Сообщение # 22








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
На на меге у меня и стояли кондёры в 22пФ, да и на тиньке тоже.
Ты скажи что за фьюзы прошивал. По фото смотрел кварц вроде на 8 стоит.
 
pashteetДата: Воскресенье, 18.10.2009, 22:16 | Сообщение # 23








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Да кварц на 8МГц, какраз завтра решил перепаять на 16
Фьюзы такие:

Добавлено (18.10.2009, 22:16)
---------------------------------------------

Code
$regfile = "m32def.dat"                    'используем мк ATmega32
$crystal = 8000000                    'частота кварцевого резонатора 8MHz

$lib "mcsbyte.lbx"

Config Rc5 = Pinb.3
Config Pinb.0 = Output : Led1 Alias Portb.0                 'ногу сконфигурировали как выход и обозвали Led1
Config Pinb.2 = Output : Led2 Alias Portb.2                 'ногу сконфигурировали как выход и обозвали Led2

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       ' таймер для ШИМ двигателей

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

Dim Address As Byte , Command As Byte
Dim Speed As Integer
Enable Interrupts                    ' разрешаем прерывания

Do

Getrc5(address , Command)
    If Address <> 255 And Command <> 255 Then
    Command = Command And &B01111111
    End If

    If Command = 5 Then : Reset Led1
       Gosub Стоп
    Elseif Command = 2 Then : Set Led1
       Gosub Вперёд
       Waitms 100
    Elseif Command = 8 Then
       Gosub Назад
       Waitms 100
    Elseif Command = 4 Then
       Gosub Разворот_влево
       Waitms 100
    Elseif Command = 6 Then
       Gosub Разворот_вправо
       Waitms 100
    Elseif Command = 3 Then
       Gosub Вперёд_вправо
       Waitms 100
    Elseif Command = 1 Then
       Gosub Вперёд_влево
       Waitms 100
    Elseif Command = 7 Then
       Gosub Назад_влево
       Waitms 100
    Elseif Command = 9 Then
       Gosub Назад_вправо
       Waitms 100
    End If

Loop

Извини, что без коментариев, делал на скорую руку pardon

Прикрепления: 1618837.png (27.1 Kb)
 
SpaceДата: Воскресенье, 18.10.2009, 22:48 | Сообщение # 24








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
комментарии не требуются и так всё понятно wink
 
pashteetДата: Понедельник, 19.10.2009, 15:32 | Сообщение # 25








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Ребят, что означает ошибка: Duplicate label?
 
SpaceДата: Понедельник, 19.10.2009, 15:55 | Сообщение # 26








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Ну сам по суди, если перевести, то получается так: повторяющаяся метка. Значит в проге 2 одинаковые метки вот и ошибку выдаёт
 
dangerДата: Понедельник, 19.10.2009, 19:39 | Сообщение # 27








Язык программированя: пока нет
Зарегистрирован 17.07.2009
Группа: Новички
Сообщений: 168
Город: Чебоксары
Статус: Offline
http://roboforum.ru/wiki/Файл:MBTT.jpg а это твой бот был?

http://vkontakte.ru/club13643816 тыркни по ссылке
 
юрииДата: Понедельник, 19.10.2009, 19:42 | Сообщение # 28








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
этот робот SkyStorm'а
 
pashteetДата: Среда, 21.10.2009, 20:19 | Сообщение # 29








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Нет, это Костин робот, но шасси одинаковые (если чесно, я у него подсмотрел blush2 )
Кирилл, спасибо за разъяснения! Сейчас еще раз посмотрю код, можт че просматрел pardon

Добавлено (19.10.2009, 23:03)
---------------------------------------------
Блин, ребят, кому не сложно посмотрите код, плиз! Я уже всю голову сломал, че иму не нравится dry
Я недавно начал писать и многих операторов еще не знаю, можт я где накосячил pardon

Code

'********************  Проект Капанда ******************************************
'******************** Гусеничный робот *****************************************
'******************* С АТмега32 на борту ***************************************
'************* частота системного кварца 8 МГц *********************************
'************ возможность расширения функционала *******************************
'*********** Котроллер собран на платформе MRC-40 ******************************
'*** Благодарности: ************************************************************
'**** Setar, SkayStorm, FireFly, Spase, DeaD ***********************************
'*******************************************************************************

$regfile = "m32def.dat"                    'используем мк ATmega32
$crystal = 8000000                    'частота кварцевого резонатора 8MHz

'****************************Подключаемые библиотеки****************************

$lib "mcsbyte.lbx"                    ' Библиотека для использования протокола RC5
'$lib "lcd4.lbx"                    'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
'Cursor Off : Cls                    'отключаем курсор и очищаем дисплей

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

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

' PortA.0 - Левый нижний
' PortA.1 - Правый нижний
' PortA.2 - Левый верхний
' PortA.3 - Правый верхний
' Поключили дальномер, порт A7, настройки АДС ниже

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

'Библиотека lcd4.lbx использует следующее подключение:
'Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
'Config Lcd = 16 * 2                    'используем дисплей на 2 строчки по 16 знакомест в каждой
Config Rc5 = Pinb.3
Config Pinb.0 = Output : Led1 Alias Portb.0                 'ногу сконфигурировали как выход и обозвали Led1
Config Pinb.2 = Output : Led2 Alias Portb.2                 'ногу сконфигурировали как выход и обозвали Led2
Config Pinb.1 = Output : Led3 Alias Portb.1                 'ногу сконфигурировали как выход и обозвали Led2

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

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

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

Config Pind.6 = Output : Dr1 Alias Portd.6                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pind.7 = Output : Dr2 Alias Portd.7                  'ногу сконфигурировали как выход и обозвали Dr2
Config Pind.5 = Output                    'ногу ШИМа 1-ого  движка сконфигурировали как выход
Config Pind.4 = Output                    'ногу ШИМа 2-ого движка сконфигурировали как выход
' PortD.0 - RXD
' PortD.1 - TXD
' Свободные порты: PortD.2 - PortD.3

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

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

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

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

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

Dim Address As Byte , Command As Byte
Dim Speed As Integer , Sharp As Integer , Lv As Integer , Pv As Integer , Ln As Integer , Pn As Integer
Dim I As Integer , P As Integer , G As Integer
Dim Vout As Word
Dim A As Byte

Speed = 155
A = 1

'*****************************Основной цикл*************************************

'Do

  While A > 0                    ' ждем команды с пульта и переходим к соответствующей программе
   Getrc5(address , Command)
    If Address <> 255 And Command <> 255 Then
    Command = Command And &B01111111
    End If
   If Command = 1 Then : P = 1 : Waitms 100 : Gosub 1        ' Самостоятельное движение с объездом препядствий и использованием датчиков поверхности
   Elseif Command = 2 Then : P = 2 : Waitms 100 : Gosub 2    ' Самостоятельное движение с объездом препядствий без использованием датчиков поверхности
   Elseif Command = 3 Then : P = 3 : Waitms 100 : Gosub 3    ' Прием команд и управление с пульта
   End If
  Wend

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

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

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

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

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

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

Gosub 1

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

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

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

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

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

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

Gosub 2

3:
' P = 3
Getrc5(address , Command)
    If Address <> 255 And Command <> 255 Then
    Command = Command And &B01111111
    End If

    If Command = 5 Then : Reset Led1
       Gosub Стоп
    Elseif Command = 2 Then : Set Led1
       Gosub Вперёд
       Waitms 100
    Elseif Command = 8 Then : Set Led1
       Gosub Назад
       Waitms 100
    Elseif Command = 4 Then : Set Led1
       Gosub Разворот_влево
       Waitms 100
    Elseif Command = 6 Then : Set Led1
       Gosub Разворот_вправо
       Waitms 100
    Elseif Command = 3 Then : Set Led1
       Gosub Вперёд_вправо
       Waitms 100
    Elseif Command = 1 Then : Set Led1
       Gosub Вперёд_влево
       Waitms 100
    Elseif Command = 7 Then : Set Led1
       Gosub Назад_влево
       Waitms 100
    Elseif Command = 9 Then : Set Led1
       Gosub Назад_вправо
       Waitms 100
    Elseif Command = 16 Then : Set Led2 : Waitms 100 : Reset Led2
       Speed = Speed + 5
       Waitms 100
    Elseif Command = 17 Then : Set Led2 : Waitms 100 : Reset Led2
       Speed = Speed - 5
       Waitms 100
    End If

Gosub 3

'Loop

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

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

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

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

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

Назад:                    ' едим назад на заданной скорости
Dr1 = 1 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

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

Назад_влево:                    ' поворачиваем назад-влево на заданной скорости                    ' едим вперёд на заданной скорости
Dr1 = 1 : Dr2 = 1 : Pwm1a = 0 : Pwm1b = Speed
Return

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

Разворот_влево:                    ' делаем Разворот_влево на заданной скорости
Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

'*******************************************************************************
'                        Проверка датчиков поверхности
'*******************************************************************************

Левый_верхний:

Config Porta.2 = Output : Set Porta.2 : Waitms 3
Config Porta.2 = Input : Reset Porta.2 : Waitms 3
If Pina.2 = 1 Then : Lv = 0 : Else : Lv = 1 : End If
Return

Левый_нижний:

Config Porta.0 = Output : Set Porta.0 : Waitms 3
Config Porta.0 = Input : Reset Porta.0 : Waitms 3
If Pina.0 = 1 Then : Ln = 0 : Else : Ln = 1 : End If
Return

Правый_верхний:

Config Porta.3 = Output : Set Porta.3 : Waitms 3
Config Porta.3 = Input : Reset Porta.3 : Waitms 3
If Pina.3 = 1 Then : Pv = 0 : Else : Pv = 1 : End If
Return

Правый_нижний:

Config Porta.1 = Output : Set Porta.1 : Waitms 3
Config Porta.1 = Input : Reset Porta.1 : Waitms 3
If Pina.1 = 1 Then : Pn = 0 : Else : Pn = 1 : End If
Return

'*******************************************************************************
'                        Анализ поверхности стола
'*******************************************************************************

Датчики:
' Gosub Подъем

   If Lv = 0 Then
   Set Led1                    ' если обрыв слева то
    For G = 1 To 6                    ' цикл отъезда от края стола
     Gosub Левый_нижний : Gosub Правый_нижний                ' проверяем задние датчики
     If Ln = 0 Or Pn = 0 Then : Reset Led1 : Gosub Вперёд : Return       ' если сработали задние датчики то прекращаем отъезд, трогаемся вперед и возвращаемся в цикл
     Else : Gosub Назад_влево : Waitms 300 : Gosub Вперёд    ' если датчики не сработали то продолжаем отъезд
     End If
    Next
   End If
   If Pv = 0 Then
   Set Led2                    ' все тоже самое для правой сороны
    For G = 1 To 6
     Gosub Левый_нижний : Gosub Правый_нижний
     If Ln = 0 Or Pn = 0 Then : Reset Led2 : Gosub Вперёд : Return
     Else : Gosub Назад_вправо : Waitms 300 : Gosub Вперёд
     End If
    Next
   End If
  Reset Led1
  Reset Led2
Return

'Подъем:

' Gosub Левый_верхний                    ' анализ "на подъем"
' Gosub Левый_нижний
' Gosub Правый_верхний
' Gosub Правый_нижний
'   If Pv = 0 And Ln = 0 Or Pn = 0 And Lv = 0 Then           ' проверяем на полу мы или уже в воздухе
'   Gosub Стоп : Waitms 3000                    ' если в воздухе то останавливаемся
'   Else : Return
'   End If
'Gosub 2

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

Sharp_right:
Do
Start Adc : Vout = Getadc(7)                    'Sharp connected for example to PA=0(ADC0)
If Vout > 240 Then : Led3 = 1 : Gosub Разворот_влево : End If : Loop Until Vout < 240 : Led3 = 0 : Gosub Вперёд
Return

Sharp_left:
Do
Start Adc : Vout = Getadc(7)                    'Sharp connected for example to PA=0(ADC0)
If Vout > 240 Then : Led3 = 1 : Gosub Разворот_вправо : End If : Loop Until Vout < 240 : Led3 = 0 : Gosub Вперёд
Return

End

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

Добавлено (21.10.2009, 15:51)
---------------------------------------------
Фух, освоил работу прерываний, жизнь становится приятнее dance4

Добавлено (21.10.2009, 20:19)
---------------------------------------------
Space! Подскажи плиз, или носом ткни, как на Васике софтварно рулить сервами? А то я серву на таймер2 вешаю, а она не крутится wacko
Впечатление такое, что нету Таймера2 у меня в меге crazy

 
SpaceДата: Среда, 21.10.2009, 20:45 | Сообщение # 30








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
я тебе уже писал как можно попробовать ошибку вычислить. Ещё лучше, если ты раскидаешь код программы по отдельным файлам как я делал. Так он тебе хотя бы укажет в каком из файлов ошибка.
Quote (pashteet)
Подскажи плиз, или носом ткни, как на Васике софтварно рулить сервами?

как-как её рулить??????????? cry
 
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
  • Страница 2 из 9
  • «
  • 1
  • 2
  • 3
  • 4
  • 8
  • 9
  • »
Поиск: