Seed Xiao rp2040 Problems

Hello dear Forum

I might post in the wrong area, sorry. I am
New to this fourm.

Recently i bought some seeed xiao rp2040 for a project. I really fell in love with the design and the size. A great product!!

Unfortunately i’m having some issues with the rp2040, and i hope to find here some help.

It seems like my program gets deleted after i load it via the arduino software to the rp2040, or its not loadable after a while. Am i doing something wrong? I use the arduino software and i comnevt the rp2040 via usb-c to my computer. I can find the board in arduino and once i get connectet it says something like “modem” in the low right area of the arduino software. I can upload without any problems and also disconnect it from usb and pluf it onto a 5v source, it works fine. But then if i connect it again nothing happens.
Am i uploading it wrong?? What is my mistake? I really like the rp2040 and wanna use this product!
Please help me.

Greetings Marc

you probably have !while serial statement in the prgram

this statement tells the program to wait for a usb serial connection to be established before proceeding… so if you do not connect to a serial monitor the process will wait till you do… so if you are no longer planning to use serial monitor you will want to comment out or remove this code line

same for any device not just RP2040

Na i dont have this in my code.
As i weote before, it works a couple times and than not anymore.
Then I can also not connect the rp2040 to the computer anymore…
Here is the code:
CODE ALT

#include “FastLED.h”

#define NUM_LEDS 6
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define DATA_PIN D0
#define VOLTS 5
#define MAX_MA 1000

CRGBArray<NUM_LEDS> leds;

#define TWINKLE_SPEED 4
#define TWINKLE_DENSITY 8
#define SECONDS_PER_PALETTE 15

CRGB gBackgroundColor = CRGB::Black;

#define AUTO_SELECT_BACKGROUND_COLOR 0
#define COOL_LIKE_INCANDESCENT 0

CRGBPalette16 gCurrentPalette;
CRGBPalette16 gTargetPalette;

void setup() {

FastLED.setMaxPowerInVoltsAndMilliamps( VOLTS, MAX_MA);
FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS)
.setCorrection(TypicalLEDStrip);

chooseNextColorPalette(gTargetPalette);
}

void loop()
{
EVERY_N_SECONDS( SECONDS_PER_PALETTE ) {
chooseNextColorPalette( gTargetPalette );
}

EVERY_N_MILLISECONDS( 10 ) {
nblendPaletteTowardPalette( gCurrentPalette, gTargetPalette, 12);
}

drawTwinkles( leds);

FastLED.show();
delay(50);
}

void drawTwinkles( CRGBSet& L)
{

uint16_t PRNG16 = 11337;
uint32_t clock32 = millis();

CRGB bg;
if( (AUTO_SELECT_BACKGROUND_COLOR == 1) &&
(gCurrentPalette[0] == gCurrentPalette[1] )) {
bg = gCurrentPalette[0];
uint8_t bglight = bg.getAverageLight();
if( bglight > 64) {
bg.nscale8_video( 16);
} else if( bglight > 16) {
bg.nscale8_video( 64);
} else {
bg.nscale8_video( 86);
}
} else {
bg = gBackgroundColor;
}

uint8_t backgroundBrightness = bg.getAverageLight();

for( CRGB& pixel: L) {
PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384;
uint16_t myclockoffset16= PRNG16;
PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384;
uint8_t myspeedmultiplierQ5_3 = ((((PRNG16 & 0xFF)>>4) + (PRNG16 & 0x0F)) & 0x0F) + 0x08;
uint32_t myclock30 = (uint32_t)((clock32 * myspeedmultiplierQ5_3) >> 3) + myclockoffset16;
uint8_t myunique8 = PRNG16 >> 8;
CRGB c = computeOneTwinkle( myclock30, myunique8);

uint8_t cbright = c.getAverageLight();
int16_t deltabright = cbright - backgroundBrightness;
if( deltabright >= 32 || (!bg)) {
  pixel = c;
} else if( deltabright > 0 ) {

  pixel = blend( bg, c, deltabright * 8);
} else { 
  pixel = bg;
}

}
}

CRGB computeOneTwinkle( uint32_t ms, uint8_t salt)
{
uint16_t ticks = ms >> (8-TWINKLE_SPEED);
uint8_t fastcycle8 = ticks;
uint16_t slowcycle16 = (ticks >> 8) + salt;
slowcycle16 += sin8( slowcycle16);
slowcycle16 = (slowcycle16 * 2053) + 1384;
uint8_t slowcycle8 = (slowcycle16 & 0xFF) + (slowcycle16 >> 8);

uint8_t bright = 0;
if( ((slowcycle8 & 0x0E)/2) < TWINKLE_DENSITY) {
bright = attackDecayWave8( fastcycle8);
}

uint8_t hue = slowcycle8 - salt;
CRGB c;
if( bright > 0) {
c = ColorFromPalette( gCurrentPalette, hue, bright, NOBLEND);
if( COOL_LIKE_INCANDESCENT == 1 ) {
coolLikeIncandescent( c, fastcycle8);
}
} else {
c = CRGB::Black;
}
return c;
}

uint8_t attackDecayWave8( uint8_t i)
{
if( i < 86) {
return i * 3;
} else {
i -= 86;
return 255 - (i + (i/2));
}
}

void coolLikeIncandescent( CRGB& c, uint8_t phase)
{
if( phase < 128) return;

uint8_t cooling = (phase - 128) >> 4;
c.g = qsub8( c.g, cooling);
c.b = qsub8( c.b, cooling * 2);
}

#define HALFFAIRY ((CRGB::FairyLight & 0xFEFEFE) / 2)
#define QUARTERFAIRY ((CRGB::FairyLight & 0xFCFCFC) / 4)
const TProgmemRGBPalette16 FairyLight_p FL_PROGMEM =
{ CRGB::FairyLight, CRGB::FairyLight, CRGB::FairyLight, CRGB::FairyLight,
HALFFAIRY, HALFFAIRY, CRGB::FairyLight, CRGB::FairyLight,
QUARTERFAIRY, QUARTERFAIRY, CRGB::FairyLight, CRGB::FairyLight,
CRGB::FairyLight, CRGB::FairyLight, CRGB::FairyLight, CRGB::FairyLight
};

#define C9_Red 0x800080
#define C9_Orange 0x008000
#define C9_Green 0x046002
#define C9_Blue 0x070758
#define C9_White 0x606820
const TProgmemRGBPalette16 RetroC9_p FL_PROGMEM =
{ C9_Red, C9_Orange, C9_Red, C9_Orange,
C9_Orange, C9_Red, C9_Orange, C9_Red,
C9_Green, C9_Green, C9_Green, C9_Green,
C9_Blue, C9_Blue, C9_Blue,
C9_White
};

const TProgmemRGBPalette16* ActivePaletteList[] = {
&FairyLight_p,
&RetroC9_p,
&RainbowColors_p
};

void chooseNextColorPalette( CRGBPalette16& pal)
{
const uint8_t numberOfPalettes = sizeof(ActivePaletteList) / sizeof(ActivePaletteList[0]);
static uint8_t whichPalette = -1;
whichPalette = addmod8( whichPalette, 1, numberOfPalettes);

pal = *(ActivePaletteList[whichPalette]);
}

when you reconnect power try pressing the reset button

1 Like