New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arduino Web Editor #521

Open
ghost opened this Issue Nov 14, 2017 · 1 comment

Comments

Projects
None yet
1 participant
@ghost

ghost commented Nov 14, 2017

Hello,
I tried to compil this sketch DemoReel100 from Arduino Web Editor without any mofication except DATE_PIN (for arduino pro mini) :

#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    12
//#define CLK_PIN   4
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS    64
CRGB leds[NUM_LEDS];

#define BRIGHTNESS          96
#define FRAMES_PER_SECOND  120

void setup() {
  delay(3000); // 3 second delay for recovery
  
  // 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);
}


// 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
  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 I had this errors messages while compiling :

`./opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -build-path /tmp/154664871/build -hardware opt/arduino-builder/hardware -hardware ./opt/cores -tools opt/arduino-builder/tools -tools ./opt/tools -built-in-libraries opt/libraries/latest -libraries /tmp/154664871/pinned -libraries /tmp/154664871/custom -fqbn arduino:avr:pro:cpu=16MHzatmega328 -build-cache /tmp -logger humantags -verbose=false /tmp/154664871/DemoReel100_copy

Multiple libraries were found for "FastLED.h"

Used: /tmp/154664871/custom/FastLED

Not used: /home/admin/builder/opt/libraries/latest/fastled-3-1-6

In file included from /tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:1:0:

/tmp/154664871/custom/FastLED/FastLED.h:17:17: note: #pragma message: FastLED version 3.001.006

# pragma message "FastLED version 3.001.006"

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:33: error: 'rainbow' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:42: error: 'rainbowWithGlitter' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:62: error: 'confetti' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:72: error: 'sinelon' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:81: error: 'juggle' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:42:89: error: 'bpm' was not declared in this scope

SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino: In function 'void loop()':

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:59:60: error: 'nextPattern' was not declared in this scope

EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically

^

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino: In function 'void rainbowWithGlitter()':

/tmp/154664871/DemoReel100_copy/DemoReel100_copy.ino:80:16: error: 'addGlitter' was not declared in this scope

addGlitter(80);

^

exit status 1`

However, I can upload this same code from my desktop IDE arduino 1.8.3 without any problems.

So I don't understand why it is not working when I use Arduino Web Editor. The Web Editor works well with others codes.

Also I don't understand why it found multiple libraries, I have only one in the libraries manager (from Arduino Web Editor).

Multiple libraries were found for "FastLED.h"

Used: /tmp/154664871/custom/FastLED

Not used: /home/admin/builder/opt/libraries/latest/fastled-3-1-6
@per1234

This comment has been minimized.

Show comment
Hide comment
@per1234

per1234 Feb 8, 2018

Contributor

The Arduino team made the questionable decision to make all Arduino Web Editor users unknowing beta testers for the new arduino-preprocessor tool. Unfortunately that tool is still a little rough around the edges. One of the outstanding issues is that function prototype generation is broken for any sketch which includes the FastLed library:
arduino/arduino-preprocessor#3
The issue is described in more detail in the link above. Note that it is labeled "Help Wanted" so if anyone wants to make a really helpful contribution to the Arduino project here's an opportunity! I'm sure we'd all be very grateful.

The workaround is to manually add function prototypes to your sketch.

I don't understand why it found multiple libraries

Because all libraries in the Library Manager index are pre-installed in the Arduino Web Editor and FastLED is in the Library Manager index.

Contributor

per1234 commented Feb 8, 2018

The Arduino team made the questionable decision to make all Arduino Web Editor users unknowing beta testers for the new arduino-preprocessor tool. Unfortunately that tool is still a little rough around the edges. One of the outstanding issues is that function prototype generation is broken for any sketch which includes the FastLed library:
arduino/arduino-preprocessor#3
The issue is described in more detail in the link above. Note that it is labeled "Help Wanted" so if anyone wants to make a really helpful contribution to the Arduino project here's an opportunity! I'm sure we'd all be very grateful.

The workaround is to manually add function prototypes to your sketch.

I don't understand why it found multiple libraries

Because all libraries in the Library Manager index are pre-installed in the Arduino Web Editor and FastLED is in the Library Manager index.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment