Buttons, OLED, Buzzer & pinout shield

I'm new to the forum even though I had been using Arduino for the past ... four years.
I had just "left" the Arduboy Community seeking to do more things than just programming 8-bit games.
Games are just games, after all. They don't do anything.
Especially since I recently acquired the SHT-30 sensor when I found out that the last thermometer at home went kaput.

My previous shield shown below feature many things. It feature a SPI based OLED (128x64), 6 buttons, 3 LEDs and a beeper.
Each LED is wired individually to a adjustable resistor and the beeper is also wired to a adjustable resistor.
The two pins in the middle are connected to A4 and GND. The two pins on the far left is straight breakouts for SDA and SCL.


At first I was happily bending the cables to a good angle and soldering the display wires happily. Then when I started adding buttons and LEDs my mind started slowly exploding.
It was a wiring hell. And since I got a DUE at my hand, I would likely need another one. And since it is next to impossible to still add the "expansion slot" on top of this wiring hell, I had decided to draw a PCB instead.

The PCB is loosely based on the Prototype Shield.

The expansion slot (from top to bottom) features:
5V, GND, RST, MOSI, SCK, MISO, blank (to prevent reverse insertion)
D2 (originally NC, later A5), RX, SCL, SDA, TX.

It's still a wiring hell; I can't make the connections work without adding microvias for the connections on a dozen links. Perhaps optimization can be made?
Especially since I consider the Arduino display and joystick hat (the original Arduino version with a display and a joystick). I can't find that one but it looked like the LCD 4884 shield without those breakouts. By comparison I believe this is vastly more powerful(and expensive) than that. Why?
Because by hardware progression, this shield delivers a lot of things to work on.
Step 1: Blink a LED. Check.
Step 2: buttons input. Check.
Step 3: Serial (USB) communication. (varies)
Step 4: conditional output (e.g. buttons control LEDs). Check.
Step 5: Communication (rx/tx, IIC, SPI). Check.
Step 6: Display (or "drivers"). Check.
Step 7: Graphics. Check.
Step 8: Sensors. IIC and multiple SPI get it covered. Check.
The only thing it's lacking is output, beside the beepers and LED. Analog and digital pins output.
But that can be simply mitigated by using stackable headers that connect it to Arduino. This give the user 2 extra analog pins for the cause. (I might want to break it out, too).

Now, onto compatibility.
The good news is, the board follows standard Arduino pinout and doesn't have voltage conflicts (WARNING: 5V LED on 3v3 boards). But the LED is connected to 5V and the mcu only need to pull the signal low to start the electricity flowing. Plus there are adjustable resistors.
Or we can just use 3v3 on LEDs. It doesn't matter that much.
The other good news, is that the board uses the ICSP header for all the ICSP purposes. It don't require "hacking" pins from standard pinouts that are only available on the few selected boards.

Now, sadly, this shield is I/O intensive. A UNO can only dream of it (it don't have the I/O as some of them are copies of ICSP header pins), and the UNO had relocated SDA and SCL pins.
That goes along with Duemilanove and Diecimia. And Arduino Pro.
In fact it's only compatiable with Leonardo, Leonardo ETH, and the big boards (MEGA, MEGA2560, MEGA ADK, DUE)
(ignoring scary current limit warnings on pinout references)
No, I don't think this 3 LEDs can draw more than 100ma anyway. In fact ...
for there to be 100ma current (total) the effective resistance of all three LEDs (plus the values set by adjustable resistor) must be less than 50 ohms. Because Voltage = resistance * current. Ohm's law.
Each LED had at least 300 ohms. That alone solve the problem.
Hmm. so I might think twice when using it on DUE. Is there anything I need to note? Or do I just crank up the resistance of the resistors and pretend nothing happened?


Ignoring that on DUE, I think it might work on MEGA. It might, or it might not.
I hadn't had a MEGA anyway, so I can't test it out.

Note:
There is a "stray" Vin line leading to the bottom of the board. This is because I am intending on adding a battery pack (that recharges via the Arduino's input rather than a separate input on the board), but I had not sorted out the required wiring for that to happen yet.
That battery will be mounted externally (i.e. connected via a standard JST or a PH plug or some sort), and any leftover space on the board will be used to expand the board to a full "large" board and filled with "Prototype shield" vias grids.