Drive a LED strip with many features from a Digispark
Switch branches/tags
Nothing to show
Clone or download
Latest commit eb83b1f Jul 5, 2017

README.markdown

LEDstrip using a Digispark

My configuration

I am using Chinese clones of the Digispark that have the reset pin enabled (thus making the P5 pin unusable). I have first uploaded a new version (2.3) of the Micronucleus bootloader and then disabled the RESET pin. This way, the bootloader is much smaller and more bug-free. It needs a new Micronucleus to upload the programs, though (and optionally modification of the boards.txt file).

By default, Micronucleus waits 6 seconds before it will conclude there is no computer connected. This is (as far as I can see) far longer than actually necessary. A single second is long enough. Therefore, I have built a special version of Micronucleus (version 2.3) that reduces this delay. You can change this by setting AUTO_EXIT_MS to 1000 (in firmware/configuration/t85_default/bootloaderconfig.h of the Micronucleus source).

Additionally, the version of Micronucleus that is shipped with the Digispark is very out of date. Newer versions are much smaller and in my experience also much more stable (it has less connection problems).

You need an AVR programmer for installing a new bootloader. Luckily, if you have another Arduino you can use the Arduino as ISP sketch to emulate a programmer (I think it's even possible doing this with another Digispark, but I haven't tested this).

Alternatively, you can run an in-place upgrade. I have added the file bootloader_upgrade_t85_1sec.hex which can be installed using Micronucleus, as usual. After Micronucleus is done, wait ~10sec, then unplug and replug, and wait another ~10sec just to be sure it has run (note that it runs as user program, so it will need 6 seconds to start and then some time to upgrade). The readme contains some additional details. Note that there is a small chance it will brick the chip, especially when you unplug it during the upgrade. You can also add a LED or buzzer between P0 and P1 for the signal it is ready.

To install the new bootloader (replace $ARDUINO_DIR with the installation directory of the Arduino IDE software):

$ avrdude -C$ARDUINO_DIR/hardware/tools/avr/etc/avrdude.conf -v -pattiny85 -cstk500v1 -P/dev/ttyACM0 -b19200 -Uflash:w:bootloader_t85_1sec.hex.hex:i

Now test the bootloader by installing a sketch using the micronucleus command. After you've disabled the reset pin, there's no going back (unless you want to buy or build a high-voltage programmer to reset these fuses).

Command to disable the reset pin (WARNING: this effectively locks the bootloader):

$ avrdude -P /dev/ttyACM0 -p attiny85 -c stk500v1 -v -b 19200 -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m

Now you should be able to run the sketch without reset.

Connect:

Pin Function
P0 button: change animation mode
P1 LED strip signal (configured for the WS2812 and 30 LEDs)
P2 LOW (for a button over P0-P2)
P3 LOW (for a button over P3-P5)
P4 not connected
P5 button: change speed of animation (6 steps)