Hallo,
Da ich das IOBoard Version 1.1 nutze, musste ich die Pin-Nummern für die LED-Outputs in der "FrameConfigs.h anpassen (Mav2HoTT Version 0.981):
Von Default:
#ifdef STANDARDLED
#ifndef BOARD_MICRO /* Output I/O pin array, choose your own preferred pins and sequence * (Jdrones IO standard) */
const uint8_t L1 = 10; /* Used for LED & Pattern*/
const uint8_t L2 = 9; /* Used for LED & Pattern*/
const uint8_t L3 = 8; /* Used for LED & Pattern*/
const uint8_t L4 = 4; /* Used for LED & Pattern*/
const uint8_t L5 = 3; /* Un-Used */
const uint8_t L6 = 2; /* Un-Used */
#endif
Nach IOBoard V1.1:
#ifdef STANDARDLED
#ifndef BOARD_MICRO /* Output I/O pin array, choose your own preferred pins and sequence * (Jdrones IO standard) */
const uint8_t L1 = 7; /* Used for LED & Pattern*/
const uint8_t L2 = 8; /* Used for LED & Pattern*/
const uint8_t L3 = 9; /* Used for LED & Pattern*/
const uint8_t L4 = 10; /* Used for LED & Pattern*/
const uint8_t L5 = 3; /* Un-Used */
const uint8_t L6 = 2; /* Un-Used */
#endif
Also entsprechend dieser Grafik:
Nun ist es allerdings so, dass nach dem Einschalten alle LEDs, beim booten des IOBoards angesprochen werden.
Wenn die Autoquad MCU gebootet hat, blinken allerdings 2 LED-Strips unterschiedlich.
Ein Strip blinkt genauso, wie in den LED Patterns in der "LEDs.ino" beschrieben.
Die MCU ist "Disarmed" ohne GPS-Signal. Es wird also diese Pattern angewendet:
{ 1,1,0,0,1,1,0,0,1,1 ,1,1,0,0,1,1,0,0,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0}, // 1 (Disarmed - no GPS fix)
Der andere Strip blinkt kontinuierlich und gleichmäßig, wie ein Heartbeat.
Warum blinkt hier nur ein Strip richtig und nicht 2 (z.B. die 2 vorderen) und der andere wie ein Heartbeat?
Wenn ich nun auf "Armed" schalte, blinkt der o.g. Strip wieder richtig wie in den Patterns angegeben:
{ 1,1,1,1,1,1,1,1,0,0 ,1,1,1,1,1,1,1,1,0,0 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0}, // 3 (Armed)
Aber auch hier wieder nur ein Strip, der Heartbeat Strip leuchet dauerhaft.
Geht die MCU in den "Flying" status über, verhält sich wieder der eine Strip richtig und leuchtet dauerhaft, der Heartbeat Strip blinkt dann
wie der richtig angesteuerte Strip im "Armed" Status. Die beiden Strips haben somit ihr Blinkverhalten gewechselt.
Schalte ich die FC im "Flying" Status aus, blinken alle 4 Strips wie verrückt. Hier scheint das richtig Pattern auf alle 4 Strips angewandt zu werden.
Ich habe bereits die Outputs in der "FrameConfigs.h" gewechselt und in der "LEDs.ino" die "signalingWriteLeds" Anweisungen getauscht.
Also "if (pgm_read_byte (&sig_pattern[statusId][(patNo)+ioCounter]))..." gegen "astDigitalWrite(L1,(pgm_read_byte (&sig_pattern[statusId][(patNo*1)+ioCounter]) ? HIGH : LOW));..."
Beides hat nicht geholfen. Weiterhin habe ich auch den UART der MCU verwendet, anstatt wie bisher den UART der DIMU.
Auch hier keine Besserung.
Soweit ich im Internet verschiedene Foren-Threads gelesen habe, handelt es sich immer um das IOBoard V1.0, ich habe ja nun die V1.1.
Hat sich hier nicht nur die PIN-Belegung geändert sondern auch das Ansprechverhalten für die LEDs?
Komme leider mit meinem Latein nicht weiter.
Kann mir dazu jemand weiterhelfen?
Gruß
Stizi