Arduino Due & Electrosmash pedalSHIELD

I recently purchased an Arduino Due from an $18USD credit from ITEAD. I immediately went searching for something unique to use it for, that’s when I found the ElectroSmash pedalSHEILD and thought that’s the perfect thing.

Above is a picture off Electrosmash’s website showing how it all fits together, below is my finished product. 

It took me about two hours to complete the kit. The instructions were clear and precise and plenty of pictures if you needed to double check something. 

Below is the ITEAD Arduino Due clone that was purchased separately. This is the only board that can be used with the pedalSHIELD Due, however there’s the option for the Arduino Uno called the pedalSHIELD Uno. (not pictured) 

At this stage I’ve tried all the example sketches but haven’t had time yet to try my hand at making something uniquely my own sound. 

Seriously Joking, Right? 

Most likely the worst twitter suggested follow I’ve ever received! #youhavegottobefuckingkiddinme

STEMTera Kickstarter

On September 28th the STEMTera bread board was launched on Kickstarter. This is an Arduino compatible micro controller inside a modified solder less bread board. This caught my attention because I mainly tinker with Arduino stuff whilst sitting on the couch! So there are times when I’d have multiple pieces of gear with a rat’s nest of wires (that’s pretty much the norm for this kind of thing!) However the STEMTera bread board essentially removes the need to have your micro controller then a bread board for components , in that you can place items directly on the STEMTera thus saving some space (if that’s a concern) so I pledged for the $45 backing with delivery for mid to late December. Oh and I got mine in black as that to me seemed logical for the least amount of light bleeding through the plastic cover.

stemtera black

Skip forward a few weeks and I’m now using the STEMTera board as my go to board for anything Atmel 328p based. I’m kind of hoping that a SAMD (M0) or STM32 (M3) will become a reality in the not to distant future.

LED Tea Light

With Xmas not far away I’d ordered some LED tea Lights for the wife to make some decorations to give away to the family.  I was interested to find out what was driving the LED, but because all the candles were required I was not able to autopsy one to find out.  This got me thinking, I have an Adafruit Trinket that would be great to drive an LED via PWM and create the desired flame effect.

trinket3v

Now after searching the web for examples of what it was I wanted to do, I finally settled on this one from .ledhacker This is pretty much what I was after! Here’s a copy of that original code…

#define FLICKER_LED_PIN 10
// the start of the flicker (low)
static int flicker_low_min = 200;
static int flicker_low_max = 240;
// the end value of the flicker (high)
static int flicker_high_min = 230;
static int flicker_high_max = 256;
// delay between each low-high-low cycle
// low->high |flicker_hold| high->low
static int flicker_hold_min = 40; // milliseconds
static int flicker_hold_max = 80; // milliseconds
// delay after each low-high-low cycle
// low->high->low |flicker_pause| low->high...
static int flicker_pause_min = 100; // milliseconds
static int flicker_pause_max = 200;  // milliseconds
// delay low to high and high to low cycle
static int flicker_speed_min = 900; // microseconds
static int flicker_speed_max = 1000; // microseconds
void setup() {
  pinMode(FLICKER_LED_PIN, OUTPUT);
}
int flicker_random_low_start = 0;
int flicker_random_low_end = 0;
int flicker_random_high = 0;
int flicker_random_speed_start = 0;
int flicker_random_speed_end = 0;
void loop() {
  
  // random time for low
  flicker_random_low_start = random(flicker_low_min, flicker_low_max);
  flicker_random_low_end = random(flicker_low_min, flicker_low_max);
  
  // random time for high
  flicker_random_high = random(flicker_high_min, flicker_high_max);
  
  // random time for speed
  flicker_random_speed_start = random(flicker_speed_min, flicker_speed_max);
  flicker_random_speed_end = random(flicker_speed_min, flicker_speed_max);
  
  // low -> high
  for (int i = flicker_random_low_start; i<flicker_random_high; <span="" class="hiddenGrammarError" pre="" data-mce-bogus="1">i++) {
    analogWrite(FLICKER_LED_PIN, i);
    delayMicroseconds(flicker_random_speed_start);
  }
  
  // hold
  delay(random(flicker_hold_min, flicker_hold_max));
  
  // high -> low
  for (int i = flicker_random_high; i>=flicker_random_low_end; i--) {
    analogWrite(FLICKER_LED_PIN, i);
    delayMicroseconds(flicker_random_speed_end);
  }
  
  // pause
  delay(random(flicker_pause_min, flicker_pause_max));
}

So I loaded this on the Trinket and at first I didn’t include a current limiting resistor and the LED showed a slight flicker, but not anything like a flickering tea light! After adding the current limiting resistor (220Ω)and that didn’t really change much except for dim the LED ever so slightly.  So obviously I needed to tweak the code and see what I end up with..

Now my first thoughts on why it didn’t work out as expected is that the code was obviously written for a 5v logic, however this trinket is 3.3v logic. I made the following changes (after a little fiddling)and got more of what I was after  🙂


< #define FLICKER_LED_PIN 10
---
> #define FLICKER_LED_PIN 0
4,5c4,5
< static int flicker_low_min = 200;
< static int flicker_low_max = 240;
---
> static int flicker_low_min = 15;
> static int flicker_low_max = 175;
8c8
< static int flicker_high_min = 230;
---
> static int flicker_high_min = 180;
13c13
< static int flicker_hold_min = 40; // milliseconds
---
> static int flicker_hold_min = 20; // milliseconds
22c22
< static int flicker_speed_min = 900; // microseconds
---
> static int flicker_speed_min = 800; // microseconds

As you can see I only made small changes to some timings and they seemed to work better for the 3.3v logic

The next thing was how long would this run on a 1000mah lipo battery? well, somewhere between 4 to 5 days!

I’ve placed the code and supplement files on github should you wish to make one. 🙂

Migrating to HTPPS

Over the next coming weeks I’ll be gradually updating old blog posts to be fully compliant to https, Should I find anything that can’t be done then depending on the content I’ll most like just delete it!

For now I’ve forced a redirect from http to https at the server level, hence why some content may not display correctly (especially links to external sites that are http only)

So I suppose just watch this space? 😉