Go Down

Topic: Projekt mit meheren WS2812B Streifen (Read 1 time) previous topic - next topic

Whandall

#30
Jun 18, 2019, 10:26 pm Last Edit: Jun 18, 2019, 10:29 pm by Whandall
Die hart kodierte 9, die Indizierung und weniger Übersichtlichkeit.

Na ja, und auch die Reihenfolge von begin und setBrightness.

Aber beide sind natürlich viel besser als dein anfängliches

Code: [Select]
void setup() {

strip_1.setBrightness(BRIGHTNESS);
strip_2.setBrightness(BRIGHTNESS);
strip_3.setBrightness(BRIGHTNESS);
strip_4.setBrightness(BRIGHTNESS);
strip_5.setBrightness(BRIGHTNESS);
strip_6.setBrightness(BRIGHTNESS);
strip_7.setBrightness(BRIGHTNESS);
strip_8.setBrightness(BRIGHTNESS);
  strip_1.begin();
  strip_2.begin();
  strip_3.begin();
  strip_4.begin();
  strip_5.begin();
  strip_6.begin();
  strip_7.begin();
  strip_8.begin();
  strip_1.show(); // Initialize all pixels to 'off'
  strip_2.show();
  strip_3.show();
  strip_4.show();
  strip_5.show();
  strip_6.show();
  strip_7.show();
  strip_8.show();
}
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Kadara

Die hart kodierte 9
Man helfe mir das Brett vorm Kopf zu entfernen.
Ich seh sie nicht.
Wenn das jetzt einen Stripe definieren würde.
Aber 8?
Und die Reihenfolge stammt auch noch aus dem Adafruit Demosketch.
Funktioniert aber so auch.

postmaster-ino

Hi

Warum das Ganze jetzt hier?
Ein Beispiel mit Arrays gab's schon in Post #6.
Auch kam von Dir ein 'Das schaue ich mir an' - war wohl eher nicht so - schade eigentlich.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Whandall

#33
Jun 18, 2019, 10:42 pm Last Edit: Jun 18, 2019, 10:45 pm by Whandall
Man helfe mir das Brett vorm Kopf zu entfernen.
Ich seh sie nicht.
for(byte x=1; x<9; x++) {

Die 1 ist übrigens falsch und für x = 8 geht das in die Hose.
Das ist einer der Hauptvorteile der anderen Schreibweise, man kann diese Fehler nicht mehr machen.

Und die Reihenfolge stammt auch noch aus dem Adafruit Demosketch.
Die kochen auch nur mit Wasser und manchmal nicht besonders gut.

Funktioniert aber so auch.
Wenn du es sagst. Ich könnte mir vorstellen dass begin eine Helligkeit einstellt.
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Kadara

#34
Jun 19, 2019, 06:42 am Last Edit: Jun 19, 2019, 07:02 am by Kadara
Hi

Warum das Ganze jetzt hier?
Ein Beispiel mit Arrays gab's schon in Post #6.
Auch kam von Dir ein 'Das schaue ich mir an' - war wohl eher nicht so - schade eigentlich.

MfG
Weil ich dabei war es umzusetzen und Probleme damit hatte.
Wenn man grade auf dem Schlauch steht und nicht weiß wo man suchen muß kommt da kein Sketch in dem viel umgesetzt ist.
Bitte ein wenig nachtsichtig mit mir sein. Auch wenns mal nicht gleich klappt.
Eigentlich wollte ich noch gar nix dran machen. Lieg nur grad im KH und hab Zeit.

Kadara

#35
Jun 19, 2019, 06:54 am Last Edit: Jun 19, 2019, 07:11 am by Kadara
for(byte x=1; x<9; x++) {

Die 1 ist übrigens falsch und für x = 8 geht das in die Hose.
Das ist einer der Hauptvorteile der anderen Schreibweise, man kann diese Fehler nicht mehr machen.
Da war ich mir nicht sicher.
Hätt ich dann gesehen wenn ein Stripe nicht läuft.
Die kochen auch nur mit Wasser und manchmal nicht besonders gut.
Wenn du es sagst. Ich könnte mir vorstellen dass begin eine Helligkeit einstellt.
Wie gesagt hab ich noch nie eine LED da gehabt.
Ich lebe von den Aussagen die ich am Telefon krieg.
Er will mir aber ein Stück stück schicken, daß ich selbst mal probieren kann.
Ich denke aber nicht daß Adafruit in ihrer eigenen Library so grobe schnitzer drin haben.
Dein Beispiel hab jetzt auch verstanden.
War gestern einfach zu spät.
Werds aber trotzdem lassen so wies ist, weil später oft nur Teile angesprochen werden und nicht alle Stripes. Dann is es einheitlich.

Whandall

Ich denke aber nicht daß Adafruit in ihrer eigenen Library so grobe schnitzer drin haben.
Beispiele haben oft eine (noch) niedrigere Qualität als die dazu gehörige Library.
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Kadara

Beispiele haben oft eine (noch) niedrigere Qualität als die dazu gehörige Library.
Nun, ich wäre froh, ich könnte auf so niedriger Qualität programmieren.
Aber ich brauch noch ne Weile um den kompletten Demosketch zu verstehen und für mich umzusetzten.
Die BRIGHTNESS is aber grade nicht wirklich wichtig.
Das fliegt auf dauer da eh raus.
Mir gings jetzt drum mal ne Basis zu schaffen auf der ich aufbauen kann.
aktuell sieht der Code so aus.

Code: [Select]

#include <Adafruit_NeoPixel.h>

#define BRIGHTNESS 50
#define wait 5


const byte elemente=8;
const byte pin[elemente]={2,14,15,16,17,18,19,20};
const byte anz[elemente]={250,250,130,130,130,130,130,130};
Adafruit_NeoPixel strip_[8];
  
byte neopix_gamma[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
    1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10,
   10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
   17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
   25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
   37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
   51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
   69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
   90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
  115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
  144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
  177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
  215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };

void setup() {

for (byte x=0;x<elemente;x++){  //Stripes einrichten
  Adafruit_NeoPixel strip_[x] = Adafruit_NeoPixel(anz[x], pin[x], NEO_GRBW + NEO_KHZ800);
  pinMode(pin[x],OUTPUT);
  strip_[x].setBrightness(BRIGHTNESS);
  strip_[x].begin();  
  strip_[x].show(); // Initialize all pixels to 'off'
         }  

}

void loop() {
  for(int j = 0; j < 256 ; j++){     //LEDs werden heller
      for(uint16_t i=0; i<strip_[1].numPixels(); i=i+2) {    //jede 2te LED
          for(byte x=0; x<elemente; x++) {    //alle Stripes
         strip_[x].setPixelColor(i, strip_[x].Color(0,0,0, neopix_gamma[j] ) );
         }
        }
        for(int i=strip_[1].numPixels()-1; i>0; i=i-2) {
          for(byte x=0; x<elemente; x++) {
         strip_[x].setPixelColor(i, strip_[x].Color(0,0,0, neopix_gamma[j] ) );
         }
        }
        delay(wait);
        for(byte x=0; x<elemente; x++) {
         strip_[x].show();
         }
      }

  for(int j = 255; j >= 0 ; j--){
      for(uint16_t i=0; i<strip_[1].numPixels(); i=i+2) {
          for(byte x=0; x<elemente; x++) {
         strip_[x].setPixelColor(i, strip_[x].Color(0,0,0, neopix_gamma[j] ) );
         }
        }
        for(int i=strip_[1].numPixels()-1; i>0; i=i-2) {
          for(byte x=0; x<elemente; x++) {
         strip_[x].setPixelColor(i, strip_[x].Color(0,0,0, neopix_gamma[j] ) );
         }
        }
        delay(wait);
        for(byte x=0; x<elemente; x++) {
         strip_[x].show();
         }
      }
}


Wie gesagt. Nix getestet.
Ich hoffe das geht so alles und ich muß nur hier und da kleinigkeiten anpassen.
Den Wachman schau ich mir die Tage an.
Kam ich noch nicht dazu.

Kadara

#38
Jun 19, 2019, 10:29 pm Last Edit: Jun 19, 2019, 10:50 pm by Kadara
So, heute konnt getestet werden.
Es funktioniert leider kein Stück.

Ich hab nochmal jede hier angesprochene Möglichkeit probiert.
Aber ich schaffs nicht hier ein Array zu definieren das funktioniert.
Und ohne das kann ich nichts weiter auf die Art zusammenfassen.

Der Sketch sieht wieder so aus.

Code: [Select]


#include <Adafruit_NeoPixel.h>


#define PIN_1 2
#define PIN_2 14
#define PIN_3 15
#define PIN_4 16
#define PIN_5 17
#define PIN_6 18
#define PIN_7 19
#define PIN_8 20

#define NUM_LEDS_1 146
#define NUM_LEDS_2 137
#define NUM_LEDS_3 63
#define NUM_LEDS_4 72
#define NUM_LEDS_5 75
#define NUM_LEDS_6 82
#define NUM_LEDS_7 87
#define NUM_LEDS_8 82

#define BRIGHTNESS 50
#define wait 5

Adafruit_NeoPixel strip_1 = Adafruit_NeoPixel(NUM_LEDS_1, PIN_1, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_2 = Adafruit_NeoPixel(NUM_LEDS_2, PIN_2, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_3 = Adafruit_NeoPixel(NUM_LEDS_3, PIN_3, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_4 = Adafruit_NeoPixel(NUM_LEDS_4, PIN_4, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_5 = Adafruit_NeoPixel(NUM_LEDS_5, PIN_5, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_6 = Adafruit_NeoPixel(NUM_LEDS_6, PIN_6, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_7 = Adafruit_NeoPixel(NUM_LEDS_7, PIN_7, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_8 = Adafruit_NeoPixel(NUM_LEDS_8, PIN_8, NEO_GRBW + NEO_KHZ800);

byte neopix_gamma[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
    1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10,
   10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
   17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
   25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
   37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
   51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
   69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
   90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
  115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
  144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
  177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
  215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };

void setup() {

strip_1.setBrightness(BRIGHTNESS);
strip_2.setBrightness(BRIGHTNESS);
strip_3.setBrightness(BRIGHTNESS);
strip_4.setBrightness(BRIGHTNESS);
strip_5.setBrightness(BRIGHTNESS);
strip_6.setBrightness(BRIGHTNESS);
strip_7.setBrightness(BRIGHTNESS);
strip_8.setBrightness(BRIGHTNESS);
  strip_1.begin();
  strip_2.begin();
  strip_3.begin();
  strip_4.begin();
  strip_5.begin();
  strip_6.begin();
  strip_7.begin();
  strip_8.begin();
  strip_1.show(); // Initialize all pixels to 'off'
  strip_2.show();
  strip_3.show();
  strip_4.show();
  strip_5.show();
  strip_6.show();
  strip_7.show();
  strip_8.show();

}

void loop() {
  for(int j = 0; j < 256 ; j++){
      for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        delay(wait);
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }

  for(int j = 255; j >= 0 ; j--){
     for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        delay(wait);
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }
}

Der Funktioniert noch.
Jede änderung nicht mehr.

Kadara

Den Nachtwächter hab ich in der Theorie auch verstanden.
Hab den Sketch mal angepasst.
Ist das richtig umgesetzt für meinen Fall?
Code: [Select]

#include <Adafruit_NeoPixel.h>


#define PIN_1 2
#define PIN_2 14
#define PIN_3 15
#define PIN_4 16
#define PIN_5 17
#define PIN_6 18
#define PIN_7 19
#define PIN_8 20

#define NUM_LEDS_1 146
#define NUM_LEDS_2 137
#define NUM_LEDS_3 63
#define NUM_LEDS_4 72
#define NUM_LEDS_5 75
#define NUM_LEDS_6 82
#define NUM_LEDS_7 87
#define NUM_LEDS_8 82

#define BRIGHTNESS 50
#define wait 5

unsigned long w_bl_time;

Adafruit_NeoPixel strip_1 = Adafruit_NeoPixel(NUM_LEDS_1, PIN_1, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_2 = Adafruit_NeoPixel(NUM_LEDS_2, PIN_2, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_3 = Adafruit_NeoPixel(NUM_LEDS_3, PIN_3, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_4 = Adafruit_NeoPixel(NUM_LEDS_4, PIN_4, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_5 = Adafruit_NeoPixel(NUM_LEDS_5, PIN_5, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_6 = Adafruit_NeoPixel(NUM_LEDS_6, PIN_6, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_7 = Adafruit_NeoPixel(NUM_LEDS_7, PIN_7, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_8 = Adafruit_NeoPixel(NUM_LEDS_8, PIN_8, NEO_GRBW + NEO_KHZ800);

byte neopix_gamma[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
    1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10,
   10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
   17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
   25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
   37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
   51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
   69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
   90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
  115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
  144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
  177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
  215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };

void setup() {

strip_1.setBrightness(BRIGHTNESS);
strip_2.setBrightness(BRIGHTNESS);
strip_3.setBrightness(BRIGHTNESS);
strip_4.setBrightness(BRIGHTNESS);
strip_5.setBrightness(BRIGHTNESS);
strip_6.setBrightness(BRIGHTNESS);
strip_7.setBrightness(BRIGHTNESS);
strip_8.setBrightness(BRIGHTNESS);
  strip_1.begin();
  strip_2.begin();
  strip_3.begin();
  strip_4.begin();
  strip_5.begin();
  strip_6.begin();
  strip_7.begin();
  strip_8.begin();
  strip_1.show(); // Initialize all pixels to 'off'
  strip_2.show();
  strip_3.show();
  strip_4.show();
  strip_5.show();
  strip_6.show();
  strip_7.show();
  strip_8.show();

}

void loop() {
  for(int j = 0; j < 256 ; j++){
    if (millis() - w_bl_time> wait ) {
      for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        w_bl_time = millis();
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }
  }
  for(int j = 255; j >= 0 ; j--){
    if (millis() - w_bl_time> wait ) {
     for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        w_bl_time = millis();
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }
  }
}

postmaster-ino

#40
Jun 20, 2019, 08:04 am Last Edit: Jun 20, 2019, 12:40 pm by postmaster-ino
Hi

Zumindest Ich werde mir diesen 8-fach-Kopie-Sketch nicht ansehen - wenn der Nachtwächter klappt: wunderbar, darauf kannst Du aufbauen!
Die Sache mit den Arrays braucht keinen umgefrickelten 8-fach-Kopie-Sketch, sondern einen gaaanz kleinen Versuch mit ZWEI Instanzen - also gerade so viel, daß ein Array überhaupt ein Array ist.
Auch wirst Du darin den ganzen Gamma-Mist und die Animationen (... jetzt hab' ich's doch überflogen) kaum brauchen - keep it simple!

Ganz nebenbei habe ich auch den angehangenen _ bei Deinem stripe_[xyz]-Versuch nicht ganz verstanden, aber Jeder darf Seine Variablen so benennen, wie Ihm Das gefällt, muß mir nicht gefallen - Funktion wäre aber ganz toll.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Whandall

#41
Jun 20, 2019, 08:58 am Last Edit: Jun 20, 2019, 09:01 am by Whandall
Es funktioniert leider kein Stück.
Was soll das heißen?

Aber ich schaffs nicht hier ein Array zu definieren das funktioniert.
In #21 habe ich dir gezeigt wie man das machen könnte.

Den Nachtwächter hab ich in der Theorie auch verstanden.
Hab den Sketch mal angepasst.
Ist das richtig umgesetzt für meinen Fall?
Ich glaube nicht, im Nachtwächter Sketch kommt kein for vor, das das millis() if umschließt.
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Kadara

Was soll das heißen?
Soll heißen, das nix mehr leuchtet.
Die IDE spuckt zwar keine warnung aus. aber laufen tuts nicht.

In #21 habe ich dir gezeigt wie man das machen könnte.
Das habe ich in #23 auch umgesetzt.
Aber es geht nicht.
Ich glaube nicht, im Nachtwächter Sketch kommt kein for vor, das das millis() if umschließt.
sollte ich den Zähler eher so einbauen?
Code: [Select]
#include <Adafruit_NeoPixel.h>


#define PIN_1 2
#define PIN_2 14
#define PIN_3 15
#define PIN_4 16
#define PIN_5 17
#define PIN_6 18
#define PIN_7 19
#define PIN_8 20

#define NUM_LEDS_1 146
#define NUM_LEDS_2 137
#define NUM_LEDS_3 63
#define NUM_LEDS_4 72
#define NUM_LEDS_5 75
#define NUM_LEDS_6 82
#define NUM_LEDS_7 87
#define NUM_LEDS_8 82

#define BRIGHTNESS 50
#define wait 5

unsigned long w_bl_time;

Adafruit_NeoPixel strip_1 = Adafruit_NeoPixel(NUM_LEDS_1, PIN_1, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_2 = Adafruit_NeoPixel(NUM_LEDS_2, PIN_2, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_3 = Adafruit_NeoPixel(NUM_LEDS_3, PIN_3, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_4 = Adafruit_NeoPixel(NUM_LEDS_4, PIN_4, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_5 = Adafruit_NeoPixel(NUM_LEDS_5, PIN_5, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_6 = Adafruit_NeoPixel(NUM_LEDS_6, PIN_6, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_7 = Adafruit_NeoPixel(NUM_LEDS_7, PIN_7, NEO_GRBW + NEO_KHZ800);
Adafruit_NeoPixel strip_8 = Adafruit_NeoPixel(NUM_LEDS_8, PIN_8, NEO_GRBW + NEO_KHZ800);

byte neopix_gamma[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
    1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10,
   10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
   17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
   25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
   37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
   51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
   69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
   90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
  115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
  144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
  177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
  215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };

void setup() {

strip_1.setBrightness(BRIGHTNESS);
strip_2.setBrightness(BRIGHTNESS);
strip_3.setBrightness(BRIGHTNESS);
strip_4.setBrightness(BRIGHTNESS);
strip_5.setBrightness(BRIGHTNESS);
strip_6.setBrightness(BRIGHTNESS);
strip_7.setBrightness(BRIGHTNESS);
strip_8.setBrightness(BRIGHTNESS);
  strip_1.begin();
  strip_2.begin();
  strip_3.begin();
  strip_4.begin();
  strip_5.begin();
  strip_6.begin();
  strip_7.begin();
  strip_8.begin();
  strip_1.show(); // Initialize all pixels to 'off'
  strip_2.show();
  strip_3.show();
  strip_4.show();
  strip_5.show();
  strip_6.show();
  strip_7.show();
  strip_8.show();

}

void loop() {
  for(int j = 0; j < 256 ; j++){
      for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        if (millis() - w_bl_time> wait ) {
        w_bl_time = millis();
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }
  }
  for(int j = 255; j >= 0 ; j--){
     for(uint16_t i=0; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, neopix_gamma[j] ) );
        }
        for(uint16_t i=1; i<strip_1.numPixels(); i=i+2) {
          strip_1.setPixelColor(i, strip_1.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_2.setPixelColor(i, strip_2.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_3.setPixelColor(i, strip_3.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_4.setPixelColor(i, strip_4.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_5.setPixelColor(i, strip_5.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_6.setPixelColor(i, strip_6.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_7.setPixelColor(i, strip_7.Color(0,0,0, 255-neopix_gamma[j] ) );
          strip_8.setPixelColor(i, strip_8.Color(0,0,0, 255-neopix_gamma[j] ) );
        }
        if (millis() - w_bl_time> wait ) {
        w_bl_time = millis();
        strip_1.show();
        strip_2.show();
        strip_3.show();
        strip_4.show();
        strip_5.show();
        strip_6.show();
        strip_7.show();
        strip_8.show();
      }
  }
}

Whandall

Soll heißen, das nix mehr leuchtet.
Nach meiner Interpretation von Color würde ich auch ausschleißlich Schwarz (nix leuchtet) erwarten,
aber du hast mir ja versichert, dass man mit einer Manipulation des Gammawertes Schwarz in etwas Sichtbares verwandeln kann.

Aber es geht nicht.
Wieder so eine tolle Beschreibung, kein Kode des Versuchs, keine Fehlermeldungen.
Bei der Informationslage kann ich nur sagen: "mach es einfach richtig".

sollte ich den Zähler eher so einbauen?
Welchen Zähler? Ich dachte es ginge um Timing mit millis.
Das Timing befindet sich immer noch innerhalb eines for, also "nein, so solltest du es nicht machen".
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

postmaster-ino

Hi

Wie wäre Es, wenn Du (langsam) versuchen würdest, den Sketch mit ZWEI Stripes in EINEM Array aufzubauen?
OHNE Gamma, OHNE Hinten und Vorne Dimmen.
Einfach NUR zwei Stripes, Die in einem Array sitzen, ansprechen.

Es reicht völlig aus, wenn Du die Stripes im Sekundentakt AN und AUS bekommst (oder jeweils die erste LED davon) - Das wiederum klingt nach millis() - Du musst mit diesem Versuchs-Sketch NICHT Deinen ganzen Wohnort illuminieren - Das kann kommen, wenn das Grundgerüst steht - und dort sehe ich ebenfalls noch viel Flickschusterei auf uns zukommen.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Go Up