ROBOT MAGIC
CHAPTER Nine: Ray Gun Control Station
Copy + Paste this code to your Arduino Sketch:
#include <Button.h>
/*
A momentary button is a component that, when pressed,
connects two wires together like a switch, and when
released, separates those two wires again. “Button.h” is a
tiny library created for the Arduino to be able to read the
state of a button. We create digital pin 5 as an input
"Button button = Button(5,INPUT);” and use
"byte pressCount = 0;” and "pressCount++;” to help count
each time the button is pressed. Each time we press the
button, a new case "case 1: -case 10:” is performed. Within
those cases, we create our own custom blinking LED patterns.
*/
Button button = Button(5,INPUT);
int ONE = 12;
int TWO = 11;
int THREE = 10;
int FOUR = 9;
int FIVE = 8;
void setup(){
pinMode(ONE,OUTPUT);
pinMode(TWO,OUTPUT);
pinMode(THREE,OUTPUT);
pinMode(FOUR,OUTPUT);
pinMode(FIVE,OUTPUT);
}
// Keep count of the number of times you press the button.
byte pressCount = 0;
void loop()
{
delay(10);
if(button.uniquePress())
pressCount++;
/* A SWITCH() STATEMENT KEEPS COUNT OF AN EVENT, AND
MAKES THE ARDUINO DO DIFFERENT THINGS DEPENDING ON
THE COUNT.
*/
switch(pressCount)
{
/* WHEN THE BUTTON IS PRESSED (FIRST TIME), CASE 1 IS
A RANDOM PATTERN OF BLINKING */
case 1:
digitalWrite(FIVE, HIGH);
delay(20);
digitalWrite(FIVE, LOW);
delay(40);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(30);
digitalWrite(FOUR, HIGH);
delay(20);
digitalWrite(FOUR, LOW);
delay(20);
digitalWrite(TWO, HIGH);
delay(20);
digitalWrite(TWO, LOW);
delay(50);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(20);
digitalWrite(ONE, HIGH);
delay(30);
digitalWrite(ONE, LOW);
delay(20);
break;
/* WHEN THE BUTTON IS PRESSED (SECOND TIME), CASE 2
STOPS AT THE COLOR BELOW */
case 2:
digitalWrite(FOUR, HIGH);
break;
/* WHEN THE BUTTON IS PRESSED (THIRD TIME), CASE 3
BLINKS ALL THE LEDS "RANDOMLY" AGAIN */
case 3:
digitalWrite(FIVE, HIGH);
delay(20);
digitalWrite(FIVE, LOW);
delay(40);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(30);
digitalWrite(FOUR, HIGH);
delay(20);
digitalWrite(FOUR, LOW);
delay(20);
digitalWrite(TWO, HIGH);
delay(20);
digitalWrite(TWO, LOW);
delay(50);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(20);
digitalWrite(ONE, HIGH);
delay(30);
digitalWrite(ONE, LOW);
delay(20);
break;
/* WHEN THE BUTTON IS PRESSED (FOURTH TIME), CASE 4
STOPS AT THE COLOR BELOW!*/
case 4:
digitalWrite(TWO, HIGH);
break;
/* WHEN THE BUTTON IS PRESSED (FIFTH TIME), CASE 5 IS
MORE RANDOM BLINKING */
case 5:
digitalWrite(FIVE, HIGH);
delay(20);
digitalWrite(FIVE, LOW);
delay(40);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(30);
digitalWrite(FOUR, HIGH);
delay(20);
digitalWrite(FOUR, LOW);
delay(20);
digitalWrite(TWO, HIGH);
delay(20);
digitalWrite(TWO, LOW);
delay(50);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(20);
digitalWrite(ONE, HIGH);
delay(30);
digitalWrite(ONE, LOW);
delay(20);
break;
/* WHEN THE BUTTON IS PRESSED (SIXTH TIME), CASE 6
STOPS AT THE COLOR BELOW! */
case 6:
digitalWrite(FIVE, HIGH);
break;
/* WHEN THE BUTTON IS PRESSED (SEVENTH TIME), CASE 7 IS
AGAIN "RANDOM BLINKING"*/
case 7:
digitalWrite(FIVE, HIGH);
delay(20);
digitalWrite(FIVE, LOW);
delay(40);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(30);
digitalWrite(FOUR, HIGH);
delay(20);
digitalWrite(FOUR, LOW);
delay(20);
digitalWrite(TWO, HIGH);
delay(20);
digitalWrite(TWO, LOW);
delay(50);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(20);
digitalWrite(ONE, HIGH);
delay(30);
digitalWrite(ONE, LOW);
delay(20);
break;
/* WHEN THE BUTTON IS PRESSED (EIGHTH TIME), CASE 8
STOPS AT THE FORCED COLOR BELOW! */
case 8:
digitalWrite(TWO, HIGH); // THIS COLOR IS FORCED!
break;
// BUTTON IS PRESSED (NINTH TIME) AGAIN "RANDOM BLINKING"
case 9:
digitalWrite(FIVE, HIGH);
delay(20);
digitalWrite(FIVE, LOW);
delay(40);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(30);
digitalWrite(FOUR, HIGH);
delay(20);
digitalWrite(FOUR, LOW);
delay(20);
digitalWrite(TWO, HIGH);
delay(20);
digitalWrite(TWO, LOW);
delay(50);
digitalWrite(THREE, HIGH);
delay(20);
digitalWrite(THREE, LOW);
delay(20);
digitalWrite(ONE, HIGH);
delay(30);
digitalWrite(ONE, LOW);
delay(20);
break;
/* WHEN THE BUTTON IS PRESSED (TENTH TIME), CASE 10
STOPS AT THE COLOR BELOW! */
case 10:
digitalWrite(ONE, HIGH);
pressCount = 0;
break;
}
}