Имитация радиоуправления с помощью Arduino UNO
- Войдите на сайт для отправки комментариев
Имеется:
1.плата для управления квадрокоптером.
2. китайская 4-х канальная аппаратура радиоуправления.
http://www.hobbyking.com/hobbyking/store/__8338__Hobby_King_2_4Ghz_4Ch_Tx_Rx_V2_Mode_2_.html
3. arduino UNO.
Обычно коптер управляется с помощью аппаратуры. Задумал сделать упрвление через Wi-Fi через связку ардуины и ArduinoWirelessShield и подключить еще несколько примочек заодно. Ардкино решил подключить заместо приемника на китайскую плату и имитировать обычное радиоуправление не переписывая прошивки самой платы.
В этом собственно и проблема.
Подключил я приемник к ардуино и функцией pulsein() получил сигналы с каналов которые передаются от него на микроконтроллер платы.
int pin_in_1 = 8;
unsigned long in_1;
void setup()
{
Serial.begin(9600);
pinMode(pin_in_1, INPUT);
}
void loop()
{
in_1 = pulseIn(pin_in_1, INPUT);
Serial.println(in_1);
}
При выключеном передатчике возвращает 0, при включенном число в диапазоне 20000..20800, в зависимости от положения стика на передатчике. Насколько я понял, это время в микросекундах между сигналами HIGH и LOW поступающии с приемника.

Подключил ардуино к пинам для приемника на плате и попытался передать сигнал с такой же частотой, но ничего не получается.
int ledpin_1 = 6;
int ledpin_2 = 9;
int ledpin_3 = 10;
int ledpin_4 = 11;
void setup()
{
pinMode(ledpin_1,OUTPUT);
pinMode(ledpin_2,OUTPUT);
pinMode(ledpin_3,OUTPUT);
pinMode(ledpin_4,OUTPUT);
Serial.begin(9600);
}
void loop()
{
pulseOut(ledpin_1,20427);
pulseOut(ledpin_2,20427);
pulseOut(ledpin_3,20427);
if (Serial.available() > 0) {
for (int i=0; i <= 255; i++){
//incomingByte = Serial.read();
pulseOut(ledpin_4,20000);
Serial.println(20000);}}
{pulseOut(ledpin_4,20427);
Serial.println(20427);}
}
void pulseOut(int pin, int val)
{
digitalWrite(pin,HIGH);
delayMicroseconds(val);
digitalWrite(pin,LOW);
}
Подскажите можно ли вообще исполнить эту идею и что я делаю не правильно.
Воспользоваться библиотекой Servo, RC-приемники как раз и генерят на своих выходах ШИМ-сигнал для управления сервами.
maksim
Спасибо. Все заработало.
Можно посмотреть исходник кода?А то у меня такая же проблема возникла