Программа, помогите
|
|
бубубу | Дата: Воскресенье, 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) --------------------------------------------- вообще эта прога от минибота. я её тестил на своих схемах и все отлично работало
|
|
| |