Instantly share code, notes, and snippets.
Last active
December 14, 2015 17:54
-
Save richy486/04cb1b2429f842815162 to your computer and use it in GitHub Desktop.
On the accumulation of pressure on buttons
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define APR9600 audion chip controlled by arduino | |
#define uint unsigned int | |
// Schematic: http://imgur.com/wdTnT3L | |
int ranNum; | |
const int ledPin = 13; | |
const int player1ButtonPin = 11; | |
const int player2ButtonPin = 12; | |
int winState = 0; | |
const int win1 = -1; | |
const int win2 = -2; | |
const int winNone = -3; | |
int player1ButtonState = 0; | |
int player1Counter = 0; | |
int player2ButtonState = 0; | |
int player2Counter = 0; | |
unsigned long winTimer = 0; | |
unsigned long gameOverTimer = 0; | |
void setup() | |
{ | |
// Seed RNG from analog port. | |
randomSeed(analogRead(0)); | |
Serial.begin(9600); | |
// Setup numbers | |
pinMode(2,OUTPUT); | |
pinMode(3,OUTPUT); | |
pinMode(4,OUTPUT); | |
pinMode(5,OUTPUT); | |
pinMode(6,OUTPUT); | |
pinMode(8,OUTPUT); | |
pinMode(9,OUTPUT); | |
digitalWrite(2,LOW); | |
digitalWrite(3,LOW); | |
digitalWrite(4,LOW); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
// setup button | |
pinMode(player1ButtonPin, INPUT); | |
pinMode(player2ButtonPin, INPUT); | |
// setup test LED | |
pinMode(ledPin, OUTPUT); | |
ranNum = random(1,7)+2; | |
} | |
void loop() | |
{ | |
int state1 = digitalRead(player1ButtonPin); | |
if (player1ButtonState == LOW && state1 == HIGH) { | |
player1Counter += 1; | |
} | |
player1ButtonState = state1; | |
int state2 = digitalRead(player2ButtonPin); | |
if (player2ButtonState == LOW && state2 == HIGH) { | |
player2Counter += 1; | |
} | |
player2ButtonState = state2; | |
int prevState = winState; | |
if (player2Counter > ranNum && player1Counter > ranNum) { | |
winState = winNone; | |
} else if ((winState == 0 && player1Counter == ranNum) || player2Counter > ranNum) { | |
winState = win1; | |
digitalWrite(ledPin,HIGH); | |
} else if ((winState == 0 && player2Counter == ranNum) || player1Counter > ranNum) { | |
winState = win2; | |
digitalWrite(ledPin,HIGH); | |
} | |
if (winState < 0 && prevState == 0) { | |
winTimer = millis(); | |
} | |
Serial.print("player 1 presses: "); | |
Serial.print(player1Counter); | |
Serial.print(", player 2 presses: "); | |
Serial.print(player2Counter); | |
Serial.print(", ranNum: "); | |
Serial.println(ranNum); | |
if (gameOverTimer > 0) { | |
unsigned long timeSinceGameOver = millis() - gameOverTimer; | |
if (timeSinceGameOver > 2000) { | |
digitalWrite(2,LOW); | |
digitalWrite(3,LOW); | |
digitalWrite(4,LOW); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
winState = 1; | |
ranNum = -1; | |
if (timeSinceGameOver > 2750) { | |
ranNum = random(1,7)+2; | |
winState = 0; | |
gameOverTimer = 0; | |
player1Counter = 0; | |
player2Counter = 0; | |
} | |
} | |
} | |
if (winTimer > 0) | |
{ | |
digitalWrite(2,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(3,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(4,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(5,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(6,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(8,random(0, 2) == 0 ? LOW : HIGH); | |
digitalWrite(9,random(0, 2) == 0 ? LOW : HIGH); | |
unsigned long timeSinceWin = millis() - winTimer; | |
if (timeSinceWin > 750) { | |
winTimer = 0; | |
gameOverTimer = millis(); | |
} | |
} else if (winState == win1) | |
{ | |
digitalWrite(2,LOW); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
} else if (winState == win2) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,LOW); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,HIGH); | |
digitalWrite(8,LOW); | |
digitalWrite(9,HIGH); | |
} else if (winState == winNone) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,LOW); | |
digitalWrite(4,LOW); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
} | |
else if (ranNum == 1) | |
{ | |
digitalWrite(2,LOW); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
} | |
else if (ranNum == 2) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,LOW); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,HIGH); | |
digitalWrite(8,LOW); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 3) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 4) | |
{ | |
digitalWrite(2,LOW); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,HIGH); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 5) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,LOW); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,LOW); | |
digitalWrite(8,HIGH); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 6) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,LOW); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,HIGH); | |
digitalWrite(8,HIGH); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 7) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,LOW); | |
digitalWrite(9,LOW); | |
} | |
else if (ranNum == 8) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,HIGH); | |
digitalWrite(6,HIGH); | |
digitalWrite(8,HIGH); | |
digitalWrite(9,HIGH); | |
} | |
else if (ranNum == 9) | |
{ | |
digitalWrite(2,HIGH); | |
digitalWrite(3,HIGH); | |
digitalWrite(4,HIGH); | |
digitalWrite(5,LOW); | |
digitalWrite(6,LOW); | |
digitalWrite(8,HIGH); | |
digitalWrite(9,HIGH); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment