int flexSensorPin = A0; //analog pin 0 int flexSensorPin2 = A1; //analog pin 1 int flexSensorPin3 = A2; //analog pin 2 int flexSensorPin4 = A3; //analog pin 3 int p1Score = 0; int p2Score = 0; boolean soundOn = true; boolean gameMode = true; // true = traditional, chaos = random point in time void setup(){ Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); pinMode(12, OUTPUT); } void loop(){ int stateOfGloves = 0; // each possibility for each glove is assigned a value as follows: // Player 1 // Paper 1 // Rock 2 // Sissors 3 // No Read 99 // Player 2 // Paper 10 // Rock 20 // Sissors 30 // No Read 99 delay(2500); // LEDs // o o o o o o // 2 3 4 5 12 13 // set the lights beep(5); delay(1000); beep(5); delay(1000); beep(20); int iState = readGloves(); Serial.println(iState); if (iState == 11 || iState == 22 || iState == 33) { // draw Serial.println("DRAW"); } else if (iState == 13 || iState == 21 || iState == 32) { // Player1 wins //digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) Serial.println("Player1WINS"); p1Score ++; } else if (iState == 12 || iState == 23 || iState == 31) { // Player 2 wins //digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level) Serial.println("Player2WINS"); p2Score ++; } else { // un read or invalid } Serial.println("p1Score"); Serial.println(p1Score); Serial.println("p2Score"); Serial.println(p2Score); if (p1Score > 0) {digitalWrite(2, HIGH);} // turn the LED on (HIGH is the voltage level)} else {digitalWrite(2, LOW);} // turn the LED off if (p1Score > 1) {digitalWrite(3, HIGH);} // turn the LED on (HIGH is the voltage level)} else {digitalWrite(3, LOW);} // turn the LED off if (p1Score > 2) {digitalWrite(4, HIGH);} // turn the LED on (HIGH is the voltage level)} else {digitalWrite(4, LOW);} // turn the LED off //--------------------------------- if (p2Score > 0) {digitalWrite(5, HIGH);} // turn the LED on (HIGH is the voltage level)} else {digitalWrite(5, LOW);} // turn the LED off if (p2Score > 1) {digitalWrite(12, HIGH);} // turn the LED on (HIGH is the voltage level)} else {digitalWrite(12, LOW);} // turn the LED off if (p2Score > 2) {digitalWrite(13, HIGH);} // turn the LED on (HIGH is the voltage level) else {digitalWrite(13, LOW);} // turn the LED off //digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) // delay(1000); // wait for a second // digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW // delay(1000); if (p2Score == 3 or p1Score==3) { // there is a winner! celebrate(p2Score); delay(2000); p1Score = 0; p2Score = 0; } delay(900); //just here to slow down the output for easier reading } void celebrate (int p2Score) { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(12, LOW); digitalWrite(13, LOW); for (int iCnt = 0;iCnt<10; iCnt++) { // sequence the LEDs digitalWrite(2, HIGH); delay(20); digitalWrite(2, LOW); digitalWrite(3, HIGH); delay(20); digitalWrite(3, LOW); digitalWrite(4, HIGH); delay(20); digitalWrite(4, LOW); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); digitalWrite(12, HIGH); delay(20); digitalWrite(12, LOW); digitalWrite(13, HIGH); delay(20); digitalWrite(13, LOW); } // Flash the winners LEDs for (int iCnt = 0;iCnt<10; iCnt++) { if (p2Score==3) { digitalWrite(5, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } else { digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); } delay (90); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(12, LOW); digitalWrite(13, LOW); delay (90); } } int readGloves() { int flexSensorReading = 0; int flexSensorReading2 = 0; int flexSensorReading3 = 0; int flexSensorReading4 = 0; int iTotal = 0; flexSensorReading = analogRead(flexSensorPin); flexSensorReading2 = analogRead(flexSensorPin2); flexSensorReading3 = analogRead(flexSensorPin3); flexSensorReading4 = analogRead(flexSensorPin4); Serial.println(flexSensorReading); Serial.println(flexSensorReading2); Serial.println(flexSensorReading3); Serial.println(flexSensorReading4); // 1 no bend, 2 bend = sissors (1 is ring finger) // Player 1 if ((flexSensorReading >400) && (flexSensorReading2 >350)) { Serial.println("1-PAPER"); iTotal = 1; } else if ((flexSensorReading <=400) && (flexSensorReading2 <=350)) { Serial.println("1-ROCK"); iTotal = 2; } else if ((flexSensorReading >400) && (flexSensorReading2 <=350)) { Serial.println("1-SISSORS"); iTotal = 3; } else { Serial.println("1-NOREAD"); iTotal = 99; } // Player 2 if ((flexSensorReading3 >400) && (flexSensorReading4 >350)) { Serial.println("2-PAPER"); iTotal += 10; } else if ((flexSensorReading3 <=400) && (flexSensorReading4 <=350)) { Serial.println("2-ROCK"); iTotal += 20; } else if ((flexSensorReading3 <=350) && (flexSensorReading4 >400)) { Serial.println("2-SISSORS"); iTotal += 30; } else{ Serial.println("2-NOREAD"); iTotal += 99; } return iTotal; } void beep(unsigned char delayms){ if (soundOn ) { for (int iL = 0; iL <=delayms; iL++) { analogWrite(9, 20); // Almost any value can be used except 0 and 255 delay (50); } // experiment to get the best tone analogWrite(9, 0); // 0 turns it off } }