Go Down

Topic: Nachtflugbeleuchtung für RC-Heli (Read 815 times) previous topic - next topic

4li3n

#45
Dec 19, 2014, 09:48 am Last Edit: Dec 19, 2014, 10:16 am by 4li3n
OK, ich habe jetzt einiges ausprobiert und nichts läuft.
Dürfte ich evtl. mal um die Auflösung bitten?

Das bekomme ich immer als Fehler:
sketch_dec19b.ino: In function 'void loop()':
sketch_dec19b:18: error: lvalue required as left operand of assignment
sketch_dec19b:20: error: expected ';' before 'leds_HOL'

Das ist mein Code:
Code: [Select]
#include <FastLED.h>
#define NUM_LEDS_HOL 34    //HOL steht für die LEDs am Heckrohr Oben Links
#define DATA_PIN_HOL 2      //Die LEDs HOL an PIN 2
#define previousMillis 0
#define interval 1000

CRGB leds_HOL[NUM_LEDS_HOL];

void setup()
{
       FastLED.addLeds<NEOPIXEL, DATA_PIN_HOL>(leds_HOL, NUM_LEDS_HOL);
     }

void loop()
{
        if (millis() - previousMillis > interval)
        {
        previousMillis = millis()
               
        leds_HOL[0] = CRGB::Blue; // Die erste LED an leds_HOL wird Blau
        FastLED.show();
       
        leds_HOL[0] = CRGB::Black; // Die erste LED an leds_HOL wird abgeschaltet
        FastLED.show();
        }
}


Ich habe nun das WIKI ein paar mal gelesen und kann auch eine LED mit Delay blinken lassen.
Ich kann auch eine andere LED in dem Streifen blinken lassen. Weiß auch wie man die Farbe ändert. Ich finde im WIKI z.B nicht die Info, wie ich LED [von bis] blinken lassen kann. Ich habe es so [0-10] und es hat nicht funktioniert.
Auch die beiden Beispiele (KLICK und KLICK]) "Blink without delay" habe ich mir angesehen aber leider noch nicht verstanden wie ich die Parameter in FAST-Led übernehme.
Frust kommt auf :-(

Gruss
Ingbert

Helmuth

#46
Dec 19, 2014, 11:31 am Last Edit: Dec 19, 2014, 11:32 am by Helmuth
Code: [Select]
    /* Blinken ohne "delay()"
     *
     * Schaltet eine LED, welche an einem digitalen Pin liegt ein- und aus
     * ohne die "delay()" Funktion zu verwenden. Das heisst anderer Code
     * kann zur gleichen Zeit ausgeführt werden ohne blockiert zu werden.
     *
     * http://playground.arduino.cc/Learning/BlinkWithoutDelay_de
     */

#include <FastLED.h>
#define NUM_LEDS_HOL 34    //HOL steht für die LEDs am Heckrohr Oben Links
#define DATA_PIN_HOL 2      //Die LEDs HOL an PIN 2
     
    //byte ledPin = 13;                  // LED liegt am (digitalen) Pin 13
    boolean value = LOW;                  // Startwert der LED
    unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
    unsigned long interval = 1000;    // Interval zwischen zwei Änderungen

CRGB leds_HOL[NUM_LEDS_HOL];

void setup()
{
       FastLED.addLeds<NEOPIXEL, DATA_PIN_HOL>(leds_HOL, NUM_LEDS_HOL);
     }
     
       
    void loop()
    {
      // Code der immer laufen soll kommt hier hin.
     
     /* es wird kontrolliert, ob die Zeit für das Blink-Intervall schon abgelaufen ist
      * Wenn die Zeitdifferenz zwischen dem Letzten Abspeichern und der aktuellen Zeit größer
      * als das Intervall ist, so wird die nachfolgende Funktion ausgeführt.
      */
      if (millis() - previousMillis > interval) {
        previousMillis = millis();   // aktuelle Zeit abspeichern
     
        // LED Zustand wecheln.
        value = !value;
     
        // Zustand auswerten
        if (value ==  false)
        {
          // action A
          leds_HOL[0] = CRGB::Black;
        }
        else
        {
          // action B
          leds_HOL[0] = CRGB::Blue;
        }
      }
      FastLED.show();
    }

4li3n

#47
Dec 19, 2014, 11:50 am Last Edit: Dec 19, 2014, 11:55 am by 4li3n
Ahhh, vielen Dank.

Ich habe das ganze nun noch ein wenig angepaßt und damit gespielt.
Aber wirklich verstehen tue ich den code noch nicht. Ich arbeite aber dran.

Code: [Select]
   /* Blinken ohne "delay()"
     *
     * Schaltet eine LED, welche an einem digitalen Pin liegt ein- und aus
     * ohne die "delay()" Funktion zu verwenden. Das heisst anderer Code
     * kann zur gleichen Zeit ausgeführt werden ohne blockiert zu werden.
     *
     * http://playground.arduino.cc/Learning/BlinkWithoutDelay_de
     */

#include <FastLED.h>
#define NUM_LEDS_HOL 34    //HOL steht für die LEDs am Heckrohr Oben Links
#define DATA_PIN_HOL 2      //Die LEDs HOL an PIN 2
#define BRIGHTNESS 10
#define TRON_BLUE 0x00FFFF
#
    
    //byte ledPin = 13;                  // LED liegt am (digitalen) Pin 13
    boolean value = LOW;                  // Startwert der LED
    unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
    unsigned long interval = 2000;    // Interval zwischen zwei Änderungen

CRGB leds_HOL[NUM_LEDS_HOL];

void setup()
{
       FastLED.addLeds<NEOPIXEL, DATA_PIN_HOL>(leds_HOL, NUM_LEDS_HOL);
       FastLED.setBrightness( BRIGHTNESS );
     }
    
      
    void loop()
    {
      // Code der immer laufen soll kommt hier hin.
    
     /* es wird kontrolliert, ob die Zeit für das Blink-Intervall schon abgelaufen ist
      * Wenn die Zeitdifferenz zwischen dem Letzten Abspeichern und der aktuellen Zeit größer
      * als das Intervall ist, so wird die nachfolgende Funktion ausgeführt.
      */
      if (millis() - previousMillis > interval) {
        previousMillis = millis();   // aktuelle Zeit abspeichern
    
        // LED Zustand wecheln.
        value = !value;
    
        // Zustand auswerten
        if (value ==  false)
        {
          // action A
          leds_HOL[0] = CRGB::Black;
          leds_HOL[1] = CRGB::Black;
          leds_HOL[2] = CRGB::Black;
        }
        else
        {
          // action B
          leds_HOL[0] = TRON_BLUE;
          leds_HOL[1] = TRON_BLUE;
          leds_HOL[2] = TRON_BLUE;
        }
      }
      FastLED.show();
    }

4li3n

Dieser Teil des Codes...

Code: [Select]
if (millis() - previousMillis > interval)
      {
        previousMillis = millis();   // aktuelle Zeit abspeichern
     
        // LED Zustand wecheln.
        value = !value;


...macht nichts weiter als im vordefinierten Interval den Wert "value" umzudrehen, oder?


Helmuth

#50
Dec 19, 2014, 02:39 pm Last Edit: Dec 19, 2014, 02:40 pm by Helmuth
Dran bleiben, das wird schon noch.

Anstelle  von
Code: [Select]

 // action A
          leds_HOL[0] = CRGB::Black;
          leds_HOL[1] = CRGB::Black;
          leds_HOL[2] = CRGB::Black;


bietet sich eine for-Schleife an:

Code: [Select]

 // action A
for (int i=0; i<3; i++) {
  leds_HOL[i] = 0;
}

Go Up