Arduino Forum

International => Français => Réalisations et Projets Finis => Topic started by: windaube21 on Apr 28, 2016, 09:30 pm

Title: hack jeu de carte uno extreme bluetooth [fini]
Post by: windaube21 on Apr 28, 2016, 09:30 pm
bonjour

je vous présente un petit hack si ont peut dire du jeu de carte "uno extrem"
j'ai conserver le circuit d'origine car il sert de support pour le bouton pioche et aussi a l'interrupteur ON/OFF
il y a une arduino nano 5v cacher sous le circuit d'origine et un module bluetooth hc-06 pour le changement de fonctionnent discrètement

-principe :
le jeux se comporte normalement meme si aucun client est connecter bluetooths, mais via des commandes en bleutooth ont peut choisir l'issue de la prochaine pioche selon différent modes

si vous etes mauvais perdant, mauvais joueur et surtout que nous n'avez aucun scrupule a arnaquer vos amis ce projet fini est pour vous


les Modes :
1- automatique et par defaut si rien n'est connecter au bluetooth
2 - plus de carte du tout a toute les pioches ( peut utile )
3 - a la prochaine pioche rien ne sortira et retournera en mode auto ( quant cest a vous de piocher )
4- prochaine pioche une petite quantiter de carte sortira
5- prochaine pioche une grosse quantiter de carte sortira
6- prochaine pioche le jeux de carte sortira complet ( rigolo mais pas utile )
7- sort toute les cartes et tout de suite sans appui du bouton

une petite video pour illustrer
https://www.youtube.com/watch?v=B_fVDomSJLs (https://www.youtube.com/watch?v=B_fVDomSJLs)
je ne connait pas les balise youtube sur ce forum


dans un premier temp je post le code et je vous fait les photos au propre de quoi souder ou sur le circuit ( 5soudures 3 piste a couper )


Quote
//HACK UNO EXTREM
//WINDAUBE21
//SUR ARDUINO MANO PRO 5V
//SERIAL > 0 = AUTO; 1= RIEN DU TOUT; 2= LA SUIVANTE RIEN; 3= SUIVANTE PIOCHE; 4= SUIVANTE DOUBLE PIOCHE,
//5 TOUT SORT au prochain appuie WTF ?!?! 6 tout sort immediatement

//ENTREES
const int capot1=A0;
int capot=0;

const int bouton1=A1;
int bouton=0;


//SORTIES
int buzer=2;//ding ding du uno
int m1=3; // marche avant pont en H
int m2=4; // marche arriere pont en H


//COMPTEUR DE BOUTON
int compteur =0;

//COMPTEUR TEMPS SORTIE CARTES
int compteur2 =250;

//ETAT SERIAL
int serial =48; // o en ascii

void setup() {

//A0 CAPOT EN ENTREE + PULL UP
pinMode(capot1, INPUT);
digitalWrite(capot1, HIGH);


//A1 BOUTON EN ENTREE + PULL UP
pinMode(bouton1, INPUT);
digitalWrite(bouton1, HIGH);

//SORTIE BUZER + MISE A L ETAT BAS ( CAPOT OUVERT POUR CARTE UNO )
pinMode(buzer, OUTPUT);
digitalWrite(buzer, LOW);

//SORTIE MOTEUR + MISE A LETAT BAS POUR BLOQUER MOTEUR ( FREIN ELECTRO MAGNETIQUE )
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);

//SERIAL
Serial.begin(9600);

}

void loop() {

//RECUP DU SERIAL
char choseLue = Serial.read();

if(choseLue == -1) //si le buffer est vide
    {
      //evite d'envoier du caca
    }
else //le buffer n'est pas vide
    {
      if ((choseLue ==48) || (choseLue ==49) || (choseLue ==50) || (choseLue ==51) || (choseLue ==52) || (choseLue ==53) || (choseLue ==54))
      {
      serial= choseLue;  //On a lu un caractère
      }

if (serial == 48)
{
Serial.write("MODE AUTO");  
}


if (serial == 49)
{
Serial.write("MODE PLUS DE CARTE");  
}


if (serial == 50)
{
Serial.write("MODE PIOCHE SUIVANTE NUL");  
}


if (serial == 51)
{
Serial.write("PETITE PIOCHE SUIVANTE");  
}


if (serial == 52)
{
Serial.write("GROSSE PIOCHE SUIVNATE");  
}


if (serial == 53)
{
Serial.write("WTF PROCHAINE PIOCHE");  
}



if (serial == 54)
{
Serial.write("WTF NOWWWWWW");  
}



      
    }


//VERIF ETAT CAPOT
capot = digitalRead(capot1);

// SI LE CAPOT OUVERT LE DIRE A LA CARTE UNO
if (capot == HIGH) // SI CAPOT OUVERT
{
digitalWrite(buzer, LOW); //ENVOIER UN - (CAPOT OUVERT)
}


//VERIF ETAT BOUTON
bouton = digitalRead(bouton1);


//SI CAPOT FERMER ET BOUTON ENFONCER MODE 1
if ((capot == LOW) && (bouton == LOW) && (serial == 48))//PIOCHE NORMAL
{

  ding ();

  
  if ((compteur == 2) || (compteur == 6) || (compteur == 9) || (compteur == 10) ||(compteur == 13) || (compteur == 17) || (compteur == 24)
   || (compteur == 26) || (compteur == 27) || (compteur == 29) ||(compteur == 32) || (compteur == 36) || (compteur == 37)
    || (compteur == 44) || (compteur == 47) || (compteur == 48) ||(compteur == 51) || (compteur == 54) || (compteur == 57) || (compteur == 58)
     || (compteur == 66) || (compteur == 69) ||(compteur == 72) || (compteur == 73) || (compteur == 77)
      || (compteur == 84) || (compteur == 85) || (compteur == 88) ||(compteur == 92) || (compteur == 93) || (compteur == 96) || (compteur == 99)
       || (compteur == 103) || (compteur == 107) ||(compteur == 112) || (compteur == 115) || (compteur == 119)
        || (compteur == 123) || (compteur == 126) || (compteur == 130) ||(compteur == 134) || (compteur == 137) || (compteur == 139)
         || (compteur == 142) || (compteur == 145) || (compteur == 149) ||(compteur == 150) || (compteur == 154) || (compteur == 157)
          || (compteur == 161) || (compteur == 164) || (compteur == 167) ||(compteur == 170) || (compteur == 171) || (compteur == 175)
           || (compteur == 182) || (compteur == 185) || (compteur == 186) ||(compteur == 190) || (compteur == 194) || (compteur == 198)) //petit pioche

{

  ding();
  pioche ();

}
//PIOCHE DOUBLE
 if ((compteur == 21) || (compteur == 41)  || (compteur == 62)  || (compteur == 81)  || (compteur == 102)  || (compteur == 122)  || (compteur == 140)
  || (compteur == 160)  || (compteur == 179)  || (compteur == 197)) //double pioche

{
ding();
piochex2 ();

 
}
 compteur ++;

}


//MODE DEUX JAMAIS DE CARTE
if ((capot == LOW) && (bouton == LOW) && (serial == 49))
{
ding ();
}



//MODE TROI LA SUIVANTE RIEN
if ((capot == LOW) && (bouton == LOW) && (serial == 50))
{
ding ();
serial=48;
}


//MODE QUATRE LA SUIVANTE PETIE PIOCHE
if ((capot == LOW) && (bouton == LOW) && (serial == 51))
{
ding ();
pioche ();
serial=48;
}



//MODE CINQ LA SUIVANTE GROSSE PIOCHE
if ((capot == LOW) && (bouton == LOW) && (serial == 52))
{
ding ();
piochex2 ();

serial=48;
}


//MODE SIX WTF !!!!!
if ((capot == LOW) && (bouton == LOW) && (serial == 53))
{
digitalWrite(m1, HIGH);// MARCHE AVANT
digitalWrite(m2, LOW);
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();

digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
delay(500);// pausse
digitalWrite(m1, LOW);
digitalWrite(m2, HIGH);//marche arriere
delay(200);
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);//stop

serial=48;
}


//MODE SEPT WTF !!!!! SANS APPUI SUR LE BOUTON
if ((capot == LOW) && (serial == 54))
{
digitalWrite(m1, HIGH);// MARCHE AVANT
digitalWrite(m2, LOW);
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();
ding ();


digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
delay(500);// pausse
digitalWrite(m1, LOW);
digitalWrite(m2, HIGH);//marche arriere
delay(200);
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);//stop

serial=48;
}




//COMPTEUR A PIOCHE QUANT ONT ARRIVE A 200PIOCHES ONT REMET A 0
if ( compteur > 200)
{
  compteur =0;
}



//DEFINI LE TEMP EN MILISECONDES DES SORTIE DE CARTES
//VARI DE 250milli a 600milli
if ( compteur2 > 600)
{
  compteur2 =250;
}


//INCREMENTATION DU COMPTEUR DE 50mili PAR LOOP
compteur2 = compteur2 +50;


}



void ding ()
{
digitalWrite(buzer, HIGH);
delay(400);
digitalWrite(buzer, LOW);
delay(80);
}


void pioche ()
{
digitalWrite(m1, HIGH);//
digitalWrite(m2, LOW);//
delay(compteur2);// marche avant qui defini le temp de sortie de cartes
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
delay(500);// pausse
digitalWrite(m1, LOW);
digitalWrite(m2, HIGH);//marche arriere pour ranger les cartes non cracher
delay(200);
digitalWrite(m1, LOW);//stop
digitalWrite(m2, LOW);//stop

}

void piochex2 ()
{
digitalWrite(m1, HIGH);//
digitalWrite(m2, LOW);//
delay(700);// marche avant sur 700miliseconde (grosse pioche)
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
delay(500);// pausse
digitalWrite(m1, LOW);
digitalWrite(m2, HIGH);//marche arriere
delay(200);
digitalWrite(m1, LOW);
digitalWrite(m2, LOW);//stop

}


vos avis sont les bienvenu