New Testing Hardware Arrived and New Code

So, my new Nano testing board with screw terminal break out shield arrived. My soldering is not perfect, but I am still waiting on some flux and desoldering wick to arrive to have another go at it. I’ve certainly seen worse though 🙂

The new iteration of the code adds more animations and control with the keypad. We’ll soon start making videos and uploading them so you can get a glimpse into Team Accessible Pixel’s workshop 🙂

// interrupt_animation_3.ino
// designed by AccessiblePixel.com

//Include Libraries
  #include <Adafruit_NeoPixel.h>
  #include <Keypad.h>
  #ifdef __AVR__
    #include <avr/power.h>
  #endif

// Initialise Variables

  #define PINBACK 9 // PIN for REAR light
  #define PINFLOOR 10 // PIN for FLOOR light
  #define PINFRONT 11 // PIN for FRONT light

  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;
  
// Initialise Pixels

  Adafruit_NeoPixel stripBack = Adafruit_NeoPixel(16, PINBACK, NEO_GRB + NEO_KHZ800);
  Adafruit_NeoPixel stripFloor = Adafruit_NeoPixel(16, PINFLOOR, NEO_GRB + NEO_KHZ800);
  Adafruit_NeoPixel stripFront = Adafruit_NeoPixel(16, PINFRONT, 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 Back Pixels
    stripBack.begin();
    stripBack.show(); 
  // Initialize Floor Pixels
    stripFloor.begin();
    stripFloor.show();
  // Initialize Front Pixels
    stripFront.begin();
    stripFront.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

uint32_t wheelz(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return stripBack.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return stripBack.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return stripBack.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<stripBack.numPixels(); i++) {
    stripBack.setPixelColor(i, c);
    stripBack.show();
    delay(wait);
  }
}

// Run Animation Frames
  ISR(TIMER1_COMPA_vect){
  if(frame==1){ 
    stripBack.setPixelColor(0,r,g,b);
    stripBack.show(); 
    frame++;
    }
  else if(frame==2) {  
    stripBack.setPixelColor(1,r,g,b);
    stripBack.show(); 
    frame++;
    }
  else if(frame==3) {  
    stripBack.setPixelColor(2,r,g,b);
    stripBack.show(); 
    frame++;
    }
  else if(frame==4) {  
    stripBack.setPixelColor(3,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==5) {  
    stripBack.setPixelColor(4,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==6) {  
    stripBack.setPixelColor(5,r,g,b);
    delay(50);
    stripBack.show(); 
    frame++;
    }
      else if(frame==7) {  
    stripBack.setPixelColor(6,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==8) {  
    stripBack.setPixelColor(7,r,g,b);
    delay(50);
    stripBack.show(); 
    frame++;
    }
      else if(frame==9) {  
    stripBack.setPixelColor(8,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==10) {  
    stripBack.setPixelColor(9,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==11) {  
    stripBack.setPixelColor(10,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==12) {  
    stripBack.setPixelColor(11,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==13) {  
    stripBack.setPixelColor(12,r,g,b);
    stripBack.show(); 
    frame++;
    }
      else if(frame==14) {  
    stripBack.setPixelColor(13,r,g,b);
    stripBack.show(); 
    frame++;
    }
          else if(frame==15) {  
    stripBack.setPixelColor(14,r,g,b);
    stripBack.show(); 
    frame++;
    }
          else if(frame==16) {  
    stripBack.setPixelColor(15,r,g,b);
    stripBack.show(); 
    }
      else if(frame==17){ 
    stripBack.setPixelColor(15,0,0,0);
    stripBack.show(); 
    frame++;
    }
  else if(frame==18) {  
    stripBack.setPixelColor(14,0,0,0);
    stripBack.show(); 
    frame++;
    }
  else if(frame==19) {  
    stripBack.setPixelColor(13,0,0,0);
    stripBack.show(); 
    frame++;
    }
  else if(frame==20) {  
    stripBack.setPixelColor(12,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==21) {  
    stripBack.setPixelColor(11,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==22) {  
    stripBack.setPixelColor(10,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==23) {  
    stripBack.setPixelColor(9,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==24) {  
    stripBack.setPixelColor(8,0,0,0);
    delay(50);
    stripBack.show(); 
    frame++;
    }
      else if(frame==25) {  
    stripBack.setPixelColor(7,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==26) {  
    stripBack.setPixelColor(6,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==27) {  
    stripBack.setPixelColor(5,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==28) {  
    stripBack.setPixelColor(4,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==29) {  
    stripBack.setPixelColor(3,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==30) {  
    stripBack.setPixelColor(2,0,0,0);
    stripBack.show(); 
    frame++;
    }
      else if(frame==31) {  
    stripBack.setPixelColor(1,0,0,0);
    stripBack.show(); 
    frame++;
    }
          else if(frame==32) {  
    stripBack.setPixelColor(0,0,0,0);
    stripBack.show(); 
    } else if(frame==33) {
      stripBack.setPixelColor(random(0,15),random(0,25),random(0,25),random(0,25));
      stripBack.setPixelColor(random(0,15),0,0,0,0);
      stripBack.setPixelColor(random(0,15),0,0,0,0);
      delay(30);
     stripBack.show();
    }
          else if(frame==34){stripBack.setPixelColor(0,0,0,0);
          stripBack.setPixelColor(1,0,0,0);
          stripBack.setPixelColor(2,0,0,0);
          stripBack.setPixelColor(3,0,0,0);
          stripBack.setPixelColor(4,0,0,0);
          stripBack.setPixelColor(5,0,0,0);
          stripBack.setPixelColor(6,0,0,0);
          stripBack.setPixelColor(7,0,0,0);
          stripBack.setPixelColor(8,0,0,0);
          stripBack.setPixelColor(9,0,0,0);
          stripBack.setPixelColor(10,0,0,0);
          stripBack.setPixelColor(11,0,0,0);
          stripBack.setPixelColor(12,0,0,0);
          stripBack.setPixelColor(13,0,0,0);
          stripBack.setPixelColor(14,0,0,0);
          stripBack.setPixelColor(15,0,0,0);
          stripBack.show();
  }
          else if(frame==35){
          stripBack.setPixelColor(0,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(1,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(2,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(3,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(4,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(5,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(6,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(7,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(8,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(9,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(10,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(11,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(12,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(13,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(14,brightred,brightgreen,brightblue);
          stripBack.setPixelColor(15,brightred,brightgreen,brightblue);
          stripBack.show();
            if (brightcolor==0) {
                        if (up == 0) {
                          if (brightred < 60) {
                           brightred++; 
                          }
                          else if (brightred == 60) {
                            brightred=60; 
                            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 < 60) {
                           brightgreen++; 
                          }
                          else if (brightgreen == 60) {
                            brightgreen=60; 
                            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 < 60) {
                           brightblue++; 
                          }
                          else if (brightblue == 60) {
                            brightblue=60; 
                            up = 1;
                          } 
                        }
                        else if(up == 1) {
                          if(brightblue > 0) {
                            brightblue--;
                          } 
                          else if (brightblue == 0) {
                            up = 0;brightcolor=0;
                          } 
                        }
             
            }            
          }
                     else if(frame==36){
                      stripBack.setPixelColor(rainbowi, wheelz((rainbowi+rainboww) & 255));
                      stripFloor.setPixelColor(rainbowi, wheelz((rainbowi+rainboww) & 255));
                      stripFront.setPixelColor(rainbowi, wheelz((rainbowi+rainboww) & 255));
                      stripBack.show();
                      stripFloor.show();
                      stripFront.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;}
}

void loop()
{
  char key = kpd.getKey();
  if(key)  // Check for a valid key.
  {
    switch (key)
    {
      case '1':
        if(backcolorframe==0) {  
          r = 60;
          g = 0;
          b = 0;
          backcolorframe++;
        frame = 1;
       }
        else if(backcolorframe==1) {
          r = 0;
          g = 60;
          b = 0;
          backcolorframe++; frame = 1;
        }
        else if(backcolorframe==2) {
          r = 0;
          g = 0;
          b = 60;
          backcolorframe++; frame = 1;
        }
        else if(backcolorframe==3) {
          r = 30;
          g = 0;
          b = 30;
          backcolorframe++; frame = 1;
        }
        else if(backcolorframe==4) {
          r = 30;
          g = 30;
          b = 30;
          backcolorframe=0; frame = 1;
        }
        break;
      case '2':
        frame = 17;
        backcolorframe=0;
        break;
              case '3':
        frame = 33;
        break;
                      case '4':
        frame = 35;
        up = 0;
        break;
                              case '*':
        frame = 36;
        break;
              case '0':
        frame = 34;
        backcolorframe=0;
        brightcolor=0;
brightred = 0;
brightgreen = 0;
brightblue = 0;
r = 0;
g = 0;
b = 0;
up = 0;
rainbowi = 0;
rainboww = 0;
        break;
      default:
        break;
    }
  }
}

No Comments

Post a Comment