Arduboy Kickstarter version design discussion

I haven’t investigated this to a great extent so it might be a non-issue, but I’m wondering if there’s a slight disadvantage to using Pin 13 for the green LED.

All of the RGB LEDs are on PWM capable pins, so we will be able to individually vary their brightnesses. However, the PWM for Pin 13 uses Timer 4. Timer 4 can also be used by the speaker pins, so it’s possible that there could be problems if we want to do PWM with the speaker and control the green LED brightness at the same time.

Putting the green LED on Pin 9 (which can use Timer 1 for PWM) might avoid this potential problem. The display’s DC signal, which is currently on Pin 9, could be moved to the vacated Pin 13 without causing any issues since it’s just a basic digital output.

The red LED on Pin 10 can use Timer 1 and the blue LED on Pin 11 can use Timer 0 or Timer 1, so these are already OK.

How about this? It puts the Speaker entirely on Port C, and all of the OLED control signals on Port D.

I suspect the former might have more of an impact the control signals only get manipulated at startup. (Or if anyone wants to take control of advanced features of the display)

Also, RGB is tentative on it actually fitting under the front cover and not being too expensive, I think it will be ok :smile:

When I suggested using pins 5 and 13 for the speaker, @ChrisS replied that there is an advantage to also being able to use two different comparator outputs on the same timer. Using pins 5 and 12 allows this. Using pins 5 and 13 doesn’t because they both use the same Comparator A on Timer 4. See this post, plus the previous and two following ones for the discussion on this.

When dealing with the speaker, I can see no big advantage to having both pins on the same port, and as you said, even less so for the OLED.

Obsessing about grouping pin functions on the same port doesn’t usually offer much from an overall speed point of view for a given program. There are generally many other things that can be addressed to improve efficiency.

If this turns out to be a problem, even just three individual LEDs (1 red, 1 green, 1 blue) grouped closely together, would be nice to have. I’d go with a triangle arrangement, spaced maybe 3/16" apart.

Yeah 3 separate ones will work too!

A single RGB package is still better though, because you can mix the LEDs to produce many colors. With separate LEDs you’d probably just end up seeing individual red, green and blue points of light.

Note that RGB LEDs with only 4 leads are generally less expensive and smaller, but tend to be common anode, like this one. This isn’t a much of a problem. You just have to reverse your hardware logic:
Tie the anode to VCC and put the resistors between the cathodes and the output pins.
A low on the pin will turn the LED on.

Hot damn thats a nice part, diffused and everything! I just emailed my sourcing lady now I have to email her back haha! Nice!

This one is a bit smaller and groups the LEDs closer, for better mixing.
The datasheet.

Other one is much cheaper! I told her anything under 1.6mm thickness will fit.

I have an idea, for the speaker, to use a piezo element in the back side of the case. It might be louder. I’m going to try it out.

I didn’t see a big price difference between the two. The links I gave both show about $0.14 each for a qty. 3000 reel, from Digi-Key and Mouser respectively.

An equivalent to the smaller LTST-C19HE1WT is available from AliExpress for about $0.05 each in qty. 1000.

Maybe check availability and pricing on the LTST-C19GD2WT. It has the same footprint as the first one (and is a bit thinner) but has a better triangular LED grouping.

That aliexpress one looks promising should be able to get it from that price, I put it out for quote so we will see if not I’ll ask her to contact them.

Thanks man!

Here is my idea for the breakout on the back, that will theoretically allow you to plug in shields to it if you fully mod it out.

But this also might be a nightmare, we will see how I get on.

1 Like

Just note that the AliExpress one may have a water clear case, instead of diffused.

You might want to add a small diffused area to the inside surface of the Arduboy case, above the LED. Even if the ones you use turn out to be diffused, this would make it future-proof.

Wow! That’s a brilliant idea! :heart_eyes:
I hope you can pull it off. If you have trouble routing all the pins, at least putting the ones deemed important (up for discussion), that you are able to route, in the standard shield positions would still be of great benefit.

If you lay out the pads properly, you should be able to accommodate actual surface mount single row headers, in addition to the right angle through hole ones.

It’s nice that the Arduboy width so closely matches the size of a standard Arduino shield. Even the battery will squeeze in between the headers. (I’m guessing the chosen battery was originally sized for an Arduino shield.)

Its too sad actually the headers you show would fall off the edge of the board :frowning:

My apologies. I was thinking that the 54mm specified width of the Arduboy was for the board itself. I forgot to account for the fact that this measurement would also include the thickness of the sides of the case. :flushed:

Oh well, using right angle through hole headers should be adequate.

Oh snap, we wanted to put an N channel Mosfet on the Ground of the OLED so we can power it down in software too :open_mouth: almost forgot!

@bateske, Do you think an external Mosfet switch to power off the display is really necessary?

According to the OLED datasheet, with the display in software activated sleep mode it will typically draw only 1uA from Vdd and 2uA from Vcc, for 3uA total. The Atmega32u4 can draw as little as 1uA in power down mode, if the watchdog timer is disabled.

Without factoring in any idle power used by the power supply and other circuitry, let’s say the total would be 5uA. With a fully charged 180mAh battery that had no internal leakage, you could sleep for over 4 years.

Now, if any circuitry beyond the processor and display draws any significant power while the unit is asleep, then the 3uA sleep current drawn by the display is even less of a factor in overall sleep time.

In other words, is saving 3uA of current draw worth the cost of adding external power down circuitry for the display?

Good point, I had thought there was a reason to use the fet.

That breakout pins on the back is going to be so hard, I’ve scrapped it for now.

Maybe I can fiddle with it for later but it’s gonna take too much time.

Would be easier with 4 layers actually…

Could you at least place unconnected pads for the shield headers on the back edges of the board, and also place small pads on the back for each signal (using through hole vias if necessary) in any spot that’s easy?

This way jumper wires could be soldered between these signal and header pads, in essence doing what extra layers would allow. You could still connect any signals on the board itself that didn’t cause routing problems. The user would only have to solder in wires for the missing signals required for the particular shield(s) they wanted to use, plus the headers themselves of course.

The pads you showed for the 3x2 ICSP header aren’t really necessary, since I assume you’ll have pads for these signals somewhere, to allow on board bootloader (re)programming.

Some minor tweaks needed but teasing the copper layers what do you think ;D