Hi @wrapper,
Just some comments on your calculations:
The output is designed to be able to supply at least the drive current selected while providing valid digital levels. It is likely to be able to provide considerably more than that current value. This is equivalent to saying that the output will be designed to provide a voltage that is guaranteed to exceed the logic level required at that current. Your calculations assume the worse case for meeting the requirement which is unlikely to be the case.
In your calculations you have taken the minimum to be Vih (assuming driving high with a sinking load). The actual value used in the chip design would be Voh since this is the specification for outputs. This may seem strange but it is relevant spec i.e. For an output you have to use a drive spec.
In any case, I agree that it is unlikely to exceed the Io(max) of 16mA.
Anyway the above it irrelevant for a properly designed circuit. Unless the pin has been specifically design to be current limited (which the RPi aren't) you should use a series resistor:
- It moves the power dissipation from the MCU to the resistor
- When calculating LED currents you can use well defined Voh(min)/Vol(max) values to calculate a meaningful and more consistent LED current
- If you use different colour leds or even different batches it reduces the variations. It also allows you to balance brightness between different colours.
- The 'complexity' of a series resistor is trivial - I can't see any justification to not include one even in hobby circuits. I don't believe that there is anyone who can't handle this level of complexity.
Some passing comments (unrelated to your post):
I am currently using a microcontroller that has GPIO pins that provide both multiple levels of drive current and slew rate control. While the interact they are not the same thing and would not be implemented in the same fashion.
Drive capability relates to maximum safe capabilities while slew rate is rate of change. You can change the latter by modifying the rate of change of the drive to the output stage (e.g. using feedback or capacitance) without affecting (steady-state) drive strength.
Finally, is the original YT worth all this aggravation? Yes - you shouldn't intentionally mislead people or claim technical knowledge that is absent. Besides it doesn't take much effect