/* LED Helmet Face Display Code: For the "Mask of Emotion" DIY project Constructed by Andrew Furry Made with: http://arduino.cc/en/Tutorial/ButtonStateChange Which was modified by Tom McGuire */ // this constant won't change: const int buttonPin = A0; // the pin that the pushbutton is attached to const int buttonPin2 = A1; const int MaximumCount = 13; // sets the maximum number (reset to 0) // Variables will change: int buttonPushCounter = 0; // counter for the number of button presses int buttonState = 0; // current state of the button int buttonState2 = 0; int lastButtonState = 0; // previous state of the button int lastButtonState2 = 0; void setup() { pinMode(buttonPin, INPUT); // initialize the button pin as an input: pinMode(buttonPin2, INPUT); //same digitalWrite(buttonPin, HIGH); digitalWrite(buttonPin2, HIGH); // turn on the internal pull up for the button input Serial.begin(9600); // initialize serial communication: pinMode(2,OUTPUT); pinMode(3,OUTPUT); //LED matrix: pinMode(4,OUTPUT); //grounds pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(8,OUTPUT); // pinMode(10,OUTPUT); //leads pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); } void loop() { buttonState = digitalRead(buttonPin); // read the next face button buttonState2 = digitalRead(buttonPin2); //read the previous face button if (buttonState != lastButtonState) { // compare the buttonState to its previous stat if (buttonState == LOW) { // if the state has changed, increment the counter // if the current state is HIGH then the button // went from off to on: buttonPushCounter++; Serial.println("on"); Serial.print("number of button pushes: "); Serial.println(buttonPushCounter, DEC); } else { // if the current state is LOW then the button // went from on to off: Serial.println("off"); } } if (buttonState2 != lastButtonState2) { // compare the buttonState to its previous stat if (buttonState2 == LOW) { // if the state has changed, increment the counter // if the current state is HIGH then the button // went from off to on: buttonPushCounter--; Serial.println("on2"); Serial.print("number of button pushes: "); Serial.println(buttonPushCounter, DEC); } else { // if the current state is LOW then the button // went from on to off: Serial.println("off2"); } } // save the current state as the last state, //for next time through the loop lastButtonState = buttonState; lastButtonState2 = buttonState2; if ( buttonPushCounter == MaximumCount) { buttonPushCounter = 0; } //reset when counter reaches 12 if ( buttonPushCounter < 0) { buttonPushCounter = 12;} //completing the loop if (buttonPushCounter == 0) { //Faces: digitalWrite(10, HIGH); //smiley digitalWrite(4, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(13, HIGH); digitalWrite(3, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(3, LOW); digitalWrite(8, LOW); digitalWrite(12, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(12, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); } else if (buttonPushCounter == 1) { //sad digitalWrite(10, HIGH); digitalWrite(2, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11,HIGH); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(5, LOW); digitalWrite(8, LOW); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(5, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(8, HIGH); delay(4); digitalWrite(12, LOW); } else if (buttonPushCounter == 2) { //poker face digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(3, LOW); digitalWrite(5, LOW); digitalWrite(8, LOW); } else if (buttonPushCounter == 3) { //mad digitalWrite(10, HIGH); digitalWrite(2, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(4, LOW); digitalWrite(2, LOW); digitalWrite(6, LOW); digitalWrite(8, LOW); digitalWrite(3, HIGH); digitalWrite(5, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(3, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(3, LOW); digitalWrite(8, LOW); digitalWrite(12, LOW); } else if (buttonPushCounter == 4) { //surprised digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(6, LOW); delay(4); digitalWrite(12, LOW); digitalWrite(5, LOW); } else if (buttonPushCounter == 5) { //tired digitalWrite(11, HIGH); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(8, LOW); } else if (buttonPushCounter == 6) { //confused digitalWrite(10, HIGH); digitalWrite(6, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(6, LOW); digitalWrite(8, LOW); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(2, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(8, LOW); delay(4); digitalWrite(12, LOW); digitalWrite(5, LOW); } else if (buttonPushCounter == 7) { //disgrunted/annoyed digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(4, LOW); digitalWrite(6, LOW); delay(4); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(12, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); } else if (buttonPushCounter == 8) { //disgusted digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(2, LOW); digitalWrite(5, LOW); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(5, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(8, LOW); delay(4); digitalWrite(12, LOW); digitalWrite(5, LOW); } else if (buttonPushCounter == 9) { //elated digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); digitalWrite(2, LOW); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(3, LOW); digitalWrite(8, LOW); delay(4); digitalWrite(12, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(8, LOW); } else if (buttonPushCounter == 10) { digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(2, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(4, HIGH); digitalWrite(6, HIGH); digitalWrite(2, LOW); digitalWrite(8, LOW); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(4, LOW); digitalWrite(6, LOW); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(12, LOW); digitalWrite(3, LOW); digitalWrite(5, LOW); digitalWrite(8, LOW); } else if (buttonPushCounter == 11) { //creeper digitalWrite(10, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); delay(4); digitalWrite(10, LOW); digitalWrite(11, HIGH); delay(4); digitalWrite(11, LOW); digitalWrite(13, HIGH); digitalWrite(8, HIGH); delay(4); digitalWrite(13, LOW); digitalWrite(12, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); delay(4); digitalWrite(12, LOW); digitalWrite(3, LOW); digitalWrite(8, LOW); } else if (buttonPushCounter == 12) { //reset for user to know when the digitalWrite(10, LOW); //loop is over } }