Четырех ногий робот
|
|
Space | Дата: Воскресенье, 06.04.2008, 22:24 | Сообщение # 46 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Что правдо всё работает? Так как надо? А видео будет(демонстрационное)? Поздравляю, если всё действительно работает
|
|
| |
Les | Дата: Воскресенье, 06.04.2008, 22:43 | Сообщение # 47 |
| Молодца! Так держать! А как добился та? Где ошибка была?
|
|
| |
AsonD | Дата: Воскресенье, 06.04.2008, 23:13 | Сообщение # 48 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| Первая ошибка, это неверные цифирки были, вторая ошибка - я такие значения вставлял, но перед сохранением каждый раз забывал компилировать проект, поэтому тогда у меня этого не удалось, а щас работаит) Тока вопрос следующий, как подконнект следующую серву так, чтобы все это дело работало одновременно и работало?
A.S.A.Robotics.com
|
|
| |
AsonD | Дата: Воскресенье, 06.04.2008, 23:20 | Сообщение # 49 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| Вот конечный вариант проги для одной сервы, для изменения угла поворота нужно менять значение задержки (delay_us), которое относитсо к PortC.?(ну порт С любой - 0, 1, 2 и т.д.? не суть) = 1; тоесть менять надо значение, которое тут являетсо 480 Code #include <mega16.h> #include <delay.h>
void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;
while (1) { PORTC.1 = 0; delay_us(20000); PORTC.1 = 1; delay_us(480); }; }
A.S.A.Robotics.com
|
|
| |
Space | Дата: Воскресенье, 06.04.2008, 23:45 | Сообщение # 50 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| По идеи они должны работать по очереди, если без датчиков, то есть так как указал ниже. Отработала 1 серва, начинает работать 2, а потом 3, а дальше заново. Вообщем похожа на маю прогу для проверки моторов Если не ошибаюсь, то так: Code #include <mega16.h> #include <delay.h>
void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;
while (1) { PORTC.1 = 0; delay_us(20000); PORTC.1 = 1; delay_us(480); }; { PORTC.2 = 0; delay_us(20000); PORTC.2 = 1; delay_us(480); }; { PORTC.3 = 0; delay_us(20000); PORTC.3 = 1; delay_us(480); }; }
|
|
| |
AsonD | Дата: Воскресенье, 06.04.2008, 23:47 | Сообщение # 51 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| А как сделать так чтобы одновременно?
A.S.A.Robotics.com
|
|
| |
Space | Дата: Понедельник, 07.04.2008, 07:50 | Сообщение # 52 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Попробуй так: Code #include <mega16.h> #include <delay.h>
void main(void) { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;
while (1) { PORTC.1 = 0; PORTC.2 = 0; delay_us(20000); PORTC.1 = 1; PORTC.2 = 1; delay_us(480); }; }
|
|
| |
AsonD | Дата: Понедельник, 07.04.2008, 15:51 | Сообщение # 53 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| Ну так и я мог сделать)) А как сделать так чтобы под разным углом все поворачивались?
A.S.A.Robotics.com
|
|
| |
Space | Дата: Понедельник, 07.04.2008, 19:56 | Сообщение # 54 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Тебе нужна была одновременная работа серв вот я тебе и показал как прога должна выглядить. А чтоб под разным углом это тебе с задержкой надо эксперементировать
|
|
| |
AsonD | Дата: Понедельник, 07.04.2008, 21:18 | Сообщение # 55 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| Нет, если делать так, то ничего не выйдет, по твоей версии порт С1 и С2 будут поворачивать на одинаковый угол, вне зависимости от того, какое значение мы введем в задержку
A.S.A.Robotics.com
Сообщение отредактировал AsonD - Понедельник, 07.04.2008, 21:21 |
|
| |
Space | Дата: Понедельник, 07.04.2008, 21:39 | Сообщение # 56 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Были бы у меня нормальные не переделанные сервы я б сейчас сам попробовал бы. Нет там полюбому с задержкой надо эксперементировать. А иначе как он у тебя поворачивает на определённый угол. Сам что ли команды с выше берёт
|
|
| |
AsonD | Дата: Понедельник, 07.04.2008, 22:39 | Сообщение # 57 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| я не о том, я про то, что сервы будут поворачивать одинаково, мне надо БЫЛО узнать как сделать так, чтобы они одновременно поворачивались, но на разные углы
A.S.A.Robotics.com
|
|
| |
AsonD | Дата: Понедельник, 07.04.2008, 23:16 | Сообщение # 58 |
Язык программированя: C, Pascal
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 259
Город: Череповец
Статус: Offline
| Но! Мне подсказали как это сделать!!! =)) смотрите: Code #include <mega16.h> #include <delay.h>
void main(void) { char i; PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;
i = 0; while(1) { PORTC.1 = 0; PORTC.0 = 0; delay_us(10000);
if (i == 0) { PORTC.1 = 1; delay_us(400); i = 1;} else { PORTC.0 = 1; delay_us(420); i = 0; }; } }
A.S.A.Robotics.com
|
|
| |
Space | Дата: Вторник, 08.04.2008, 07:27 | Сообщение # 59 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Ну и как работает?
|
|
| |
Doniak | Дата: Вторник, 08.04.2008, 14:16 | Сообщение # 60 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| фото робота самого незя показать? интересно
|
|
| |
|