#include "IRremote.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RotaryEncoder.h";
int nbr2;
int OK = 1;
int tour =0;
static int pos = 0;
int newPos;
char *jeux [] ={"ping-pong ","canasta ","jeux max ","ping-pong 11p","puis-je ","barbu ","jeux minimum "};
int point []= {21,5000,11,7,6,1,1};
RotaryEncoder encoder(A2, A3);
int select2 =0;
unsigned long chiffre;
char *jeuxchoix;
boolean debut = 1;
int receiverPin = 9;
IRrecv irrecv(receiverPin);
decode_results results;
long score[6]={0,0,0,0,0,0};
int select;
int nbj;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup(){
pinMode(49,OUTPUT);
pinMode(2,INPUT);
Serial.begin(9600);
Serial.println(F("IR Receiver Decoder"));
irrecv.enableIRIn(); // Start the receiver
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("choisir un jeux");
lcd.setCursor(0,1);
lcd.print(jeux[newPos]);
while (OK < 500) {
encoder.tick();
newPos = encoder.getPosition();
if (pos != newPos) {
Serial.println(newPos);
pos = newPos;
lcd.setCursor(0,1);
jeuxchoix= jeux[newPos];
lcd.print(jeuxchoix);
}
Serial.print(jeuxchoix);
OK++;
delay(10);
}
Serial.print(jeuxchoix);
select2 =point[newPos];
Serial.println(select);
OK =0;
pos =0;
newPos = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("nombre joueur?");
lcd.setCursor(0,1);
while (OK < 500) {
encoder.tick();
newPos = encoder.getPosition();
if (pos != newPos) {
Serial.println(newPos);
pos = newPos;
lcd.setCursor(0,1);
nbr2 = pos;
lcd.print(nbr2);
}
OK++;
delay(10);
}
if (jeuxchoix == "puis-je " && jeuxchoix == "barbu "&& jeuxchoix =="jeux minimum "&& jeuxchoix =="jeux max ") {
for(int i=0;i<=(6-nbr2);i++ ) {
score[i] = 100000000;
}
}
pinMode(23, INPUT_PULLUP);
pinMode(25, INPUT_PULLUP);
pinMode(27, INPUT_PULLUP);
pinMode(29, INPUT_PULLUP);
pinMode(31, INPUT_PULLUP);
pinMode(33, INPUT_PULLUP);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("choisir un joueur");
}
void test () {
for(int count = 0; count < 6 ; count++)
{
if( score[count] >= select2) {
lcd.clear();
lcd.print("joueur ");
lcd.print(count+1);
lcd.print(" gagne");
affiche();
delay(10000);
}
}
}
void affiche (){
lcd.setCursor(0,1);
for(int i=0;i<nbr2;i++ ) {
lcd.print(score[i]);
lcd.print(" ");
}
}
void loop() {
affiche();
if (jeuxchoix != "puis-je " && jeuxchoix != "barbu "&& jeuxchoix !="jeux minimum "&& jeuxchoix !="jeux max ") {
Serial.print("test");
test ();
}
if (jeuxchoix == "puis-je ") {
if (digitalRead(23)==0){ lcd.setCursor(0,0);lcd.print("1 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
if (digitalRead(25)==0){ lcd.setCursor(0,0);lcd.print("2 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
if (digitalRead(27)==0) {lcd.setCursor(0,0);lcd.print("3 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
if (digitalRead(29)==0) {lcd.setCursor(0,0);lcd.print("4 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
if (digitalRead(31)==0) {lcd.setCursor(0,0);lcd.print("5 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
if (digitalRead(33)==0) {lcd.setCursor(0,0);lcd.print("6 a dis puis-je");delay(5000);lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" : "); lcd.print(score[select]);}
}
if (irrecv.decode(&results)){ // IR signal received?
convertIR();
irrecv.resume(); // receive the next value
}
}
void convertIR() {
Serial.print(results.value);
Serial.print(F(" => "));
switch(results.value)
{
case 16714995: Serial.println(F("1"));
chiffre =chiffre*10+1;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16735905: Serial.println(F("3"));
chiffre =chiffre*10+3;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 0xFF18E7:Serial.println(F("2"));
chiffre =chiffre*10+2;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16713975 : Serial.println(F("4"));
chiffre =chiffre*10+4;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16719075 : Serial.println(F("5"));
chiffre =chiffre*10+5;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 0xFF5AA5:Serial.println(F("6"));
chiffre =chiffre*10+6;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 0xFF42BD: Serial.println(F("7"));
chiffre =chiffre*10+7;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16732845: Serial.println(F("8"));
chiffre =chiffre*10+8;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16730805:Serial.println(F("9"));
chiffre =chiffre*10+9;
lcd.setCursor(0,0);
lcd.print(chiffre);
break;
case 16717545: Serial.println(F("0"));
chiffre =chiffre*10;
lcd.setCursor(0,0);
lcd.print(chiffre); break;
case 0xFFB04F:Serial.println(F("#"));
if (jeuxchoix == "jeux max ") {
int tab = 0;
int tab1 = 1;
for(int i = 0; i < (sizeof(score) / sizeof(score[0])); i++) {
if(tab1 <= score[i]){
tab = i;
tab1 = score[i];
}
}
lcd.clear();
lcd.print("joueur ");
lcd.print(tab+1);
lcd.print(" gagne");
Serial.print("tab");
affiche();
delay(10000);
}
else {
tour++; lcd.setCursor(0,0); lcd.print("tour");
lcd.print(tour);
if (tour >= select2) {
Serial.print("fin");
int tab = 0;
int tab1;
for(int i = 0; i < (sizeof(score) / sizeof(score[0])); i++) {
if(tab1 > score[i]){
tab = i;
tab1 = score[i];
}
}
lcd.clear();
lcd.print("joueur ");
lcd.print(tab+1);
lcd.print(" gagne");
Serial.print("tab");
affiche();
delay(10000);
}
}
break;
case 16729275: Serial.println(F("test"));score[select]=score[select]-chiffre; chiffre = 0; lcd.clear();
break;
case 16728255:Serial.println(F("up")); score[select]++; break;
case 16713720 :Serial.println(F("gauche")); lcd.clear ();lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); select-- ;lcd.print(" :"); lcd.print(score[select]); break;
case 16717290:Serial.println(F("OK"));
score[select]=score[select]+chiffre; chiffre = 0; lcd.clear ();lcd.setCursor(0,0); lcd.print("j ");lcd.print(select); lcd.print(" :"); lcd.print(score[select]);
break;
case 16714230:Serial.println(F("droit")); lcd.clear ();lcd.setCursor(0,0); lcd.print("j ");select++ ; lcd.print(select+1); lcd.print(" :"); lcd.print(score[select]); break;
case 16718310 : Serial.println(F("down"));score[select]--; break;
case 0xFFFFFFFF:Serial.println(F(" REPEAT"));break;
default:
Serial.println(F(" unknown "));
}
delay(500);
}