#1 2015-11-06 12:43:23

Karavay
Учасник
Зареєстрований: 2015-11-04
Повідомлень: 0

Пульт ДУ для самолета (Летающее крыло)

Всем день добрый. Мучался около недели, потом психанул и все удалил. Но детали куплены и все равно муляет меня. Пожалуйста помогите. Использую Ардуину Нано, 2 сервы и джойстик. По поводу передачи сигнала по радиосигналу я разобрался. Но вот написать скетч чтоб при оттягивании влево-вправо джойстика у меня сервы двигались в разные стороны, а при вверх-вниз в одну сторону, ну никак не получается... Прилагаю фоты как это должно быть. Помогите....Dvizhenie-servov_4.jpgDvizhenie-servov_3.jpgDvizhenie-servov_2.jpgDvizhenie-servov_1.jpg

Неактивний

#2 2015-12-29 17:14:20

maslyukov
Учасник
Зареєстрований: 2015-12-29
Повідомлень: 5

Re: Пульт ДУ для самолета (Летающее крыло)

Вот пример, того как можно это сделать. Частично на псевдокоде.

int middleX = 0;
int middleY = 0;

int getXAdc() {
    // получить значение АЦП оси X
    return adc;
}

int getYAdc() {
    // получить значение АЦП оси Y
    return adc;
}

void rotateServo1(int angle) {
    //вращение сервопривода
}
void rotateServo2(int angle) {
    //вращение сервопривода
}

int convertAdc2SAngle(int adc) {
    return adc*coef;
}

void init() {
    middleY = getYAdc();
    middleX = getXAdc();
}

void rotateAxises(int adcX, int adcY) {
    int angleS1 = convertAdc2SAngle(adcX);
    int angleS2 = convertAdc2SAngle(adcY);

    // находим наибольшее значимое отклонение X или Y
    if (abs(adcX) > abs(adcY)) {
        rotateServo1(angleS1);
        rotateServo2(-angleS2);
    } else {
        rotateServo1(angleS1);
        rotateServo2(angleS2);
    }
}


void main() {
    init();
    while(1) {
        int currentX = getXAdc() - middleX;
        int currentY = getYAdc() - middleY;
    }
}

Приложи свой вариант, чтоб чтоб оценить где может быть ошибка

Неактивний

#3 2015-12-30 17:41:51

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Пульт ДУ для самолета (Летающее крыло)

сделайте зависимость положения сервы от положения джойстика через функцию map для каждой сервы и для каждого типа отклонений

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму