жаль что сервы КОЛОМ стоят ... Вот так ИМХО поприкольней будет ...
Согласен.
жаль что сервы КОЛОМ стоят ... Вот так ИМХО поприкольней будет ...
#include <avr/io.h>
#define OUT PORTC
#define servo PC1
#define delay_us
#define delay_ms
char servo_pulse = 150; // импульс среднее положение SERVO - (150 * 10) мкС
char servo_cw = 1;
// "1" servo крутится по часовой, если "0" то импульс убавляется - крутится против часовой
char t; // переменная - счетчик
int main(void){
DDRA = 0;
PORTA = 0;
DDRB = 0;
PORTB = 0;
DDRC = 255; // 8 LEDs
PORTC = 0;
DDRD = 0;
PORTD = 0;
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x03;
while(1){
// изменение направления движения SERVO
if (servo_pulse > 210) { // если импульс 2100 мкС
servo_cw = 0; // убавлять длину импульса
}
if (servo_pulse < 90) { // если импульс 900 мкС
servo_cw = 1; // прибавлять длину импульса
}
// изменение ширины импульса
if (servo_cw == 0) { // если нужно убавить
servo_pulse --; // убавить длину импульса на 10 мкС
}
if (servo_cw == 1) { // если нужно прибавить
servo_pulse ++; // увеличить длину импульса на 10 мкС
}
// вывод импульса на серву
t = servo_pulse;
char(t); // вывести длину импульса на серво в десятках микросекунд
PORTC |= _BV(PC1); // подать на серву лог. "1"
while (1) { // отсчет паузы
while (t--);
delay_us(10); // пауза 10 мкС
}
PORTC &= ~_BV(PC1); // подать на серву лог. "0"
//delay_ms(17); // пауза между импульсами на серву 17 милиСек
delay_ms(1); // пауза ДЛЯ УСКОРЕНИЯ симуляции 1 мС
}
}
servo.c:64: warning: statement with no effect
servo.c:69: warning: statement with no effect
delay_us(10);
delay_ms(1);
space писал(а):И вот что пишет при компиляции:
#define delay_us
#define delay_ms
while (1) { // отсчет паузы
while (t--);
delay_us(10); // пауза 10 мкС
}
while (t) { // отсчет паузы
t --;
delay_us(10); // пауза 10 мкС
}
ctr = 100;
while (ctr) {
ctr --;
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15