Multiwii 2.2 LED Beleuchtung steuern?

#62
...dur darfst bei einem FET den GATE Anschluss nicht frei lassen. Verbinde den mal mit dem Minus vom Akku (am Balancer oder irgendeinem anderen Stecker), dann sollten die LEDs ausgehen.
 
#64
...dann geht doch alles, wenn die danach wieder angehen wenn du den PIN auf 5V legst (oder auf den Plus vom Akku, der BUZ hält das aus).
Die Flightcontrol macht nichts anderes. Sie legt diesen Anschluss entweder auf 5V (LEDs gehen an) oder sie zieht den Pin auf Ground/Minus (die LEDs gehen aus).
 

Trawar

Erfahrener Benutzer
#65
Wenn ich mit GAte an Minus des Lipos gehe, gehen die LED´s aus, wenn ich mit Gate an die plus Leitung des Lipos gehe dann Strahlen die LED´s.
Also muss ich das ding an das Board anklemmen und dann sollte das Funktionieren?
Aber der LIpo der die LED´S versorgt hat keine Masse verbindung zum Board, ist das egal?
 
#66
nein, das wird nicht funktionieren. Da musst du irgendwo die beiden Massen der Lipos verbinden. Wenn du das nicht machen willst bräuchtest du zusätzlich einen Optokoppler.
 

Trawar

Erfahrener Benutzer
#67
Wuhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Es geht ich glaube es nicht es geht.
Danke Googol Danke Danke Danke.
 

Trawar

Erfahrener Benutzer
#69
Jetzt müssen wir das nur noch mit der Sketch erweiterung hin kriegen.
 

Trawar

Erfahrener Benutzer
#71
Man ja hat in der multiwii 2.3 nur led max und min.
Frage war ob man nicht einfach led mid usw. Hinzufügen kann. Verschiedene blink muster fur angle horizon acro rth pos hold mission usw.
 
#72
Prinzipiell möglich, ich glaube etwas ähnliches hatte ich bei meinem damals auch integriert. Es ist aber nicht mit ein paar Konfigurationen in der config.ha abgetan.
Du müsstest z.B. in der Alarms.cpp aus diesem

Code:
void led_flasher_autoselect_sequence() {
    if (led_flasher_control != LED_FLASHER_AUTO) return;

    #if defined(LED_FLASHER_SEQUENCE_MAX)
    /* do we want the complete illumination no questions asked? */
    if (rcOptions[BOXLEDMAX]) {
      led_flasher_set_sequence(LED_FLASHER_SEQUENCE_MAX);
      return;
    }
    #endif
folgendes machen:

Code:
  void led_flasher_autoselect_sequence() {
    if (led_flasher_control != LED_FLASHER_AUTO) return;

   [B] #if defined(LED_FLASHER_SEQUENCE_HORIZON)
    if (rcOptions[BOXHORIZON]) {
      led_flasher_set_sequence(LED_FLASHER_SEQUENCE_HORIZON);
      return;
    }
    #endif[/B]

    #if defined(LED_FLASHER_SEQUENCE_MAX)
    /* do we want the complete illumination no questions asked? */
    if (rcOptions[BOXLEDMAX]) {
      led_flasher_set_sequence(LED_FLASHER_SEQUENCE_MAX);
      return;
    }
    #endif
Hierfür muss natürlich auch in der config.h eine zuätzliche Zeile rein:
Code:
/********************************    LED FLASHER    ***********************************/
    #define LED_FLASHER
    #define LED_FLASHER_DDR DDRB
    #define LED_FLASHER_PORT PORTB
    #define LED_FLASHER_BIT PORTB4
    //#define LED_FLASHER_INVERT
    #define LED_FLASHER_SEQUENCE        0b00000000      // leds OFF
    #define LED_FLASHER_SEQUENCE_ARMED  0b00000101      // create double flashes
    #define LED_FLASHER_SEQUENCE_MAX    0b11111111      // full illumination
    #define LED_FLASHER_SEQUENCE_LOW    0b00000000      // no illumination
  [B]  #define LED_FLASHER_SEQUENCE_HORIZON  0b10100010      //crazy blinking[/B]
Beachten muss man auch, dass dieses Blinkmuster nur dann aktiv ist wenn weder ...SEQUENCE_MAX noch ...SEQUENCE_LOW bzw. ...SEQUENCE_ARM aktiv ist, da es in der Alarms.cpp als erster kommt und von den anderen überschrieben wird.
Wenn du in meinem Beitrag über die LEDs schaust, da habe ich erst heute einen Sketch auf Basis der v2_2 hochgeladen, der noch das Gas beim Blinkmuster mit einbezieht. Ich habe auch noch einen, der den Trainer Mode auswertet und andere Schweinereien macht.
 

Liriel

Erfahrener Benutzer
#74
das klingt doch schonmal gut ^^

das aus der config kann man problemlos in die filename.h auslagern.
der rest muss wohl immer per hand eingefügt werden.

kannst du mal die funktion horizon erklären?
 

Trawar

Erfahrener Benutzer
#75
Horizon ist quasi Acro mode mit Selflevel oder eine Mischung aus Anglemode und Acromode.
Der Copter levelt sich beim loslassen der Sticks selber aber trotzdem sind Flips möglich,
da es keine Winkelbegrenzung wie beim Anglemode gibt.
 

Trawar

Erfahrener Benutzer
#77
So da bin ich wieder, das ganze hat mir keine ruhe gelassen und ich habe einwenig rumgespielt.
Dank des Test Sketches von Yordan(Vielen Dank dafür) und der Erklärung von Googol(Vielen Dank auch hierfür) habe ich was zusammen gebaut das sich sogar kompilieren und uploaden lässt :)
In der GUI werden auch alle Checkboxen wie gewünscht angezeigt, zum testen ob es auch wirklich funktioniert bin ich noch nicht gekommen, da ich anscheinend zwischen durch wie auch immer das Mosfet abgeschossen haben muss. Wenn ich mit Gate an Masse gehe strahlen die LED´S und bei Plus gehen die aus, sollte wie wir gelernt haben umgekehrt sein, wie auch immer weiter im Text.


Was ich gemacht habe:

Im Reiter Alarm.cpp wurde folgendes ergänzt

#if defined(LED_FLASHER_SEQUENCE_1)
/* do we want the complete illumination no questions asked? */
if (rcOptions[BOXLED1]) {
led_flasher_set_sequence(LED_FLASHER_SEQUENCE_1);
return;
}
#endif


der gleiche Block nochmal dann aber mit Sequence_2..3...4 usw.

Im Reiter Multiwii.cpp wurde folgendes ergänzt

#if defined(LED_FLASHER)
"LED1;"
"LED2;"
"LED3;"
"LED4;"


EDIT: Hier müssen weiter unten noch die ID´s vergeben werden.

20 "LED1;"
21 "LED2;"
22 "LED3;"
23 "LED4;"


Im Reiter Protocoll.cpp wurde folgendes ergänzt

#if defined(LED_FLASHER)
if(rcOptions[BOXLED1]) tmp |= 1<<BOXLED1;
if(rcOptions[BOXLED2]) tmp |= 1<<BOXLED2;
if(rcOptions[BOXLED3]) tmp |= 1<<BOXLED3;
if(rcOptions[BOXLED4]) tmp |= 1<<BOXLED4;



Im Reiter Config.h wurde folgendes ergänzt

/******************************** LED FLASHER ***********************************/
#define LED_FLASHER
#define LED_FLASHER_DDR DDRB
#define LED_FLASHER_PORT PORTB
#define LED_FLASHER_BIT PORTB4
//#define LED_FLASHER_INVERT
#define LED_FLASHER_SEQUENCE 0b00000000 // leds OFF
#define LED_FLASHER_SEQUENCE_ARMED 0b00000101 // create double flashes
#define LED_FLASHER_SEQUENCE_1 0b00000000 // leds OFF
#define LED_FLASHER_SEQUENCE_2 0b00000000 // leds OFF
#define LED_FLASHER_SEQUENCE_3 0b00000000 // leds OFF
#define LED_FLASHER_SEQUENCE_4 0b00000000 // leds OFF



Im Reiter Types.h wurde folgendes ergänzt

#if defined(LED_FLASHER)
BOXLED1, // some lights
BOXLED2, // some lights
BOXLED3, // some lights
BOXLED4, // some lights


Morgen werde ich mir ein neues Mosfet holen und hoffe dann das es auch klappt.

ACHTUNG, es ist das erste mal das ich mit so etwas zu tun habe, falls jemand das ausprobieren möchte und himmelt dabei irgendwelche Bauteile dann bin ich es nicht schuld.
Um weitere Hilfestellung wird natürlich gebeten.

So far Trawar...

EDIT: So liebe Leute, vielen dank dafür das ihr so eine geduld mit mir hattet und die ruhe bewahren konntet.
Mittlerweile habe ich das Sketch soweit ergänzen können, ich habe "LEDMAX" und "LOW" umbenannt und habe zusätzlich noch zwei weitere sequenzen hinzugefügt und diese funktionieren sogar. Seht euch den Anhang an.
Jetzt muss das ganze noch in der Luft getestet werden ob der rest auch funktioniert.

Vielen Dank nochmal

Trawar
 

Anhänge

Zuletzt bearbeitet:

Yordan

Erfahrener Benutzer
#79
Freut mich, dass es funktioniert! Werden denn bei dir alle aktiven Zeilen hervorgehoben? Bei mir ja die letzte (in meinem Fall war das LEDMIN) nicht.
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten