사용하는 RC 송신기는 FS-i6, RC 수신기는 FS-A8S이다.
flysky의 rx protocol인 ibus에 대한 정보를 찾다가
아두이노 라이브러리가 있길래 한 번 써봤다.
https://github.com/bmellink/IBusBM
이 라이브러리에서 ibus uart rx를 serial0 rx로 고정해놨는데
이게 업로드에 쓰는 유아트 핀이라
업로드할 때는 수신기 ibus 핀을 빼놔야 한다.
송신기가 꺼져있을 때는 0값을 유지한다.
예제보고 쓴 테스트 코드
#include <IBusBM.h>
IBusBM IBus; // IBus object
void setup() {
IBus.begin(Serial); // iBUS object connected to serial0 RX pin
}
void loop() {
int val1, val2, val3, val4;
val1 = IBus.readChannel(0); // get latest value for servo channel 1
val2 = IBus.readChannel(1);
val3 = IBus.readChannel(2);
val4 = IBus.readChannel(3);
Serial.print("channel 1 : ");
Serial.print(val1);
Serial.print(", ");
Serial.print("channel 2 : ");
Serial.print(val2);
Serial.print(", ");
Serial.print("channel 3 : ");
Serial.print(val3);
Serial.print(", ");
Serial.print("channel 4 : ");
Serial.println(val4);
delay(50);
}
문제 없이 잘 받아온다.