DragonCon2012.cpp: In function 'void setup()':
DragonCon2012.pde:-1: error: 'class Button' has no member named 'setHoldDelay'
DragonCon2012.pde:-1: error: a function-definition is not allowed here before '{' token
DragonCon2012.pde:-1: error: expected `}' at end of input
//We always have to include the library
//File created for DragonCon 2011
#include "LedControl.h"
#include <Button.h>
// Change these pin numbers as neccessary
char Pin_dataIn = 9; // data in pin
char Pin_clk = 7; // clk pin
char Pin_load = 8; // load pin
char numOfMatrices = 5; // increment this for each 7219 you've got connected. I imagine this will be 5.
int brightness = 8; // set the brightness of the LEDs. Use a value between 0 - 15
char screen[40];
char screenSize = 40;
char textBuffer[3][100];
char textBufferSize[3] = {90,51,66};
int pointer = 0;
long nextFrameTime = 0;
int effectType = 0;
int framePointer = 0;
// init led control object
LedControl lc = LedControl(Pin_dataIn,Pin_clk,Pin_load,numOfMatrices);
Button button = Button(4, HIGH);
/* we always wait a bit between updates of the display */
unsigned int delayTime=40;
void setup() {
Â
 /*
 The MAX72XX is in power-saving mode on startup,
 we have to do a wakeup call
 */
 for(int index=0;index<lc.getDeviceCount(); index++) {
  lc.shutdown(index,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(index,brightness);
  /* and clear the display */
  lc.clearDisplay(index);
  Â
 }
Â
 randomSeed(analogRead(0));
 button.setHoldDelay(3000);
 loadTextBuffers();
}
void loop() {
Â
 button.listen();
Â
 if(button.onRelease()) {
  effectType++;
 Â
  if(effectType > 10) {
   effectType = 0;Â
  }
 Â
  pointer = 0;
  framePointer = 0;
 }
Â
 long current = millis();
Â
 if(current > nextFrameTime) {
Â
 nextFrameTime = current + delayTime;
 Â
 switch(effectType) {
  case 0:
   effectThinLine();
   break;
  case 1:
   effectRandomPixels();
   break;
  case 2:
   effectScanner();
   break;Â
  case 3:
   effectBlinkingEyes();
   break;
  case 4:
   effectTextScroll(0);
   break;
  case 5:
   effectTextScroll(1);
   break;
  case 6:
   effectTextScroll(2);
   break;
  case 7:
   effectArrows();
   break; Â
  case 8:
   effectECG();
   break;Â
  case 9:
   effectScannerHorizontal();
   break;
  default:
   effectBlank();
   break;
 }
 display();
Â
 }
Â
}
void display() {
Â
 unsigned char matrixID = 0;
 // screen now holds the updated values
 // write to the matrix
 for(unsigned char i = 0; i < numOfMatrices; i++) {
  for(int j = 0; j < 8; j++) {
  Â
   int k = j;
   k += 1;
   if(k > 7) {
    k = 0;
   }
  Â
   char matrixID = 4 - i;
   //matrixID = 0;
   char bufferData = screen[((7-k)+(i*8))];
   char rowData = (bufferData >> 1) | (bufferData << 7);
 Â
   lc.setRow(matrixID,j,rowData);
  }
 }
Â
 /*
 for(unsigned char i = 0; i < screenSize; i++) {
 matrixID = floor(i/8);
  lc.setColumn(matrixID,i,screen[i]);
 }
Â
 for(unsigned char i = 0; i < numOfMatrices; i++) {
  for(unsigned char j = 0; j < 8; j++) {
   char matrixID = 4 - i;
   //matrixID = 0;
   lc.setColumn(matrixID,j,screen[(j+(i*8))]);
  }Â
 }
 */
}
void scrollFromRight(int bufferNum) {
int offset = screenSize - pointer;
 for(unsigned char i = 0; i < screenSize; i++) {Â
  screen[i] = getBufferData(bufferNum, i-offset); Â
 }Â
}
void scrollFromLeft(int bufferNum) {
int offset = (0-textBufferSize[bufferNum]) + pointer;
 for(unsigned char i = 0; i < screenSize; i++) {Â
  screen[i] = getBufferData(bufferNum, i-offset);Â
 }Â
}
void staticCenter(int bufferNum) {
 int offset = round((screenSize - textBufferSize[bufferNum]) / 2);
 for(unsigned char i = 0; i < screenSize; i++) {
  screen[i] = getBufferData(bufferNum, i-offset);
 }
}
char getBufferData(int bufferNum, int pos) {
  char tmp;
  if((pos >= 0) && ((pos) < textBufferSize[bufferNum])) {
   return textBuffer[bufferNum][pos];
  } else {
   return B00000000;
  }
}
void effectThinLine() {
 for(int i = 0; i < 40; i++) {
  screen[i] = B00011000;
 }
}Â
void effectRandomPixels() {
 for(int i = 0; i < 40; i++) {
  screen[i] = random(256);
 }
}
void effectScanner() {
 for(int i = 0; i < 40; i++) {
  screen[i] = B00000000;
 }
Â
Â
 int tmpPointer = framePointer;
Â
 if(framePointer > 37) {
  tmpPointer = 37 - (framePointer - 37);
 }
Â
 for(int i = tmpPointer; i < (tmpPointer+3); i++) {
  screen[i] = B11111111;Â
 }
Â
 framePointer++;
Â
 if(framePointer > 73) {
  framePointer = 0;
 }
Â
}
void effectScannerHorizontal() {
Â
 int tmpPointer = framePointer;
 Â
  if(framePointer > 6) {
    tmpPointer = 6 - (framePointer - 6);
  }
Â
 for(int i = 0; i < 40; i++) {
  screen[i] = B10000000 >> (tmpPointer + 1);
 }
Â
 display();
 delay(50);
Â
 framePointer++;
Â
 if(framePointer > 11) {
  framePointer = 0;
 }
Â
}
void effectBlank() {
 for(int i = 0; i < 40; i++) {
  screen[i] = B00000000;
 }
}
void effectTextScroll(char bufferNum) {
 pointer += 1;
Â
 if(pointer > (textBufferSize[bufferNum] + screenSize)) {
  pointer = 0;Â
 }
Â
 scrollFromRight(bufferNum);
}
void effectBlinkingEyes() {
 if(random(50) == 0) {