Суббота, 27.04.2024, 23:33
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Форум » Программирование » Программирование на языке С, Бейсик и Асемблер » Программа, помогите
Программа, помогите
бубубуДата: Воскресенье, 17.05.2009, 13:44 | Сообщение # 1








Зарегистрирован 02.04.2009
Группа: Новички
Сообщений: 3
Статус: Offline
Помогите написать программу на BASCOM, необходимо, чтобы робот выполнив 10 оборотов двигателями, поворачивал налево, потом также 10 и направо, потом снова направо и потом налево.

Микроконтроллер: ATMega32
Тактовая частота: 7.3728МГц

Добавлено (17.05.2009, 13:44)
---------------------------------------------
Помогите пожалуйста с алгоритмом, не могу сообразить просто :(

Сообщение отредактировал бубубу - Пятница, 15.05.2009, 21:02
 
SpaceДата: Понедельник, 18.05.2009, 22:23 | Сообщение # 2








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
чтобы обороты считать надо энкодеры ставить. проще сделать на задержках. типо 5 секунд прямо потом, направо 2,5 секунды, опять прямо 5 секунд и налево 2,5 секунды и т. д.
вот так можно:
Code
$regfile = "m16def.dat"                    'используем Mega16
$crystal = 16000000                    'частота кварцевого резонатора 16mHz

Config Pina.0 = Output : Fr Alias Porta.0                   'PA 0 устанавливаем на выход и присваиваем имя Fr(вперёд-вправо);
Config Pina.1 = Output : Br Alias Porta.1                   'PA 1 устанавливаем на выход и присваиваем имя Br(назад-вправо);
Config Pina.2 = Output : Bl Alias Porta.2                   'PA 2 устанавливаем на выход и присваиваем имя Bl(назад-влево);
Config Pina.3 = Output : Fl Alias Porta.3                   'PA 3 устанавливаем на выход и присваиваем имя Fl(вперёд-влево).

Do                    ' Главный цикл программ
Gosub Стоп                    ' Переходим в подпрограмму "Стоп" и возвращаемся из неё
Wait 1                    ' Задержка в секундах. В нашем случае это 1 секунда.
Gosub Вперёд                    ' Переходим в подпрограмму "Вперёд" и возвращаемся из неё
Wait 1
Gosub Вперёд_влево                    ' Переходим в подпрограмму "Вперёд_влево" и возвращаемся из неё
Wait 1
Gosub Вперёд_вправо                    ' Переходим в подпрограмму "Вперёд_вправо" и возвращаемся из неё
Wait 1
Gosub Назад                    ' Переходим в подпрограмму "Назад" и возвращаемся из неё
Wait 1
Gosub Назад_влево                    ' Переходим в подпрограмму "Назад_влево" и возвращаемся из неё
Wait 1
Gosub Назад_вправо                    ' Переходим в подпрограмму "Назад_вправо" и возвращаемся из неё
Wait 1
Gosub Вправо                    ' Переходим в подпрограмму "Вправо" и возвращаемся из неё
Wait 1
Gosub Влево                    ' Переходим в подпрограмму "Влево" и возвращаемся из неё
Wait 1
Loop
'' -----------------------------------------------------------------------------
'' Включение комбинации моторов для движения в заданном направлении
'' -----------------------------------------------------------------------------
Стоп:                    ' стоим на месте
Fr = 0
Br = 0
Bl = 0
Fl = 0
Return
Вперёд:                    ' едим вперёд
Fr = 1
Br = 0
Bl = 0
Fl = 1
Return
Вперёд_вправо:                    ' поварачиваем вправо
Fr = 0
Br = 0
Bl = 0
Fl = 1
Return
Вперёд_влево:                    ' поворачиваем влево
Fr = 1
Br = 0
Bl = 0
Fl = 0
Return
Назад:                    ' назад
Fr = 0
Br = 1
Bl = 1
Fl = 0
Return
Назад_вправо:                    ' поворачиваем назад-вправо
Fr = 0
Br = 1
Bl = 0
Fl = 0
Return
Назад_влево:                    ' поворачиваем назад-влево
Fr = 0
Br = 0
Bl = 1

скачать из архива-прога называется Test motor
 
бубубуДата: Вторник, 19.05.2009, 13:38 | Сообщение # 3








Зарегистрирован 02.04.2009
Группа: Новички
Сообщений: 3
Статус: Offline
Переделал под себя. но чёт тишина, стоит робот на месте и все, может ошибка где?
Code
$regfile = "m32def.dat"                    'èñïîëüçóåì Mega32
$crystal = 7372800                    '÷àñòîòà êâàðöåâîãî ðåçîíàòîðà 7,3mHz

Config Pina.0 = Output : Fr Alias Porta.0                   'PA 0 óñòàíàâëèâàåì íà âûõîä è ïðèñâàèâàåì èìÿ Fr(âïåð¸ä-âïðàâî);
Config Pina.1 = Output : Br Alias Porta.1                   'PA 1 óñòàíàâëèâàåì íà âûõîä è ïðèñâàèâàåì èìÿ Br(íàçàä-âïðàâî);
Config Pina.2 = Output : Bl Alias Porta.2                   'PA 2 óñòàíàâëèâàåì íà âûõîä è ïðèñâàèâàåì èìÿ Bl(íàçàä-âëåâî);
Config Pina.3 = Output : Fl Alias Porta.3                   'PA 3 óñòàíàâëèâàåì íà âûõîä è ïðèñâàèâàåì èìÿ Fl(âïåð¸ä-âëåâî).

Do                    ' Ãëàâíûé öèêë ïðîãðàìì
Gosub Ñòîï                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Ñòîï" è âîçâðàùàåìñÿ èç íå¸
Wait 10                    ' Çàäåðæêà â ñåêóíäàõ.  íàøåì ñëó÷àå ýòî 1 ñåêóíäà.
Gosub Âïåð¸ä                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïåð¸ä" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âïåð¸ä_âëåâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïåð¸ä_âëåâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âïåð¸ä_âïðàâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïåð¸ä_âïðàâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Íàçàä                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Íàçàä" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Íàçàä_âëåâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Íàçàä_âëåâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Íàçàä_âïðàâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Íàçàä_âïðàâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âïðàâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïðàâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âëåâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âëåâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Loop
'' -----------------------------------------------------------------------------
'' Âêëþ÷åíèå êîìáèíàöèè ìîòîðîâ äëÿ äâèæåíèÿ â çàäàííîì íàïðàâëåíèè
'' -----------------------------------------------------------------------------
Ñòîï:                    ' ñòîèì íà ìåñòå
Fr = 0
Br = 0
Bl = 0
Fl = 0
Return
Âïåð¸ä:                    ' åäèì âïåð¸ä
Fr = 1
Br = 0
Bl = 0
Fl = 1
Return
Âïåð¸ä_âïðàâî:                    ' ïîâàðà÷èâàåì âïðàâî
Fr = 0
Br = 0
Bl = 0
Fl = 1
Return
Âïåð¸ä_âëåâî:                    ' ïîâîðà÷èâàåì âëåâî
Fr = 1
Br = 0
Bl = 0
Fl = 0
Return
Íàçàä:                    ' íàçàä
Fr = 0
Br = 1
Bl = 1
Fl = 0
Return
Íàçàä_âïðàâî:                    ' ïîâîðà÷èâàåì íàçàä-âïðàâî
Fr = 0
Br = 1
Bl = 0
Fl = 0
Return
Íàçàä_âëåâî:                    ' ïîâîðà÷èâàåì íàçàä-âëåâî
Fr = 0
Br = 0
Bl = 1
Fl = 0
Return
Âïðàâî:                    ' ðàçâîðîò íà ìåòñå âïðàâî
Fr = 0
Br = 1
Bl = 0
Fl = 1
Return
Âëåâî:                    ' ðàçâîðîò íà ìåñòå âëåâî
Fr = 1
Br = 0
Bl = 1
Fl = 0
Return

End

Добавлено (19.05.2009, 13:38)
---------------------------------------------
какие фусибиты надо прошить ?

 
SpaceДата: Вторник, 19.05.2009, 22:25 | Сообщение # 4








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
помойму 32 мега с таким кварцем не будет работать(посмотри даташит). минимум надо ставить 16мГц, а в остальном всё верно
 
FireFlyДата: Среда, 20.05.2009, 20:18 | Сообщение # 5








Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
будет с таким кварцем работать

Robozone
 
SpaceДата: Четверг, 21.05.2009, 00:02 | Сообщение # 6








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
значит он не прошил сам мк, что вполне возможно. прога просто не может не работать. либо в схеме напортачил.
 
бубубуДата: Воскресенье, 07.06.2009, 22:04 | Сообщение # 7








Зарегистрирован 02.04.2009
Группа: Новички
Сообщений: 3
Статус: Offline
Не все прошивается, я после этой проги другую спокойно прошил и она заработала. Проблема в проге...

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

Code
$regfile = "m32def.dat"                    'èñïîëüçóåì Mega32
$crystal = 7372800                    '÷àñòîòà êâàðöåâîãî ðåçîíàòîðà 7,3mHz

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                    ' óêàçûâàåì ñêîðîñòü ðîáîòà

Do                    ' Ãëàâíûé öèêë ïðîãðàìì
Gosub Ñòîï                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Ñòîï" è âîçâðàùàåìñÿ èç íå¸
Wait 10                    ' Çàäåðæêà â ñåêóíäàõ.  íàøåì ñëó÷àå ýòî 1 ñåêóíäà.
Gosub Âïåð¸ä                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïåð¸ä" è âîçâðàùàåìñÿ èç í帠                 ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïåð¸ä_âïðàâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Íàçàä                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Íàçàä" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âïðàâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âïðàâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Gosub Âëåâî                    ' Ïåðåõîäèì â ïîäïðîãðàììó "Âëåâî" è âîçâðàùàåìñÿ èç íå¸
Wait 10
Loop
'' -----------------------------------------------------------------------------
'' Âêëþ÷åíèå êîìáèíàöèè ìîòîðîâ äëÿ äâèæåíèÿ â çàäàííîì íàïðàâëåíèè
'' -----------------------------------------------------------------------------
Ñòîï:                    ' ñòîèì íà ìåñòå
Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return
Âïåð¸ä:                    ' åäèì âïåð¸ä
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Íàçàä:                    ' íàçàä
Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Âïðàâî:                    ' ðàçâîðîò íà ìåòñå âïðàâî
Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Âëåâî:                    ' ðàçâîðîò íà ìåñòå âëåâî
Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

End

Где я ошибся?

Добавлено (07.06.2009, 22:04)
---------------------------------------------
Помогите, где ошибка то!!!

 
SpaceДата: Понедельник, 08.06.2009, 13:47 | Сообщение # 8








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
в программе ошибки нет!

Добавлено (08.06.2009, 13:47)
---------------------------------------------
вообще эта прога от минибота. я её тестил на своих схемах и все отлично работало

 
Форум » Программирование » Программирование на языке С, Бейсик и Асемблер » Программа, помогите
  • Страница 1 из 1
  • 1
Поиск: