Final-ish Code for Workshop

We have the final(ish) code ready for the prototypes that people will be able to make from our kits.

// Accessible Pixel version 1
// APvl.ino
// designed by AccessiblePixel.com
 
//Include Libraries
  #include <Adafruit_NeoPixel.h>
  #include <Keypad.h>
  #ifdef __AVR__
    #include <avr/power.h>
  #endif
 
// Initialise Variables
 
  #define PIN 9 // PIN for LED Strip
 
  volatile int frame=0;
  volatile int backcolorframe=0;
  volatile int r = 0;
  volatile int g = 0;
  volatile int b = 0;
  volatile int brightred = 0;
  volatile int brightgreen = 0;
  volatile int brightblue = 0;
  volatile int brightcolor = 0;
  volatile int up = 0;
  volatile int rainbowi = 0;
  volatile int rainboww = 0;
  volatile int circleanimation = 0;
   
// Initialise Pixels
 
  Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800);
   
// Setup Keypad
 
  const byte ROWS = 4; // Four rows
  const byte COLS = 3; // Three columns
  // Define the Keymap
  char keys[ROWS][COLS] = {
    {'1','2','3'},
    {'4','5','6'},
    {'7','8','9'},
    {'*','0','#'}
  };
   
  // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
  byte rowPins[ROWS] = { 8, 7, 6, 5 };
  // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
  byte colPins[COLS] = { 4, 3, 2 }; 
 
  // Create the Keypad
  Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
// Main Setup Loop (Run Once At Start Up)
void setup() {

  // Initialize Pixels
    strip.begin();    
    strip.setBrightness(135);
    strip.setPixelColor(0,50,50,50);
          strip.setPixelColor(1,0,0,0);
          strip.setPixelColor(2,50,50,50);
          strip.setPixelColor(3,0,0,0);
          strip.setPixelColor(4,50,50,50);
          strip.setPixelColor(5,0,0,0);
          strip.setPixelColor(6,50,50,50);
          strip.setPixelColor(7,0,0,0);
          strip.setPixelColor(8,50,50,50);
          strip.setPixelColor(9,0,0,0);
          strip.setPixelColor(10,50,50,50);
          strip.setPixelColor(11,0,0,0);
          strip.setPixelColor(12,50,50,50);
          strip.setPixelColor(13,0,0,0);
          strip.setPixelColor(14,50,50,50);
          strip.setPixelColor(15,0,0,0);
    strip.show(); 
    

     
// Setup Interrupt at 32hz
  // Stop Interrupts
    cli();
 
 // Clear Timer Register
    TCCR1A = 0;// Set entire TCCR1A register to 0
    TCCR1B = 0;// Same for TCCR1B
    TCNT1  = 0;// Initialize counter value to 0
 // set compare match register for 32hz increments
    OCR1A = 488;// = (16*10^6) / (32*1024) - 1 (must be <65536)
 // turn on CTC mode
    TCCR1B |= (1 << WGM12);
 // Set CS10 and CS12 bits for 1024 prescaler
    TCCR1B |= (1 << CS12) | (1 << CS10);  
 // enable timer compare interrupt
    TIMSK1 |= (1 << OCIE1A);
 // Allow Interrupts
    sei();
 
}//end setup loop


 
// Function Declarations


  //Initialize Reset Function
  
    void(* resetFunc) (void) = 0; //declare reset function @ address 0 
uint32_t wheelz(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}
 
// Run Animation Frames
  ISR(TIMER1_COMPA_vect){
  if(frame==1){ 
    strip.setPixelColor(0,135,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==2) {  
    strip.setPixelColor(1,135,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==3) {  
    strip.setPixelColor(2,135,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==4) {  
    strip.setPixelColor(3,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==5) {  
    strip.setPixelColor(4,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==6) {  
    strip.setPixelColor(5,135,0,0);
    delay(50);
    strip.show(); 
    frame++;
    }
      else if(frame==7) {  
    strip.setPixelColor(6,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==8) {  
    strip.setPixelColor(7,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==9) {  
    strip.setPixelColor(8,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==10) {  
    strip.setPixelColor(9,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==11) {  
    strip.setPixelColor(10,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==12) {  
    strip.setPixelColor(11,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==13) {  
    strip.setPixelColor(12,135,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==14) {  
    strip.setPixelColor(13,135,0,0);
    strip.show(); 
    frame++;
    }
          else if(frame==15) {  
    strip.setPixelColor(14,135,0,0);
    strip.show(); 
    frame++;
    }
          else if(frame==16) {  
    strip.setPixelColor(15,135,0,0);
    strip.show(); 
    frame = 38;
    
    }

    // RESET ANIMATION
      else if(frame==17){ 
    strip.setPixelColor(15,0,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==18) {  
    strip.setPixelColor(14,0,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==19) {  
    strip.setPixelColor(13,0,0,0);
    strip.show(); 
    frame++;
    }
  else if(frame==20) {  
    strip.setPixelColor(12,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==21) {  
    strip.setPixelColor(11,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==22) {  
    strip.setPixelColor(10,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==23) {  
    strip.setPixelColor(9,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==24) {  
    strip.setPixelColor(8,0,0,0);
    delay(50);
    strip.show(); 
    frame++;
    }
      else if(frame==25) {  
    strip.setPixelColor(7,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==26) {  
    strip.setPixelColor(6,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==27) {  
    strip.setPixelColor(5,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==28) {  
    strip.setPixelColor(4,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==29) {  
    strip.setPixelColor(3,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==30) {  
    strip.setPixelColor(2,0,0,0);
    strip.show(); 
    frame++;
    }
      else if(frame==31) {  
    strip.setPixelColor(1,0,0,0);
    strip.show(); 
    frame++;
    }
          else if(frame==32) {  
    strip.setPixelColor(0,0,0,0);
    strip.show(); 
    } else if(frame==33) {
      strip.setPixelColor(random(0,15),random(0,135),random(0,135),random(0,135));
      strip.setPixelColor(random(0,15),0,0,0,0);
      strip.show();
    }
          else if(frame==34){strip.setPixelColor(0,0,0,0);
          strip.setPixelColor(1,0,0,0);
          strip.setPixelColor(2,0,0,0);
          strip.setPixelColor(3,0,0,0);
          strip.setPixelColor(4,0,0,0);
          strip.setPixelColor(5,0,0,0);
          strip.setPixelColor(6,0,0,0);
          strip.setPixelColor(7,0,0,0);
          strip.setPixelColor(8,0,0,0);
          strip.setPixelColor(9,0,0,0);
          strip.setPixelColor(10,0,0,0);
          strip.setPixelColor(11,0,0,0);
          strip.setPixelColor(12,0,0,0);
          strip.setPixelColor(13,0,0,0);
          strip.setPixelColor(14,0,0,0);
          strip.setPixelColor(15,0,0,0);
          strip.show();
  }
          else if(frame==35){
          strip.setPixelColor(0,brightred,brightgreen,brightblue);
          strip.setPixelColor(1,brightred,brightgreen,brightblue);
          strip.setPixelColor(2,brightred,brightgreen,brightblue);
          strip.setPixelColor(3,brightred,brightgreen,brightblue);
          strip.setPixelColor(4,brightred,brightgreen,brightblue);
          strip.setPixelColor(5,brightred,brightgreen,brightblue);
          strip.setPixelColor(6,brightred,brightgreen,brightblue);
          strip.setPixelColor(7,brightred,brightgreen,brightblue);
          strip.setPixelColor(8,brightred,brightgreen,brightblue);
          strip.setPixelColor(9,brightred,brightgreen,brightblue);
          strip.setPixelColor(10,brightred,brightgreen,brightblue);
          strip.setPixelColor(11,brightred,brightgreen,brightblue);
          strip.setPixelColor(12,brightred,brightgreen,brightblue);
          strip.setPixelColor(13,brightred,brightgreen,brightblue);
          strip.setPixelColor(14,brightred,brightgreen,brightblue);
          strip.setPixelColor(15,brightred,brightgreen,brightblue);
          strip.show();
            if (brightcolor==0) {
                        if (up == 0) {
                          if (brightred < 135) {
                           brightred++; 
                          }
                          else if (brightred == 135) {
                            brightred=135; 
                            up = 1;
                          } 
                        }
                        else if(up == 1) {
                          if(brightred > 0) {
                            brightred--;
                          } 
                          else if (brightred == 0) {
                            up = 0;brightcolor++;
                          } 
                        }
              
            } 
            else if (brightcolor==1) {
                        if (up == 0) {
                          if (brightgreen < 135) {
                           brightgreen++; 
                          }
                          else if (brightgreen == 135) {
                            brightgreen=135; 
                            up = 1;
                          } 
                        }
                        else if(up == 1) {
                          if(brightgreen > 0) {
                            brightgreen--;
                          } 
                          else if (brightgreen == 0) {
                            up = 0;brightcolor++;
                          } 
                        }
              
            } 
            else if (brightcolor==2) {
                        if (up == 0) {
                          if (brightblue < 135) {
                           brightblue++; 
                          }
                          else if (brightblue == 135) {
                            brightblue=135; 
                            up = 1;
                          } 
                        }
                        else if(up == 1) {
                          if(brightblue > 0) {
                            brightblue--;
                          } 
                          else if (brightblue == 0) {
                            up = 0;brightcolor=0;
                          } 
                        }
              
            }            
          }
                     else if(frame==36){
                      strip.setPixelColor(rainbowi, wheelz((rainbowi+rainboww) & 255));
                      strip.show();
                      if (rainbowi < 15 )
                      { rainbowi++; } else if (rainbowi == 15) { rainbowi = 0; }
                      if (rainboww < 255 )
                      {rainboww++; } if (rainboww == 255) {rainboww =0; }
                       
                      }
                     else if(frame==37){frame=0;}
if(frame==38){ 
    strip.setPixelColor(0,0,0,135);
    strip.show(); 
    frame++;
    }
  else if(frame==39) {  
    strip.setPixelColor(1,0,0,135);
    strip.show(); 
    frame++;
    }
  else if(frame==40) {  
    strip.setPixelColor(2,0,0,135);
    strip.show(); 
    frame++;
    }
  else if(frame==41) {  
    strip.setPixelColor(3,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==42) {  
    strip.setPixelColor(4,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==43) {  
    strip.setPixelColor(5,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==44) {  
    strip.setPixelColor(6,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==45) {  
    strip.setPixelColor(7,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==46) {  
    strip.setPixelColor(8,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==47) {  
    strip.setPixelColor(9,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==48) {  
    strip.setPixelColor(10,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==49) {  
    strip.setPixelColor(11,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==50) {  
    strip.setPixelColor(12,0,0,135);
    strip.show(); 
    frame++;
    }
      else if(frame==51) {  
    strip.setPixelColor(13,0,0,135);
    strip.show(); 
    frame++;
    }
          else if(frame==52) {  
    strip.setPixelColor(14,0,0,135);
    strip.show(); 
    frame++;
    }
          else if(frame==53) {  
    strip.setPixelColor(15,0,0,135);
    strip.show(); 
    frame++;
    
    }
    if(frame==54){ 
    strip.setPixelColor(0,0,135,0);
    strip.show(); 
    frame++;
    }
  else if(frame==55) {  
    strip.setPixelColor(1,0,135,0);
    strip.show(); 
    frame++;
    }
  else if(frame==56) {  
    strip.setPixelColor(2,0,135,0);
    strip.show(); 
    frame++;
    }
  else if(frame==57) {  
    strip.setPixelColor(3,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==58) {  
    strip.setPixelColor(4,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==59) {  
    strip.setPixelColor(5,0,135,0);
    delay(50);
    strip.show(); 
    frame++;
    }
      else if(frame==60) {  
    strip.setPixelColor(6,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==61) {  
    strip.setPixelColor(7,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==62) {  
    strip.setPixelColor(8,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==63) {  
    strip.setPixelColor(9,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==64) {  
    strip.setPixelColor(10,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==65) {  
    strip.setPixelColor(11,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==66) {  
    strip.setPixelColor(12,0,135,0);
    strip.show(); 
    frame++;
    }
      else if(frame==67) {  
    strip.setPixelColor(13,0,135,0);
    strip.show(); 
    frame++;
    }
          else if(frame==68) {  
    strip.setPixelColor(14,0,135,0);
    strip.show(); 
    frame++;
    }
          else if(frame==69) {  
    strip.setPixelColor(15,0,135,0);
    strip.show(); 
    frame = 1;
    
    } else if(frame==70) {  
            strip.setPixelColor(0,50,50,50);
          strip.setPixelColor(1,0,0,0);
          strip.setPixelColor(2,50,50,50);
          strip.setPixelColor(3,0,0,0);
          strip.setPixelColor(4,50,50,50);
          strip.setPixelColor(5,0,0,0);
          strip.setPixelColor(6,50,50,50);
          strip.setPixelColor(7,0,0,0);
          strip.setPixelColor(8,50,50,50);
          strip.setPixelColor(9,0,0,0);
          strip.setPixelColor(10,50,50,50);
          strip.setPixelColor(11,0,0,0);
          strip.setPixelColor(12,50,50,50);
          strip.setPixelColor(13,0,0,0);
          strip.setPixelColor(14,50,50,50);
          strip.setPixelColor(15,0,0,0);
          strip.show();
}
else if(frame==71) {  
            strip.setPixelColor(0,135,0,0);
          strip.setPixelColor(1,135,0,0);
          strip.setPixelColor(2,135,0,0);
          strip.setPixelColor(3,135,0,0);
          strip.setPixelColor(4,135,0,0);
          strip.setPixelColor(5,135,0,0);
          strip.setPixelColor(6,135,0,0);
          strip.setPixelColor(7,135,0,0);
          strip.setPixelColor(8,135,0,0);
          strip.setPixelColor(9,135,0,0);
          strip.setPixelColor(10,135,0,0);
          strip.setPixelColor(11,135,0,0);
          strip.setPixelColor(12,135,0,0);
          strip.setPixelColor(13,135,0,0);
          strip.setPixelColor(14,135,0,0);
          strip.setPixelColor(15,135,0,0);
          strip.show();
}
else if(frame==72) {  
            strip.setPixelColor(0,0,135,0);
          strip.setPixelColor(1,0,135,0);
          strip.setPixelColor(2,0,135,0);
          strip.setPixelColor(3,0,135,0);
          strip.setPixelColor(4,0,135,0);
          strip.setPixelColor(5,0,135,0);
          strip.setPixelColor(6,0,135,0);
          strip.setPixelColor(7,0,135,0);
          strip.setPixelColor(8,0,135,0);
          strip.setPixelColor(9,0,135,0);
          strip.setPixelColor(10,0,135,0);
          strip.setPixelColor(11,0,135,0);
          strip.setPixelColor(12,0,135,0);
          strip.setPixelColor(13,0,135,0);
          strip.setPixelColor(14,0,135,0);
          strip.setPixelColor(15,0,135,0);
          strip.show();
}
else if(frame==73) {  
            strip.setPixelColor(0,0,0,135);
          strip.setPixelColor(1,0,0,135);
          strip.setPixelColor(2,0,0,135);
          strip.setPixelColor(3,0,0,135);
          strip.setPixelColor(4,0,0,135);
          strip.setPixelColor(5,0,0,135);
          strip.setPixelColor(6,0,0,135);
          strip.setPixelColor(7,0,0,135);
          strip.setPixelColor(8,0,0,135);
          strip.setPixelColor(9,0,0,135);
          strip.setPixelColor(10,0,0,135);
          strip.setPixelColor(11,0,0,135);
          strip.setPixelColor(12,0,0,135);
          strip.setPixelColor(13,0,0,135);
          strip.setPixelColor(14,0,0,135);
          strip.setPixelColor(15,0,0,135);
          strip.show();
}
else if(frame==74) {  
            strip.setPixelColor(0,0,68,68);
          strip.setPixelColor(1,0,68,68);
          strip.setPixelColor(2,0,68,68);
          strip.setPixelColor(3,0,68,68);
          strip.setPixelColor(4,0,68,68);
          strip.setPixelColor(5,0,68,68);
          strip.setPixelColor(6,0,68,68);
          strip.setPixelColor(7,0,68,68);
          strip.setPixelColor(8,0,68,68);
          strip.setPixelColor(9,0,68,68);
          strip.setPixelColor(10,0,68,68);
          strip.setPixelColor(11,0,68,68);
          strip.setPixelColor(12,0,68,68);
          strip.setPixelColor(13,0,68,68);
          strip.setPixelColor(14,0,68,68);
          strip.setPixelColor(15,0,68,68);
          strip.show();
}
else if(frame==75) {  
            strip.setPixelColor(0,68,0,68);
          strip.setPixelColor(1,68,0,68);
          strip.setPixelColor(2,68,0,68);
          strip.setPixelColor(3,68,0,68);
          strip.setPixelColor(4,68,0,68);
          strip.setPixelColor(5,68,0,68);
          strip.setPixelColor(6,68,0,68);
          strip.setPixelColor(7,68,0,68);
          strip.setPixelColor(8,68,0,68);
          strip.setPixelColor(9,68,0,68);
          strip.setPixelColor(10,68,0,68);
          strip.setPixelColor(11,68,0,68);
          strip.setPixelColor(12,68,0,68);
          strip.setPixelColor(13,68,0,68);
          strip.setPixelColor(14,68,0,68);
          strip.setPixelColor(15,68,0,68);
          strip.show();
}
else if(frame==76) {  
            strip.setPixelColor(0,68,68,0);
          strip.setPixelColor(1,68,68,0);
          strip.setPixelColor(2,68,68,0);
          strip.setPixelColor(3,68,68,0);
          strip.setPixelColor(4,68,68,0);
          strip.setPixelColor(5,68,68,0);
          strip.setPixelColor(6,68,68,0);
          strip.setPixelColor(7,68,68,0);
          strip.setPixelColor(8,68,68,0);
          strip.setPixelColor(9,68,68,0);
          strip.setPixelColor(10,68,68,0);
          strip.setPixelColor(11,68,68,0);
          strip.setPixelColor(12,68,68,0);
          strip.setPixelColor(13,68,68,0);
          strip.setPixelColor(14,68,68,0);
          strip.setPixelColor(15,68,68,0);
          strip.show();
}
else if(frame==77) {  
            strip.setPixelColor(0,50,50,50);
          strip.setPixelColor(1,50,50,50);
          strip.setPixelColor(2,50,50,50);
          strip.setPixelColor(3,50,50,50);
          strip.setPixelColor(4,50,50,50);
          strip.setPixelColor(5,50,50,50);
          strip.setPixelColor(6,50,50,50);
          strip.setPixelColor(7,50,50,50);
          strip.setPixelColor(8,50,50,50);
          strip.setPixelColor(9,50,50,50);
          strip.setPixelColor(10,50,50,50);
          strip.setPixelColor(11,50,50,50);
          strip.setPixelColor(12,50,50,50);
          strip.setPixelColor(13,50,50,50);
          strip.setPixelColor(14,50,50,50);
          strip.setPixelColor(15,50,50,50);
          strip.show();
}
  }
void loop(){

char key = kpd.getKey();
  if(key)  // Check for a valid key.
  {
    switch (key)
    {
      case '1':
      frame = 1;
        break;
        case '#':
        frame = 33;
        break;
                      case '2':
        frame = 35;
        up = 0;
        break;
                              case '3':
        frame = 36;
        break;
                                      case '4':
        frame = 71;
        break;
                                              case '5':
        frame = 72;
        break;
                                                      case '6':
        frame = 73;
        break;
                                                              case '7':
        frame = 74;
        break;
                                                                      case '8':
        frame = 75;
        break;
                                                                              case '9':
        frame = 76;
        break;
                                                                                      case '*':
        frame = 77;
        break;
              case '0':
              resetFunc();
        break;
       default:
        break;
    }
  }
}
Skip to content