int touchJack[5] = { 0 , 1, 19, 22, 23 }; int ledJack[5] = { 2, 7, 9, 18, 21 }; int buttonJack[5] = { 6, 8, 10, 17, 20 }; int seuilJack[5] = { 16000, 16000, 16000 , 16000, 16000 }; int keyboardKeys[5] = { KEY_A, KEY_B, KEY_C, KEY_D, KEY_E }; int touchReadingJack[5]; int buttonRead[5]; boolean buttonWasPressed[5] = { false, false, false, false, false }; int lastButtonPressed[3] = {99, 99, 99}; int chronoJoueurs[5]; int cyclesLed[5]; boolean etatChronoJoueurs[5] = { false, false, false, false, false }; boolean ledBlinking[5] = { false, false, false, false, false }; boolean ribbonTouch[5] = { false, false, false, false, false }; boolean liquidTouch[5] = { false, false, false, false, false }; int modeDeJeu = 0; int ledVitesse[5]; int ledCycles[5]; int ledMode[5]; boolean ledState[5] = { false, false, false, false, false }; int liquidTouchRank[5] = { 99, 99, 99, 99, 99 }; int playerRank[5] = { 99, 99, 99, 99, 99 }; boolean playerRanked[5] = { false, false, false, false, false }; int sencibilitee = 800; // Variable de seuil pour le touché int sencibiliteeBouche = 3500; void setup() { Serial.begin(9600); for (int i = 0; i < 5; i++) { pinMode(buttonJack[i], INPUT_PULLUP); pinMode(ledJack[i], OUTPUT); }; }; void loop() { for (int i = 0; i < 5; i++) { touchReadingJack[i] = touchRead(touchJack[i]); buttonRead[i] = digitalRead(buttonJack[i]); int seuilMax = seuilJack[i] + sencibilitee + sencibiliteeBouche; if (touchReadingJack[i] > seuilJack[i] + sencibilitee) { if (touchReadingJack[i] > seuilMax) { liquidTouch[i] = true; } else { ribbonTouch[i] = true; liquidTouch[i] = false; } } else { ribbonTouch[i] = liquidTouch[i] = false; } if (buttonRead[i] == LOW) { if (buttonWasPressed[i] == false) { Serial.println(""); Serial.print("Button "); Serial.print(i); Serial.println(" pressed"); lastButtonPressed[2] = lastButtonPressed[1]; lastButtonPressed[1] = lastButtonPressed[0]; lastButtonPressed[0] = i; buttonWasPressed[i] = true; Serial.println(""); Serial.print(lastButtonPressed[0]); Serial.print("\t"); Serial.print(lastButtonPressed[1]); Serial.print("\t"); Serial.print(lastButtonPressed[2]); Serial.println("\t"); if (lastButtonPressed[0] == lastButtonPressed[1]) { Serial.println("Calibrage seuil"); int compteur = 0; int addition = 0; while (compteur < 20) { addition = addition + touchRead(touchJack[i]); compteur++; }; seuilJack[i] = addition / 20; Serial.print("Nouveau Seuil = "); Serial.println(seuilJack[i]); definingLeds(i, 100, 2, 1); ledState[i] = true; if (lastButtonPressed[2] == lastButtonPressed[1]) { modeDeJeu = lastButtonPressed[2]; clearVariables(); }; }; }; } else { buttonWasPressed[i] = false; }; //////////////////TEST MODE//////////////////////// if (modeDeJeu == 0) { if (i == 0) { // Serial.println("mode de jeu 0"); } if (ribbonTouch[i] == true) { if (liquidTouch[i] == true) { definingLeds(i, 50, 0, 0); ledState[i] = true; } else { definingLeds(i, 1, 0, 0); ledState[i] = true; } } else { ledState[i] = false; } } ////////////////////FIN DU TEST MODE//////////////////// //////////////////KEYBOARD MODE//////////////////////// if (modeDeJeu == 1) { if (i == 0) { Serial.println("Mode de jeu Keyboard"); } if (ribbonTouch[i] == true) { if (liquidTouch[i] == true) { definingLeds(i, 50, 0, 0); ledState[i] = true; Keyboard.press(keyboardKeys[i]); } else { definingLeds(i, 1, 0, 0); ledState[i] = true; Keyboard.release(keyboardKeys[i]); } } else { ledState[i] = false; Keyboard.release(keyboardKeys[i]); } } ///////////////FIN DU KEYBOARD MODE//////////////////// /////////////////////BUZZ MODE//////////////////////// if (modeDeJeu == 2) { if (liquidTouch[i] == true) { // Serial.println("lip touch"); if (playerRanked[i] == false) { for (int j = 0; j < 5; j++) { if (liquidTouchRank[j] == 99) { liquidTouchRank[j] = i; playerRank[i] = j; playerRanked[i] = true; Serial.print("Joueur "); Serial.print(i); Serial.print(" est en position "); Serial.println(playerRank[i] + 1); if (playerRank[i] == 0) { definingLeds(i, 1, 0, 0); }; return; } } } // definingLeds(i, 50, 0, 0); } if (playerRanked[i] == false) { ledState[i] = false; } else { //Serial.println(playerRank[i]); if (playerRank[i] == 0) { definingLeds(i, 1, 0, 0); ledState[i] = true; if (buttonRead[i] == LOW) { clearVariables(); } } if (playerRank[i] == 1) { definingLeds(i, 100, 0, 0); ledState[i] = true; } if (playerRank[i] == 2) { definingLeds(i, 250, 0, 0); ledState[i] = true; } if (playerRank[i] == 3) { definingLeds(i, 550, 0, 0); ledState[i] = true; } if (playerRank[i] == 4) { definingLeds(i, 750, 0, 0); ledState[i] = true; } } } ///////////////FIN DU BUZZ MODE//////////////////// if (ledState[i] == true) { ledBlink(i, ledVitesse[i], ledCycles[i], ledMode[i]); } else { ledBlink(i, 0, 0, 0); }; boolean debugHand = true; if (debugHand == true) { Serial.print("Jack "); Serial.print(i); Serial.print(" : "); Serial.print(touchReadingJack[i]); Serial.print("\t"); if (i == 4) { Serial.println(); } }; }; delay(50); // Pour que ça aille pas trop vite sur les tests }; //////////////END OF THE LOOP/////////////////////// //////////////////////LED FUNCTION//////////////////////// int definingLeds(int j, int vitesse, int nbrBlink, int modeSpecial) { ledVitesse[j] = vitesse; ledCycles[j] = nbrBlink; ledMode[j] = modeSpecial; }; int ledBlink(int j, int vitesse, int nbrBlink, int modeSpecial) { if (vitesse > 0) { if (vitesse == 1) { digitalWrite(ledJack[j], HIGH); ledBlinking[j] = false; } else { if (ledBlinking[j] = false) { chronoJoueurs[j] = millis(); ledBlinking[j] == true; cyclesLed[j] = 0; Serial.println("Coucou"); } int tempsActuel = millis() - chronoJoueurs[j]; // Serial.println(tempsActuel); // Serial.println(millis()); // Serial.println(chronoJoueurs[j]); if ( tempsActuel > vitesse) { chronoJoueurs[j] = millis(); cyclesLed[j] = cyclesLed[j] + 1; } ////////////////BLINKS SPECIAL 1////////////////////// if (modeSpecial = 0) { if (cyclesLed[j] % 2 == 0) { digitalWrite(ledJack[j], HIGH); } else { digitalWrite(ledJack[j], LOW); } } else if (modeSpecial = 1) { if (cyclesLed[j] % 2 == 0) { digitalWrite(ledJack[j], HIGH); } else { digitalWrite(ledJack[j], LOW); } } }; } else { digitalWrite(ledJack[j], LOW); ledBlinking[j] = false; }; }; /////////////////END OF LED FUNCTION/////////////////// /////////////////CLEAR VARIABLE FUNCTION/////////////////// int clearVariables() { lastButtonPressed[0] = 99; lastButtonPressed[1] = 99; lastButtonPressed[2] = 99; for (int j = 0; j < 5; j++) { ledState[j] = false; liquidTouchRank[j] = 99; playerRank[j] = 99; playerRanked[j] = false; }; }; /////////////////END OF CLEAR VARIABLE FUNCTION///////////////////