Strange behavior with setRGBled

This can potentially be caused by having the wrong board file selected? I believe this can happen when you flash as an arduino micro. Check that I might be way off here would like to look deeper in this keep posted!

Just tried this sketch and only the blue LED lights up on my production red arduboy, the board is right so I know it’s not selected as the micro. Seems to be the same problem as @crub

No. The blue LED on the DevKit is on Arduino pin 17. The RGB LED on the production Arduboy is on pins 9, 10 and 11. If you compiled for the DevKit none of the RGB LEDs would ever light using setRGBled().

What happens if you do some analog write directly to the correct pins? Is it just the function? :confused:

I made a truth table of what would happen if the LED was installed rotated 180 degrees. I get exactly the results that are being reported. Only the red and blue LEDs would be able to be turned on and they would be dimmer than normal because there would be 2 dropping resistors in the path instead of one.

It would appear that the second batch of production rotated the rgb led 180 degrees on the pcb. Therefore green cannot work as it is common anode meaning the cathode of the green led is connected to VCC.

Meaning, anyone without speaker holes has a malfunctioning led. This is a sad day for arduboy. Many apologies. I don’t think there is a way to service everyone’s devices. We will just have to live with this mistake and fix it on the next batch.

Maybe we can do a store credit for anyone receiving a faulty unit.

3 Likes

Kev, don’t beat yourself up over it, you have done amazingly well to get it to this stage, some will surely grumble and shout but it’s a minor thing at the end of the day.

1 Like

Well, at least I know now for sure that I did not make a mistake while programming. Arduboy is still a great device and I am going to support the next generation too. I believe you learned a lot during this campaign and I am looking forward for the next project of yours.

So I guess the factory test procedure didn’t include (at least) the RGB LED.

Not only will the green LED not work but in the simple “full on or full off” cases, selecting red will light blue and blue will light red. If you turn on green neither red or blue can be turned on.

The blue and red LEDs will be dimmer than normal because the green LED’s dropping resistor will be added in series. Turning on red will lower the brightness of blue and vice versa.

Controlling the brightness using PWM will work if the green LED is fully off. How PWM brightness control for red and blue will behave, if green is dimmed using PWM, will depend on the phase, frequency and pulse width relationships between green and the other LED.

Here’s the table for the fully on or fully off cases:

RED GREEN BLUE Result
off off off All Off
ON off off Blue
off ON off All Off
off off ON Red
ON ON off All Off
off ON ON All Off
ON off ON Red and Blue
ON ON ON All Off

A small consolation is that the RGB LED is most likely still good and won’t be damaged by using it when incorrectly installed. Therefore, a small few with the equipment and skills may be able to remove and reinstall it correctly themselves.

Here’s a sketch that will show all the possible combinations of “full on” or “full off”, using digitalWrite() for the RGB LED.

#include <Arduboy.h>

#define LED_ON LOW
#define LED_OFF HIGH

Arduboy arduboy;

void setup() {
  arduboy.begin();
  arduboy.setTextSize(2);
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
}

void loop() {
  displayText("RED");
  setLEDs(LED_ON, LED_OFF, LED_OFF);
  displayText("GREEN");
  setLEDs(LED_OFF, LED_ON, LED_OFF);
  displayText("BLUE");
  setLEDs(LED_OFF, LED_OFF, LED_ON);
  displayText("RED GREEN");
  setLEDs(LED_ON, LED_ON, LED_OFF);
  displayText("RED BLUE");
  setLEDs(LED_ON, LED_OFF, LED_ON);
  displayText("GREEN BLUE");
  setLEDs(LED_OFF, LED_ON, LED_ON);
  displayText("ALL ON");
  setLEDs(LED_ON, LED_ON, LED_ON);
  displayText("ALL OFF");
  setLEDs(LED_OFF, LED_OFF, LED_OFF);
}

void displayText(const char* text) {
  arduboy.clear();
  arduboy.setCursor(0, 24);
  arduboy.print(text);
  arduboy.display();
}

void setLEDs(uint8_t red, uint8_t green, uint8_t blue) {
  digitalWrite(RED_LED, red);
  digitalWrite(GREEN_LED, green);
  digitalWrite(BLUE_LED, blue);
  delay(2000);
}

There was an rgb test, I even saw it fail but for some unknown reason I managed to convince myself that it was a software bug or a glitch instead of digging in. Unfortunately that’s a heavy lesson learned in manufacturing, the need to confirm every last detail.

Thanks for the support, I guess rgb was an added feature during the campaign so perhaps no harm no foul. Still, I had wanted to support ultimate blinky potential and I mucked that up a bit.

It will be fixed for the preorders.

I can confirm this as well. No Green LED with my White Arduboy, no Speaker Holes.

If this is a simple solder job, can someone post a quick illustration of what needs to change? If it’s just an LED soldered on upside down, it seems likely that basic solder skills could fix it?

You have to remove just the RGB LED (unsolder it), then rotate it 180 degrees (in either direction :wink:) and then solder it back in.

It may not be easy without the right equipment, though. It’s a surface mount part and has 4 pads that must be desoldered all at the same time. Also, LEDs are fairly heat sensitive. If they get too hot they may loose some brightness even if they don’t fail.

If I were doing it, I’d probably use two soldering irons (which I have) at the same time, with one iron on the two pins on one side and the other iron on the two on the other side, to try to get it off as quickly as possible. A hot air station (which I also have) is another possibility but there’s a risk of melting or overheating the LED or damaging the OLED display next to it.

1 Like

I wonder if (de)soldering it will make it look like a mess as usual. I guess it can be cleaned with alcohol or something afterwards to make it look nice. I wouldn’t try if I didn’t have good skills to do it.

My Arduboy is good though, it’s from the earlier batch that has speaker holes.

I’ll do a quick video on how you can fix it, I think it should be possible to do with a big blob of solder. Otherwise chip quick might work too.

I’ve used a hot air tool before but it destroys the oled in a hurry. It might be possible to do with a heat sheild.

Will it be handled for Kickstarter orders that have not yet shipped?

It’s hard to believe you didn’t turn one on and think “Wow why does this new batch have a blue led on startup?”

Honestly I don’t think many people are going to have an issue but it would be nice if you provided some other means to get a working unit without having to get out a soldering iron.

1 Like

I can’t imagine Kevin could afford to recall/replace 6500 arduboys dotted across the globe just because of an LED, as one of the three still works it wouldn’t be much of a bother changing the library to just use the blue instead. Not ideal but it won’t be as hard as a global recall or him funding the build of all those arduboys with a working LED himself.

1 Like

I didn’t suggest he do a “global recall”. Just provide a way for your kickstarter backers who want one that works with a way to get a working one before people who didn’t and just bought it on the website. Is that really asking too much?

1 Like