Skip to content

Instantly share code, notes, and snippets.

@richy486
Last active December 14, 2015 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save richy486/04cb1b2429f842815162 to your computer and use it in GitHub Desktop.
Save richy486/04cb1b2429f842815162 to your computer and use it in GitHub Desktop.
On the accumulation of pressure on buttons
#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