🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Neoflash HAT

    M5 Stick/StickC
    2
    2
    4.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      cepics
      last edited by

      Hi all, I'm testing Neoflash HAT with M5StickC but with this code:

      /*
          Please install FastLED library first.
          In arduino library manage search FastLED
      */
      #include <M5StickC.h>
      #include "FastLED.h"
      
      #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    26
      //#define CLK_PIN   4
      #define LED_TYPE    WS2811
      #define COLOR_ORDER GRB
      #define NUM_LEDS    126
      CRGB leds[NUM_LEDS];
      
      #define BRIGHTNESS          30
      #define FRAMES_PER_SECOND  120
      
      // -- The core to run FastLED.show()
      #define FASTLED_SHOW_CORE 0
      
      // -- Task handles for use in the notifications
      static TaskHandle_t FastLEDshowTaskHandle = 0;
      static TaskHandle_t userTaskHandle = 0;
      
      /** show() for ESP32
       *  Call this function instead of FastLED.show(). It signals core 0 to issue a show, 
       *  then waits for a notification that it is done.
       */
      void FastLEDshowESP32()
      {
          if (userTaskHandle == 0) {
              // -- Store the handle of the current task, so that the show task can
              //    notify it when it's done
              userTaskHandle = xTaskGetCurrentTaskHandle();
      
              // -- Trigger the show task
              xTaskNotifyGive(FastLEDshowTaskHandle);
      
              // -- Wait to be notified that it's done
              const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 200 );
              ulTaskNotifyTake(pdTRUE, xMaxBlockTime);
              userTaskHandle = 0;
          }
      }
      
      /** show Task
       *  This function runs on core 0 and just waits for requests to call FastLED.show()
       */
      void FastLEDshowTask(void *pvParameters)
      {
          // -- Run forever...
          for(;;) {
              // -- Wait for the trigger
              ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
      
              // -- Do the show (synchronously)
              FastLED.show();
      
              // -- Notify the calling task
              xTaskNotifyGive(userTaskHandle);
          }
      }
      
      void setup() {
        M5.begin();
        delay(3000); // 3 second delay for recovery
        Serial.begin(115200);
        M5.Lcd.setRotation(3);
        M5.Lcd.fillScreen(BLACK);
        M5.Lcd.setTextSize(2);
        M5.Lcd.setCursor(10, 0);
        M5.Lcd.setTextColor(TFT_LIGHTGREY);
      
        M5.Lcd.print("NeoFlash HAT\r\n");
        M5.Lcd.setCursor(60, 30);
        M5.Lcd.setTextColor(TFT_NAVY);
        M5.Lcd.print("RGB");
      
        M5.Lcd.setCursor(30, 50);
        M5.Lcd.print("EFFICTION");
        
        // tell FastLED about the LED strip configuration
        FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
        //FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
      
        // set master brightness control
        FastLED.setBrightness(BRIGHTNESS);
      
          int core = xPortGetCoreID();
          Serial.print("Main code running on core ");
          Serial.println(core);
      
          // -- Create the FastLED show task
          xTaskCreatePinnedToCore(FastLEDshowTask, "FastLEDshowTask", 2048, NULL, 2, &FastLEDshowTaskHandle, FASTLED_SHOW_CORE);
      }
      
      
      // 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 };
      
      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]();
      
        // send the 'leds' array out to the actual LED strip
        FastLEDshowESP32();
        // 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;
        }
      }
      

      but only fist line of neoflash Hat works....

      ideas??
      tnks a lot

      1 Reply Last reply Reply Quote 0
      • S
        SarahC
        last edited by

        A year ago?

        It looks to me like you have a duff RGB panel. Did you ever get it swapped?

        1 Reply Last reply Reply Quote 0
        • First post
          Last post