NEOpix-WanderPunkte.ino


Bastelseite Display + Antriebe Sensoren C++


Neopixel

... und hier die Beschreibung und den Sketch dazu:

Demo 02
Teil 1 vom Sketch

Vor dem 1. Teil liegt die Initialisierung der Bibliotheken, Definition der Anschlusses am Arduino und der Anzahl der LEDs als Festlegung.

Der erste Teil zeigt wie ein einzelner Lichtpunkt von Anfang bis Ende das ganze Band durchläuft. Diese Bewegung wird durch das Ein- und Ausschalten und die Weitergabe des Befehls der einzelnen LEDs erstellt.

Die Funktion "vabe" (Von Anfang Bis Ende) wird nur über  vabe(Rot, Grün, Blau);  aufgerufen. Für die einzelnen Farbwerte nimmt man die RGB-Werte von 0 bis 255. Die Anzahl der LEDs ist in der Variablen "AnzahlNEO" hinterlegt.


Teil 2 vom Sketch

Hier wird alles umgekehrt: statt "vabe" gibt es "veba" (Von Ende Bis Anfang). Der Aufruf ist wiederum gleich mit den Farbangaben: über  veba(Rot, Grün, Blau);  

Dadurch ensteht die Illusion wie ein einzelner Lichtpunkt von Ende bis Anfang des Bandes dieses durchläuft. Auch diese Bewegung wird durch das Ein- und Ausschalten und die Weitergabe des Befehls der einzelnen LEDs erstellt.


Teil 3 vom Sketch

In diesem Teil geht es darum von beiden Enden des Bandes zwei Lichtpunkte aufeinander zulaufen zu lassen, die wiederum zum Startpunkt des anderen wandern. Der Aufruf erfolg über   zusammen(Rot, Grün, Blau);  . Die entsprechenden RGB-Werte sind zu verwenden.


Sketch NEOpix-WanderPunkt.ino


Hier der Sketch mit den 3 Teilen:



// NEOPIXEL als  NEOpix-WanderPunkt.ino
// FREE from 21.03.2021 Helmut Brixel 

#include 
#ifdef __AVR__
#include  // Required for 16 MHz Adafruit Trinket
#endif

// AnschlussPin am Arduino - Widerstand 470 Ohm - DataIN-Neopixel
#define PIN        8 // Welcher AnschlussPin am Arduino

// Wieviele NeoPixels soll der Arduino ansteuern?
#define AnzahlNEO 47 // Anzahl der NeoPixel

Adafruit_NeoPixel pixels(AnzahlNEO, PIN, NEO_GRB + NEO_KHZ800);

// Zeit (in Millisekunden) als Dauer zwischen den Pixels
#define VerweilZeit 15 // Geschwindigkeit der Pixel 

void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif

  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels.clear(); // Set all pixel colors to 'off'
}

void loop() {
  vabe(255, 0, 0); // ROT
  vabe(0, 255, 0); // GRÜN
  vabe(0, 0, 255); // BLAU
  vabe(255, 255, 0); // GELB  ( Rot + Grün )
  vabe(0, 255, 255); // CYAN   ( Grün + Blau )
  vabe(255, 0, 255); // MAGENTA  ( Rot + Blau )
  delay(1000);
  
  veba(255, 0, 0); // ROT
  veba(0, 255, 0); // GRÜN
  veba(0, 0, 255); // BLAU
  veba(255, 255, 0); // GELB  ( Rot + Grün )
  veba(0, 255, 255); // CYAN   ( Grün + Blau )
  veba(255, 0, 255); // MAGENTA  ( Rot + Blau )
  delay(1000);

  zusammen(255, 0, 0); // ROT
  zusammen(0, 255, 0); // GRÜN
  zusammen(0, 0, 255); // BLAU
  zusammen(255, 255, 0); // GELB  ( Rot + Grün )
  zusammen(0, 255, 255); // CYAN   ( Grün + Blau )
  zusammen(255, 0, 255); // MAGENTA  ( Rot + Blau )
  delay(1000);
  
} // Ende von loop ---------------------

// von Anfang bis Ende = vabe

void vabe (int FarbeR, int FarbeG, int FarbeB) {
  for (int i = 0; i < AnzahlNEO; i++) {
    pixels.setPixelColor(i, pixels.Color(FarbeR, FarbeG, FarbeB));
    pixels.show();
    delay(VerweilZeit);
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();
    delay(VerweilZeit);
  }
}  // Ende void "vabe"

// von Ende bis Anfang = veba

void veba (int FarbeR, int FarbeG, int FarbeB) {
  for (int i = 0; i < AnzahlNEO; i++) {
    pixels.setPixelColor(AnzahlNEO - i, pixels.Color(FarbeR, FarbeG, FarbeB));
    pixels.show();
    delay(VerweilZeit);
    pixels.setPixelColor(AnzahlNEO - i, pixels.Color(0, 0, 0));
    pixels.show();
    delay(VerweilZeit);
  }
  pixels.setPixelColor(0, pixels.Color(0, 0, 0));
  pixels.show();
}  // Ende void "vena"

// zusammen

void zusammen (int FarbeR, int FarbeG, int FarbeB) {
  for (int i = 0; i < AnzahlNEO; i++) {
    pixels.setPixelColor(i, pixels.Color(FarbeR, FarbeG, FarbeB));
    pixels.setPixelColor(AnzahlNEO - i, pixels.Color(FarbeR, FarbeG, FarbeB));
    pixels.show();
    delay(VerweilZeit);
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.setPixelColor(AnzahlNEO - i, pixels.Color(0, 0, 0));
    pixels.show();
    delay(VerweilZeit);
  }
}  // Ende void "zusammen"



Übersicht Seiten Anfang


brixelweb.de