I think the digispark uses the ATtiny85, that would make sense that it wouldn't work with the timer stuff. I believe I've modified my development code to detect the ATtiny processors and not use the timer interrupt stuff. The standard ping(), ping_cm(), ping_in(), ping_median() methods should still work just fine on the ATtiny.
If program space is also a problem with the limited memory on the ATtiny, you could reduce the compiled size by optimizing your sketch a little. Here's a suggestion:
#include <NewPing.h>
#define TRIGGER_PIN 3
#define ECHO_PIN 5
#define RED_PIN 0
#define GREEN_PIN 1
#define BLUE_PIN 4
#define MAX_DISTANCE 60
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
uint8_t distance = sonar.ping_cm();
if (distance) {
uint8_t greenValue = map(distance, 1, MAX_DISTANCE, 0, 255); //Map the distance range to a range of 0 to 255 to the pwm value for the Green LED
uint8_t redValue = 255 - greenValue;
analogWrite(GREEN_PIN, greenValue);
analogWrite(RED_PIN, redValue);
digitalWrite(BLUE_PIN, LOW);
} else {
//Out of range, turn the LED blue
digitalWrite(GREEN_PIN, LOW);
digitalWrite(RED_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
}
delay(50);
}
This would use quite a bit less sketch size and reduce the memory usage as well by using defines and right-sized variables. On a side note, the digispark is under-powered and overpriced. For a couple dollars more you can get a Teensy 2.0 which is practically the same size and a full ATmega microcontroller so you have a ton of available pins (actually, it has more pins than an Arduino Uno). For just $3 more you can also get the Teensy 3.0 which is a 96 MHz 32-bit microcontroller, but still works with Arduino IDE. Tim
Great stuff, I'm a hardware junky that knows enough code to be stupid with it. so seeing someone that knows how to make it effecient is alway a bonus. Thanks for cleaning that up a ton. I will have a go with that and let you know.
Again Thanks!