Light switch box

By Dan Chen, January 14, 2015

This is a very simple LED controller that cycles through different lighting mode using attend 44.

 

Schematics for Attiny44 light controller

Note the usb port only supplies the power.

Download Eagle FIles

Screen Shot 2015-01-14 at 12.47.33 PM

Code for Attiny 44

The button push will cycle through different modes of blinking, fading and brightness.

long randNumber;
long randNumberII;

int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by


const int buttonPin =8 ;     // the number of the pushbutton pin
const int ledPin =  7;      // the number of the LED pin
int mode=1;
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  //pinMode(buttonPin, INPUT); 
  pinMode(buttonPin, INPUT); 
  digitalWrite(buttonPin, HIGH);       // turn on pullup resistors
  
  

}

void loop(){
  
  
  
  buttonState = digitalRead(buttonPin);

  
  
 if (mode==1){
     
   analogWrite(ledPin, 62);    
      if (buttonState == LOW) { mode=2; delay (90); buttonState=HIGH;} 

  }
  else if (mode==2){
     analogWrite(ledPin, 125);  
      if (buttonState == LOW) { mode=3;  delay (90); buttonState=HIGH;} 
  }
    else if (mode==3){
     analogWrite(ledPin, 255);    
      if (buttonState == LOW) { mode=4;  delay (90); buttonState=HIGH;} 
  }
   else if (mode==4){

               
              for(int pos = 255; pos>=60; pos-=1)     // goes from 180 degrees to 0 degrees 
              {         
                buttonState = digitalRead(buttonPin);
              analogWrite(ledPin, pos);  
            if (buttonState == LOW) { mode=5; }    
               delay(5);
              } 
            
            
            
              for(int pos = 60; pos <= 255; pos += 1) // goes from 0 degrees to 180 degrees                {                 buttonState = digitalRead(buttonPin);               if (buttonState == LOW) { mode=5; }                   analogWrite(ledPin, pos);               delay(5);               }                       if (buttonState == LOW) { mode=5;  delay (90); buttonState=HIGH;}    }    else if (mode==5){                               for(int pos = 255; pos>=60; pos-=5)     // goes from 180 degrees to 0 degrees 
              {         
                buttonState = digitalRead(buttonPin);
              analogWrite(ledPin, pos);  
            if (buttonState == LOW) { mode=6; }    
               delay(5);
              } 
            
            
            
              for(int pos = 60; pos <= 255; pos += 5) // goes from 0 degrees to 180 degrees                {                 buttonState = digitalRead(buttonPin);               if (buttonState == LOW) { mode=6; }                   analogWrite(ledPin, pos);               delay(5);               }                       if (buttonState == LOW) { mode=6;  delay (90); buttonState=HIGH;}    }     else if (mode==6){               randomglow();   }   else if (mode==7){       if (buttonState == LOW) { mode=8;  delay (90); buttonState=HIGH;}       analogWrite(ledPin, 0);        delay (50);      analogWrite(ledPin, 255);        delay (50);    }         else if (mode==8){       if (buttonState == LOW) { mode=1;  delay (90); buttonState=HIGH;}       analogWrite(ledPin, 0);       }             } void randomglow(){     randNumber = random(1, 5);                 randNumberII = random(100, 255);                              for(int pos = 255; pos>=randNumberII; pos-=randNumber)     // goes from 180 degrees to 0 degrees 
              {         
                buttonState = digitalRead(buttonPin);
              analogWrite(ledPin, pos); 
               if (buttonState == LOW) { mode=7;}    
                delay(5);
              } 
            
            
            
              for(int pos = randNumberII; pos <= 255; pos += randNumber) // goes from 0 degrees to 180 degrees 
              {  
              buttonState = digitalRead(buttonPin);
              analogWrite(ledPin, pos);    
                if (buttonState == LOW) { mode=7; }    
                delay(5);               
              }  
                    if (buttonState == LOW) { mode=7;  delay (90); buttonState=HIGH;} 
}

IMG_2451

IMG_2445 IMG_2446 IMG_2447

Download box STLĀ files