Thank you! I will try AdaFruit Trinket M0.
I'm sorry, that was an error. The Trinket M0 does not have the special pin for driving NeoPixels, so you might still need a logic level shifter (e.g. 74hc14).
The AdaFruit ItsyBitsy M0 has the special pin! It's only slightly larger.
Another possibility to consider would be a Wemos mini, or similar esp8266 based board. These are 3.3V, so again you may need the level shifter. But with these boards you could control your wall over WiFi.
They also have LOTS more RAM and general processing power than the AVR chips, allowing for much more fancy displays.
PaulRB:
...still need a logic level shifter (e.g. 74hc14).
...
i didn't know you could use Schmitt Triggers for that purpose.
is there a benefit, or what different considerations would there be, when compared to the usual MOSFET packages on the usual Bi-Directional Level-shifters that are available.
Those bi-directional modules are designed for i2c, which is normally 100KHz or maybe 400KHz. NeoPixel signals are 800KHz.
In my personal experience, the bi-directional modules work with NeoPixels, but not well. They are marginal, at best, for this purpose, and I found that even touching the connections with a finger would prevent the strip from updating correctly, corrupting the pattern randomly, or blocking it altogether. Investigating with a 'scope, I found the signals output by the level shifter were a mess. The crisp signal edges had been turned into sawtooth patterns, indicating the shifter circuit was not able to switch fast enough.
Using 74hc14 did not suffer from these problems, the signals remained clean and touching the circuit had no effect.
But using 74hc14 for i2c level conversion would not work of course because a bi-directional shifter is needed.
PaulRB:
Those bi-directional modules are designed for i2c, which is normally 100KHz or maybe 400KHz.
NeoPixel signals are 800KHz.
...
But using 74hc14 for i2c level conversion would not work of course because a bi-directional shifter is needed.
i see - good to know, thanks a lot !
Those level shifters are basically open drain outputs; using a 10k pull-up on the module. That's what gives the sawtooth-shaped signal at high speeds. This can be improved on by lowering the value of those resistors - 3k3 or so will give a much cleaner output signal.
The 74HC14 on the other hand has push/pull outputs, but it works in only one direction, allowing it to pass fast signals with good quality (clean block wave).
The SDA line of I2C is bidirectional, so a 74HC14 won't work for that - you need bidirectional level shifting for I2C.
And that is the answer - the "bidirectional level shifters" pull down well enough, but not for pulling up.
The Schmitt trigger is not necessary, a basic 74HCT04 is just fine, but it is always a "nice" idea to "sharpen up" the waveform using the Schmitt trigger.
A 74HC14 will generally work but you are getting a bit close to the switching logic levels. The "HCT" versions are specifically designed as level shifters.
Paul__B:
...
The Schmitt trigger is not necessary, a basic 74HCT04 is just fine, but it is always a "nice" idea to "sharpen up" the waveform using the Schmitt trigger.
...
i see, so it's not the Schmitt trigger that is functioning as the level-shifter.
is it more like a buffer then ? (albeit with inverted signal)
i had a look at the Diode Inc. datasheet for the 74HCT04 (says it has Schmitt trigger on the input anyway)
which is called a hex-inverter with standard push-pull outputs. - what does that mean ?
That means they're driven high/low, in contrast to open drain/open collector outputs which are only pulled low and require a pull-up resistor.
wvmarle:
That means they're driven high/low, in contrast to open drain/open collector outputs which are only pulled low and require a pull-up resistor.
i see - kind of like, not having a default position (ie. can be low or high) while pull-up/down pins have a given default position.
Neither have a "default" state. It's a different type of output.
Short explanation with simplified schematics here.
More discussion of the topic here and here.
wvmarle:
Neither have a "default" state. It's a different type of output.
Short explanation with simplified schematics here.
More discussion of the topic here and here.
thanks for those links !
will give them a good read.