Форум myROBOT.ru » Роботы и робототехника » Делимся опытом » Помогите с сервоприводом.

Страниц (2): [1] 2 »
 

1. happyend - 11 Августа, 2013 - 15:28:45 - перейти к сообщению
наконец пришли сервы ,но не знаю как им управлять на Atmega8.Весь инет перерыл ,все как-то не понятно.Может кто-нибудь пошагово объяснить,Пример кода простого.И сколько можно всего их подключать ?Пользуюсь AlgorithmBuilder и Programmers Notepad [WinAVR].Спасибо.
2. Петр Киселев - 11 Августа, 2013 - 16:01:37 - перейти к сообщению
happyend, посмотри по этой ссылке:

http://dvrobot.ru/ardu_servo_potenc

Разберись!
3. happyend - 11 Августа, 2013 - 16:20:33 - перейти к сообщению
Петр Киселев Код с этой статьи у меня не работает .не создается hex файл=\
4. Петр Киселев - 11 Августа, 2013 - 17:10:06 - перейти к сообщению
Попробуйте сделать следующее:
1. В гугле или яндексе наберите DV ROBOT.
2. Войдите на этот сайт.
3. Войдите там на форум и зарегистрируйтесь.
4. Задайте свой вопрос.

Можно чуть иначе:
На сайте DV ROBOT в разделе Микроконтроллеры находите Драйвер 2А и кликаете по нему.
Там находите скетчи от Максима Грач. На второй странице есть скетч по работе с сервой.
Успеха!
(Добавление)
А вообще-то по ссылке удалось до статьи Максима Грач добраться?
(Добавление)
И еще. Я не спросил, какой МК вы используете? Может быть вам Ардуино и не подойдет.
5. happyend - 11 Августа, 2013 - 17:26:44 - перейти к сообщению
Да до статьи добрался.Ардуино нет. использую atmega8
6. Петр Киселев - 11 Августа, 2013 - 19:35:09 - перейти к сообщению
Ардуино организовано на АТмегах. Разберись со скетчами и вперед!
7. happyend - 11 Августа, 2013 - 19:51:32 - перейти к сообщению
вот только их коды мне не подходят.
8. killgur - 12 Августа, 2013 - 10:39:12 - перейти к сообщению
happyend пишет:
вот только их коды мне не подходят.



http://www.avislab.com/blog/serva/

написано на WINAVR для atmega8
9. Петр Киселев - 12 Августа, 2013 - 13:42:30 - перейти к сообщению
happyend, не забудь killgurу "Спасибо" сказать!
И я благодарю! За напоминание. Скачал уже давно, но у меня АТмеги8 в кроватках и я успешно об этой статье забыл. Да и зациклился сейчас на Ардуино.
10. happyend - 12 Августа, 2013 - 21:40:05 - перейти к сообщению
да вам спасибо всем ,эту статью я видел,прошивал,но серва почему-то крутиться всегда в одну сторону..
11. happyend - 26 Октября, 2013 - 18:04:41 - перейти к сообщению
Всем привет.Помогите с кодом разобраться. Как сделать ,что бы светодиод несколько раз моргал,и каждое моргание было тускнее, пока совсем не погаснет.

CODE:



#include <avr/interrupt.h>
#include <avr/io.h>

volatile char pwm_counter,pwm_r,pwm_g,pwm_b;

/*** прерывание по переполнению Т0 ***/
ISR (TIMER0_OVF_vect)
{
if (pwm_counter++ > 63)
{
PORTB = 0x00;
pwm_counter = 0;
}
if (pwm_counter > pwm_r)
PORTB |= (1 << PB1);
if (pwm_counter > pwm_g)
PORTB |= (1 << PB2);
if (pwm_counter > pwm_b)
PORTB |= (1 << PB3);
}

/*** процедура задержки в микросекундах ***/
void delay_us(unsigned char time_us)
{ register unsigned char i;

for(i = 0; i < time_us; i++) // 4 цикла
{ asm (" PUSH R0 "); // 2 цикла
asm (" POP R0 "); // 2 цикла
// 8 циклов = 1 us для 8MHz
}
}
/*** процедура задержки в миллисекундах ***/
void delay_ms(unsigned int time_ms)
{ register unsigned int i;

for(i = 0; i < time_ms; i++)
{ delay_us(25);
delay_us(25);
delay_us(25);
delay_us(25);

}
}
/*** красный цвет ***/
void red (unsigned int time)
{
for (char a = 0; a<165; a++)
{
pwm_r = 164 - a; //увеличение
pwm_g = 164;
pwm_b = 164;
delay_ms(time);
}
for (char a = 0; a<165; a++)
{
pwm_r = a; //уменьшение
pwm_g = 164;
pwm_b = 164;
delay_ms(time);
}
}



/*** красный цвет 2***/
void red2 (unsigned int time)
{
for (char a = 0; a<165; a++)
{
pwm_g = 164 - a; //увеличение
pwm_r = 164;
pwm_b = 164;
delay_ms(time);
}
for (char a = 0; a<165; a++)
{
pwm_g = a; //уменьшение
pwm_r = 164;
pwm_b = 164;
delay_ms(time);
}
}



int main (void)
{
DDRB = (1 << PB3)|(1 << PB2)|(1 << PB1);
// PB3,2,1 - выходы
TIMSK |= (1 << TOIE0);
// разрешение прерывания
TCCR0 |= (0 << CS02)|(0 << CS01)|(1 << CS00);
// без предделителя
sei();// глобальное разрешение прерываний

while(1)
{
red(5);
red2(5);



}
}

12. cjA - 03 Ноября, 2013 - 22:16:57 - перейти к сообщению
happyend так а что за изначальная частота? мега8 может от 1 до 16, а мегах8 до 24 (проверено, на понижено\повышенном питании).
Смотри как делоаю я- (ну я не хвастался, да)- каждую строчку коментируй по руски. Ведь забудешь через месяц, на себе проверенно Улыбка))
(Добавление)
заодно скажите как будет оперпатор XOR in C -^= ?
(Добавление)
Пани которые разбираются в микроконтроллерах-
/*** процедура задержки в микросекундах ***/
В тактах может кто умеет писать?
(Добавление)
Не пани, а парни, айм сори
(Добавление)
happyend вот так и рождается мегафлуд, ты уж извини
13. happyend - 04 Ноября, 2013 - 16:45:51 - перейти к сообщению
cjA Код не мой.Вот пытаюсь разобраться)
14. Петр Киселев - 04 Ноября, 2013 - 16:58:24 - перейти к сообщению
cjA, ты пишешь:
cjA пишет:
Пани которые разбираются в микроконтроллерах-
/*** процедура задержки в микросекундах ***/


А может, все-таки в коде правильно было?
happyend пишет:
/*** процедура задержки в миллисекундах ***/


Следует указывать где правильно, а где - нет!
15. cjA - 09 Ноября, 2013 - 20:16:14 - перейти к сообщению
Петр Киселев пишет:
А может, все-таки в коде правильно было?
А кто спорит? Что показывют прочитаные фьюзы. Какая частота ? Это к тебе, happyend
(Добавление)
Ты новый МК покупал? Может и нет. Тут приводились факты. Кусок пластика и металические лапки, на брюхе фирма какая-то, внутри- пластилин
(Добавление)
happyend, мне нужно сделать шим моторов на тележку к весне, так вот выдам секрет- как это делать аппаратно я не понял, как люди музыку слушают- ваще не верю, я буду делать программно (наверное в каком то из таймерных прерываний, но может и в основном цикле
happyend пишет:
for (char a = 0; a<165; a++)
{
pwm_r = 164 - a; //увеличение
pwm_g = 164;
). говорит о том что прога заточена под определенную частотуту