I'm using the arduino tiny core (
http://code.google.com/p/arduino-tiny/)
And this is my code:
#include <SoftwareSerial.h>
int txPin = 2;
SoftwareSerial sSerial = SoftwareSerial(36, txPin);
int button = 3;
//Setup the LEDs
// LED outputs
int blueLED = 4;
int redLED = 0;
int greenLED = 1;
int nullLED = 16; // dummy does nothing on this processor attiny45
void setup(){
pinMode(txPin, OUTPUT);
pinMode(blueLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(button, INPUT);
sSerial.begin(9600);
}
void loop(){
rainbow();
}
void red(){
sSerial.print(1);
digitalWrite(redLED, HIGH);
}
void green(){
sSerial.print(2);
digitalWrite(greenLED, HIGH);
}
void blue(){
sSerial.print(3);
digitalWrite(blueLED, HIGH);
}
void none(){
sSerial.print(0);
digitalWrite(redLED, LOW);
digitalWrite(greenLED, LOW);
digitalWrite(blueLED, LOW);
}
void yellow(){ //orange-ish
sSerial.print(4);
analogWrite(redLED, 240); //255
analogWrite(greenLED, 193);
analogWrite(blueLED, 37);
}
void rainbow(){
sSerial.print(5);
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(redLED, fadeValue);
delay(30);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(redLED, fadeValue);
delay(30);
}
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(greenLED, fadeValue);
delay(30);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(greenLED, fadeValue);
delay(30);
}
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(blueLED, fadeValue);
delay(30);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(blueLED, fadeValue);
delay(30);
}
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(blueLED, fadeValue);
analogWrite(redLED, fadeValue);
analogWrite(greenLED, fadeValue);
delay(30);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(blueLED, fadeValue);
analogWrite(redLED, fadeValue);
analogWrite(greenLED, fadeValue);
delay(30);
}
}
void violet(){
sSerial.print(6);
analogWrite(redLED, 148);
analogWrite(greenLED, 0);
analogWrite(blueLED, 211);
}
So the colors fading one by one works fine, but when they fade together the blue one (witch is not connected to a hardware PWM pin) flickers.