Programmierer für Arduino Neopixel LED-Strip gesucht (kleine Feuerwehr)

Hallo!

Wir sind eine kleine Feuerwehr in Bayern und suchen jemanden, der eine Programmieraufgabe übernimmt.
Evtl. bin ich hier im Forum total falsch, vielleicht kann jemand das Topic in den entsprechenden Bereich schieben?

Das Projekt: LED-Effekte (Sketch) eines LED-Streifens (WS2812B) mittels Arduino Uno R3 erstellen.
Bezahlung: 60 Euro per paypal (ich weiß, nicht viel, aber evtl. kommen weitere Projekte)
Timeline: Bis Sonntag Abend 08.12.19 sollte der Sketch fertig sein.(ich weiß, sportlich)
Kommunikation: via Whatsapp + Telefon + mail

Beschreibung:
Wir haben einen LED-Streifen mit 60 LED´s WS2812B
Es sollen nur die ersten 35 LED´s betrieben werden.
Der Stripe liegt hinter einer Milchglasscheibe und eben nur 35 LED´s lang.
Es geht hauptsächlich um Effekte im Farbspektrum Blau. Auch wenn wir eine feuerrote Feuerwehr sind :wink:
Wir wollen unserem Abteilungsleiter eine Freude machen....leider sehr dringend!!!!

verschiedene Blautöne, verschiedene Helligkeiten, das stellen wir uns vor.

Der Rainbow-Effekt ist bei Neopixeln berühmt, hier "wandert das komplette Farbspektrum" durch den Streifen. Hier stellen wir uns den Effekt mit Blautönen vor.

Desweiteren sollen mehrere blaue Würmer durch den Stripe laufen. Also hintereinanderlaufende Würmer, die sich verfolgen - mit einem Abstand von ca. 5 LED´s.

Generell:
Es soll einstellbar sein:
-Geschwindigkeit des Rainbows
-Bei den Würmern die Länge der Würmer und der Abstand zwischen ihnen und die Geschwindigkeit.

Insgesamt stelle ich mir 5 verschiedene Effekte vor

Wir haben folgende Hardware:
Elegoo Most Complete Starter Kit + LED Stripe WS2812B
5V 40A Netzteil (Wenn möglich, sollte per 9V Batterieblock betrieben werden. Adapter 9V-Block zum Arduino ist da.
Wir bei der Feuerwehr können einen Sketch einspielen, Bibliotheken einspielen...dann wirds schon schwierig

Hier auf dieser Internetseite können wir diskutieren, welche Effekte man auf Blau umstellen kann.

Ich stelle mir das so vor: Wir telefonieren, während wir uns die Website und die Effekte ansehen.
Ich entscheide mich für welche und du schreibst den Sketch, den du mir an meine mails schreibst.

Wie klingst das für dich?
Bis Sonntag Abend 08.12.19 machbar?

Grüße

Seid Ihr da am 6.12. nicht etwas spät dran, wenn es am 8.12. fertig sein soll?
Den 9V-Block könnt Ihr vergessen.

Gruß Tommy

ja, sehr spät dran. Montag Mittag soll ihm das vorgetragen werden. Ein anderes Projekt ist bei einem Autounfall gestern kaputt gegangen. Und wir haben erfahren, dass der Beschenkte ein Arduino-Fan ist. Das sahen wir als Herausforderung...
Wäre toll, wenn es klappt, ich halte das Wochenende frei für den Programmierer, damit wir das hinbekommen.

Tommy56:
Den 9V-Block könnt Ihr vergessen.

ginge eine Handy-Powerbank am USB-Anschluss des Arduino?

Wir sind etwas weiter und wünschen uns folgendes:

Auf dieser Website sind Videos des Effektes und die dazugehörigen Sketche dargestellt.
Folgende sollen in blau umgestellt werden:
Nr:
10 Cylon
allerdings nicht hin und her, sondern nur in eine Richtung (einstellbar) und eine Verfolgungsjagd weiterer blauer Würmer...

16 Running Lights
ist ähnlich wie Cylon Programm Nr. 10-----könnte die Lösung der Würmer sein?

18 Rainbow Cycle
nur mit Blautönen

21 Fire
nur mit Blautönen

24
nur mit Blautönen

Die Reihenfolge im Sketch ist egal, die Dauer des Effektes sollte einstellbar sein.
Wir müssen das Programm nicht zu 100% verstehen - Programm muss nicht komplett kommentiert werden, nur dort, wo man Geschwindigkeit, Dauer und Abstände der Würmer bei Cylon und Running Lights...

Hi

Denkt Ihr nicht, daß der zu Beschenkende, da Arduino-Fan, mit der nackten Hardware aber dann eben Alles davon, besser beschenkt ist, als wenn Ihr in zwei Tagen probiert, irgend Etwas zusammen zu stöpseln, was dem Beschenktem dann wie Blei im Schrank liegt?
Zerlegen darf Er's ja nicht - war ja ein Geschenk ... lasst Es zumindest mehr werden, als ein etwas abgefahrenen Staubfänger.

MfG

expoino:
ginge eine Handy-Powerbank am USB-Anschluss des Arduino?

Wenn alle 35 Pixel weis leuchten sollen NEIN. Dazu braucht es 2A. Der Arduino hat hinter dem USB Anschluß eine 0,5A Sicherung.

Grüße Uwe

Denkt Ihr nicht, daß der zu Beschenkende, da Arduino-Fan, mit der nackten Hardware aber dann eben Alles davon, besser beschenkt ist,

Einem Arduino Fan einen x-ten Arduino schenken ist auch nicht das wahre. ;).
Oder mit anderen Worten wer mir einen Arduino schenken will wird geteert und gefedert.
Andererseits einen amerikanischen Arduino der Genuino-zeit hab ich noch nicht. :wink:
Grüße Uwe

Hi

Auch, wenn warmer Teer gerade durchaus verlockend klingt - mir fehlt der gewünschte Steinzeit-Arduino ebenfalls, weshalb ich wohl dann doch nicht in den Genuss einer Fango-Packung komme.

MfG

@TO
Ich würde es mal an einer Uni probieren.
Könnte mir vorstellen, dass es Studenten gibt, die es für ein kleines Almosen gerne machen.

Für den Fall, Plan A mit einem Mitglied des Forums und Plan B mit einem Studenten haben nicht funktioniert, hier Plan C:

#include <FastLED.h>

FASTLED_USING_NAMESPACE

// FastLED "100-lines-of-code" demo reel, showing just a few
// of the kinds of animation patterns you can quickly and easily
// compose using FastLED.
//
// This example also shows one easy way to define multiple
// animations patterns and have them automatically rotate.
//
// -Mark Kriegsman, December 2014

#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000)
#warning "Requires FastLED 3.1 or later; check github for latest code."
#endif

#define DATA_PIN    5
#define LED_TYPE    WS2812
#define COLOR_ORDER RGB
#define NUM_LEDS     35
CRGB leds[NUM_LEDS];

#define BRIGHTNESS         255
#define FRAMES_PER_SECOND  120

void setup() {
  // tell FastLED about the LED strip configuration
  FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  //FastLED.addLeds<LED_TYPE, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);

  // set master brightness control
  FastLED.setBrightness(BRIGHTNESS);
}


// List of patterns to cycle through.  Each is defined as a separate function below.
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm, light};

uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns

void loop()
{
  // Call the current pattern function once, updating the 'leds' array
  gPatterns[gCurrentPatternNumber]();
  for (byte j = 0; j < NUM_LEDS; j++) {
    leds[j].r = 0;
    leds[j].g = 0;
  }
  // send the 'leds' array out to the actual LED strip
  FastLED.show();
  // insert a delay to keep the framerate modest
  FastLED.delay(1000 / FRAMES_PER_SECOND);

  // do some periodic updates
  EVERY_N_MILLISECONDS( 20 ) {
    gHue++;  // slowly cycle the "base color" through the rainbow
  }
  EVERY_N_SECONDS( 10 ) {
    nextPattern();  // change patterns periodically
  }
}

#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))

void nextPattern()
{
  // add one to the current pattern number, and wrap around at the end
  gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}

void rainbow()
{
  // FastLED's built-in rainbow generator
  fill_rainbow( leds, NUM_LEDS, gHue, 7);
}

void rainbowWithGlitter()
{
  // built-in FastLED rainbow, plus some random sparkly glitter
  rainbow();
  addGlitter(80);
}

void addGlitter( fract8 chanceOfGlitter)
{
  if ( random8() < chanceOfGlitter) {
    leds[ random16(NUM_LEDS) ] += CRGB::White;
  }
}

void confetti()
{
  // random colored speckles that blink in and fade smoothly
  fadeToBlackBy( leds, NUM_LEDS, 10);
  int pos = random16(NUM_LEDS);
  leds[pos] += CHSV( gHue + random8(64), 200, 255);
}

void sinelon()
{
  // a colored dot sweeping back and forth, with fading trails
  fadeToBlackBy( leds, NUM_LEDS, 20);
  int pos = beatsin16( 13, 0, NUM_LEDS - 1 );
  leds[pos] += CHSV( gHue, 255, 192);
}

void bpm()
{
  // colored stripes pulsing at a defined Beats-Per-Minute (BPM)
  uint8_t BeatsPerMinute = 62;
  CRGBPalette16 palette = PartyColors_p;
  uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
  for ( int i = 0; i < NUM_LEDS; i++) { //9948
    leds[i] = ColorFromPalette(palette, gHue + (i * 2), beat - gHue + (i * 10));
  }
}

void juggle() {
  // eight colored dots, weaving in and out of sync with each other
  fadeToBlackBy( leds, NUM_LEDS, 20);
  byte dothue = 0;
  for ( int i = 0; i < 8; i++) {
    leds[beatsin16( i + 7, 0, NUM_LEDS - 1 )] |= CHSV(dothue, 200, 255);
    dothue += 32;
  }
}
void light() {
  static byte schritt = 0;
  static uint32_t vorhin = millis(), intervall = 100;
  if (millis() - vorhin >= intervall) {
    vorhin = millis();
    switch (schritt) {
      case 0:
      case 2:
      case 4:
      case 6:
        haelfte(false, false);
        break;
      case 1:
      case 3:
        haelfte(true, false);
        break;
      case 5:
      case 7:
        haelfte(false, true);
        break;
    }
    schritt = (schritt + 1) % 8;
  }
}
void haelfte(bool links, bool rechts) {
  for (byte j = 0; j < NUM_LEDS / 2; j++) {
    leds[j] = links ? CRGB::White : CRGB::Black;
  }
  for (byte j = NUM_LEDS / 2 + 1; j < NUM_LEDS; j++) {
    leds[j] = rechts ? CRGB::White : CRGB::Black;
  }
}

Getestet mit UNO und APA102.

Wenn es nicht blau wird, dann COLOR_ORDER anpassen. Ebenso kann DATA_PIN gewählt werden.

Hallo zusammen,

bei diesem Projekt geht es mehr um darum, unserem Abteilungsleiter eine Show zu bieten, die mit einem Arduino realisiert wurde. Er wird die Hardware zwar behalten dürfen, aber ich denke, es geht ihm auch nicht darum.Wir haben uns meist lustig über das kleine Ding gemacht und ihn nicht richtig ernst genommen. Er zeigte uns seine privaten Projekte - Rauchmelder, Wasseralarme etc. Wir haben ihn belächelt und ihn immer an fertige Applikationen mit Fernbedienung verwiesen, die man bei Amazon kaufen kann. Gut, wir wollten hier im Forum jemanden beauftragen, der uns das programmiert und die Eigeneistung ist etwas mau. Doch im Laufe des Wochenendes haben wir fleißig das Internet bemüht, sowohl auch dieses Arduino-Forum an anderer Stelle. Und rausgekommen ist eine passable Lösung.

Dem User agmue sei 1000 Mal gedankt, die FastLED-Lib und seine Programmierung hat es in sich...
wir werden uns Teile aus dem Sketch rausnehmen.
Wenn du, agmue den beschriebenen Obulus haben möchtest, melde dich (PM gibt es hier?)

Ich versuche, ein Video hochzuladen, wenn wir mit dem Sketch fertig sind, dann kann der eine oder andere sehen, was uns vorgeschwebt hat.
Wir lernen daraus: Anfangs hatten wir die Idee, jemanden zu engagieren, der uns das Programm schreibt. Mit wenig Eigenleistung von uns. Doch dann hat uns der Ehrgeiz gepackt und auch die nicht gerade wenig große Wertschätzung unseres Kapitäns wuchs plötzlich weiter an. So machten wir uns zu dritt daran, zu verstehen, was hinter dem Arduino steckt. Nun, nur ansatzweise tun wir das und wissen nun um die Schwierigkeiten, dem kleinen Uno Leben einzuhauchen. Das ganze hat uns viel Spaß gemacht.
Der Sketch von agmue macht die ganze Sache rund...

Grüße

Falls agmue den ausgelobten Obulus nicht will und ihr ihn unbedingt loswerden wollt, besteht die Möglichkeit einer Spende für die Arduinofoundation

expoino:
Dem User agmue sei 1000 Mal gedankt, die FastLED-Lib und seine Programmierung hat es in sich...
wir werden uns Teile aus dem Sketch rausnehmen.

Bitte gerne. Es handelt sich um ein Testprogramm, dem ich die Rot- und Grüntöne gelöscht habe. Sehr simpel :grin:

Das Blinken der letzten Animation stammt dann wieder von mir.

Da ich das Programm ohne jede Bedingungen hier veröffenlicht habe, dürft Ihr nutzen, was Ihr mögt.

expoino:
Wenn du, agmue den beschriebenen Obulus haben möchtest, melde dich (PM gibt es hier?)

Nö, ich habe einen guten Job, mit dem ich Geld verdiene. Normalerweise bitte ich Nutzer meiner Programme um eine Spende für einen wohltätigen Zweck. Feuerwehrleute darum zu bitten, finde ich dann auch wieder blöd. Aber wenn Ihr einen Teil des ausgelobten Geldes für irgendeine gute Idee ausgeben würdet, fände ich das Klasse. Meine Teddys haben mir geflüstert, Teddys fahren gerne mit Tatütata, um Kinder zu erfreuen. Fährt bei Euch einer mit? Aber Ihr habt sicher viel praxisnähere Ideen, laßt Euch inspirieren.

expoino:
Er zeigte uns seine privaten Projekte - Rauchmelder, Wasseralarme etc.
...
Doch dann hat uns der Ehrgeiz gepackt und auch die nicht gerade wenig große Wertschätzung unseres Kapitäns wuchs plötzlich weiter an.

Das ist der für mich entscheidende und wichtige Punkt!

Ihr hättet ihm einen ESP8266 oder ESP32 schenken sollen, die können ins WLAN oder einen Access Point aufmachen. Projektideen für das nächste Geschenk.

Viel Spaß beim Feiern!