[ create a new paste ] login | about

Link: http://codepad.org/aA9oGB4H    [ raw code | fork ]

C, pasted on Aug 10:
#include <MsTimer2.h>

const byte   sw = 2;
const byte ledA = 5;
const byte ledB = 6;
const byte ledC = 9;

volatile byte s = 1;

void swcheck(){
  static long t = 0;
    if((t+500)<millis()){s=!s;}
    t = millis();
}

void ledblink() {
  static byte i = 0;
  static byte m = 0;  
  static byte f = 0;
  static byte c = 1;    
  static byte v = 2;
    switch(f){
      case 0:
          if(!s){f=2;}
          if(!m){attachInterrupt(0,swcheck,FALLING);break;}
      case 1:
          if(s){v=0;m=4;}
      case 2:
          detachInterrupt(0);
          --i+=v;
          switch(m){
              case 0:
                  analogWrite(ledA,i);
                 digitalWrite(ledB,LOW);
                 digitalWrite(ledC,LOW);
                  if(~i){++i;}     
                  break;
              case 1:
                 digitalWrite(ledA,HIGH);
                  analogWrite(ledB,i);
                 digitalWrite(ledC,LOW);
                  if(~i){++i;}   
                  break;
              case 2:
                 digitalWrite(ledA,HIGH);
                 digitalWrite(ledB,HIGH);
            if(c){analogWrite(ledC,i);}
                  break;
              case 4:
                  analogWrite(ledA,i);
                  analogWrite(ledB,i);
            if(c){analogWrite(ledC,i);}
                  break;
          }
          if(i==255){++m;v=0;f=1;}else{f=2;}
          if(i==0){
              ++m;v=2;c=!c;
              if((s)&&(m==5)){f=m=0;c=1;}
              }
          if(m==3){
              --m;
              attachInterrupt(0,swcheck,FALLING);
          }else{
              detachInterrupt(0);
          }
          break;
    }
}

void setup() {
    pinMode(sw,INPUT_PULLUP);
    pinMode(ledA,OUTPUT);
    pinMode(ledB,OUTPUT);
    pinMode(ledC,OUTPUT);
    attachInterrupt(0,swcheck,FALLING);
    MsTimer2::set(5,ledblink);
    MsTimer2::start() ;
}

void loop() {
}


Create a new paste based on this one


Comments: