uint8_t count,timeout,INBYTE[30];
uint16_t Ch[16];
void setup() {
PORTB.PIN3CTRL |= PORT_INVEN_bm; // Rx Eingangsignale invertieren
USART0.BAUD =800; // 100.000bps SBUS für 20MHz
USART0.CTRLA |= USART_RXCIE_bm; // RX ISR ON
USART0.CTRLB |= USART_RXEN_bm; // RX aktivieren
}
void loop() {
delay(1);
timeout++;
if(timeout>4){ count=0;
for (uint8_t BBit=0, CBit=0, i=0; i<176; i++, BBit++, CBit++) {
if(INBYTE[i/8+1] & _BV(BBit)) Ch[i/11+1] |= _BV(CBit); else Ch[i/11+1] &= ~_BV(CBit);
if(BBit > 6) BBit=255;
if(CBit > 9) CBit=255;
}
} }
ISR(USART0_RXC_vect){
INBYTE[count] = USART0.RXDATAL;
timeout=0;
count++;
}
#include <Servo_megaTinyCore.h>
Servo SERVO_1;Servo SERVO_2;Servo SERVO_3;Servo SERVO_4;Servo SERVO_5;
uint8_t count,timeout,INBYTE[30];
uint16_t Ch[16];
void setup() { Serial1.begin(115200); // Serialdebug nur beim Attiny 1624/3224 (mind. 2xUSART)
PORTB.PIN3CTRL |= PORT_INVEN_bm; // Rx Eingangsignale invertieren
USART0.BAUD =800; // 100.000bps SBUS für 20MHz
USART0.CTRLA |= USART_RXCIE_bm; // RX ISR ON
USART0.CTRLB |= USART_RXEN_bm; // RX aktivieren
SERVO_1.attach(0);SERVO_2.attach(1);SERVO_3.attach(2);SERVO_4.attach(3);SERVO_5.attach(6);
}
void loop() {
delay(1);
timeout++;
if(timeout>4){ count=0;
for (uint8_t BBit=0, CBit=0, i=0; i<176; i++, BBit++, CBit++) {
if(INBYTE[i/8+1] & _BV(BBit)) Ch[i/11+1] |= _BV(CBit); else Ch[i/11+1] &= ~_BV(CBit);
if(BBit > 6) BBit=255;
if(CBit > 9) CBit=255;
}
SERVO_1.writeMicroseconds((Ch[1]>>1)+1000);
SERVO_2.writeMicroseconds((Ch[2]>>1)+1000);
SERVO_3.writeMicroseconds((Ch[3]>>1)+1000);
SERVO_4.writeMicroseconds((Ch[4]>>1)+1000);
SERVO_5.writeMicroseconds((Ch[5]>>1)+1000);
Serialdebug();
} }
ISR(USART0_RXC_vect){
INBYTE[count] = USART0.RXDATAL;
timeout=0; count++;
}
//Nur beim Attiny 1624/3224 (mind. 2xUSART)
void Serialdebug(){ //nur At1624
for (uint8_t i=1; i<5; i++) {
Serial1.print((Ch[i]>>1)+1000);
Serial1.print("\t");}
Serial1.println();
}
Wenn man ihn im Betrieb an der Unterseite berührt hat ein kurz ein Schluckauf.
Hallo,
ich nutze den Switch in einem Auto mit der Radiomaster TX16s mit MPM, konnte bis dato aber kein Problem feststellen.
Danke nochmal für das Tolle Projekt.
Dennoch würde ich die neue Version bei Gelegenheit mal ausprobieren.
Wenn ich noch einen Wunsch äußern dürfte wäre ein Ausgang mit einer Blitzsequenz (50ms Länge; 3 Pakete hintereinander) versehen zu können.
So könnte man ACLs via SBus anschließen wenn schon alle Steuerkanäle belegt sind.
Gruß
Onki