Différences entre les pages « Chasse LED avec arduino » et « Enigme mathematique »

(Page créée avec « {{Tuto Details |Main_Picture=Chasse_LED_avec_arduino_250px-Vatx_proto_0_2.jpg |Licences=Attribution (CC-BY) |Description=Chasse LED |Area=Electricity |Difficulty=Technical... »)
 
(Page créée avec « {{Tuto Details |Licences=Attribution (CC-BY) |Description=Enigme |Area=Mathematics |Difficulty=Technical |Duration=1 |Duration-type=hour(s) }} {{Introduction |Introduction... »)
 
Ligne 1 : Ligne 1 :
 
{{Tuto Details
 
{{Tuto Details
|Main_Picture=Chasse_LED_avec_arduino_250px-Vatx_proto_0_2.jpg
 
 
|Licences=Attribution (CC-BY)
 
|Licences=Attribution (CC-BY)
|Description=Chasse LED
+
|Description=Enigme
|Area=Electricity
+
|Area=Mathematics
 
|Difficulty=Technical
 
|Difficulty=Technical
|Duration=50
+
|Duration=1
|Duration-type=minute(s)
+
|Duration-type=hour(s)
 
}}
 
}}
 
{{Introduction
 
{{Introduction
|Introduction=D'horribles LED nous envahissent ! L'heure est venue de les éliminer, mais il faut d'abord s’entraîner. Fabriquons donc un simulateur à base de LED pour préparer la guerre finale...
+
|Introduction=Sur cette fiche, pas vraiment d'expériences au sens physique, chimique ou matériel du terme, mais une série d'énigmes mathématiques.
 
}}
 
}}
 
{{Materials
 
{{Materials
|ItemList={{ItemList
+
|ItemList={{ItemList}}
|Item=Carte arduino micro-controleur
 
}}{{ItemList
 
|Item=Logiciel Arduino
 
}}{{ItemList
 
|Item=Fil électrique
 
}}{{ItemList
 
|Item=Led
 
}}{{ItemList
 
|Item=Platine de Prototypage
 
}}
 
 
}}
 
}}
 
{{Separator}}
 
{{Separator}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Réaliser
+
|Step_Title=les enigmes
|Step_Content=* Réaliser le montage en suivant la vidéo/le schéma.
+
|Step_Content==== '''Gédéon et le poids de ses billes''' ===
 +
 
 +
==== '''Le problème de Gédéon''' ====
 +
Gédéon est en possession de 10 sacs contenant chacun des billes en grand nombre (plus de 10 billes dans chaque sac).
 +
 
 +
Chacune des billes pèse 10 grammes, sauf celles d'un de ces sacs, qui pèsent toutes 9 grammes.
 +
 
 +
Impossible de différencier les billes de 10g et celles de 9g, sauf en utilisant une balance.
 +
 
 +
Seulement, Gédéon ne peux utiliser sa balance qu'une seule fois.
 +
 
 +
Il souhaite donc déterminer en une seule pesée quel sac contient les billes les plus légères.
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Lancer
+
|Step_Title=La solution au problème de Gédéon
|Step_Content=* Lancer le logiciel Arduino.
+
|Step_Content=Je conseillerais à Gédéon de ranger ses 10 sacs en ligne.
 +
* dans le premier il prend 1 bille
 +
* dans le second, 2 billes
 +
* dans le troisième, 3 billes
 +
* ...
 +
* dans le neuvième, 9 billes
 +
* et dans le dixième ... non merci ça ira !
 +
Il pèse les 1+2+3+4+5+6+7+8+9 = 45 billes.
 +
 
 +
S'il obtient :
 +
* 449g, alors les billes de 9g sont dans le premier sac (1X9g + 2X10g + 3X10g + 4X10g + 5X10g + 6X10g + 7X10g + 8X10g + 9X10g = 449g)
 +
 
 +
* 448g, alors les billes de 9g sont dans le second sac
 +
 
 +
* 447g, alors les billes de 9g sont dans le troisième sac
 +
 
 +
* 446g, alors les billes de 9g sont dans le quatrième sac
 +
 
 +
* 445g, alors les billes de 9g sont dans le cinquième sac
 +
 
 +
* 444g, alors les billes de 9g sont dans le sixième sac
 +
 
 +
* 443g, alors les billes de 9g sont dans le septième sac
 +
 
 +
* 442g, alors les billes de 9g sont dans le huitième sac
 +
 
 +
* 441g, alors les billes de 9g sont dans le neuvième sac
 +
 
 +
* 450g, alors les billes de 9g sont dans le dixième sac !
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Copier
+
|Step_Title=Les mésaventure du cousin de Gédéon Coincé sur l'île au gourou
|Step_Content=Copier/coller le code suivant dans le programme permettant d'utiliser Arduino :
+
|Step_Content=Le cousin de Gédéon a eu une sacré mésaventure cet été !
 +
 
 +
Il faisait partie de 200 personnes, 100 avec les yeux bleus, 100 avec les yeux marrons. Tous étaient retenus prisonniers par un gourou magicien aux yeux verts, sur une île déserte. Tous ont perdu l'usage de la parole et ont oublié la couleur de leurs yeux car le gourou leur a jeté un sort.
 +
 
 +
Les prisonniers peuvent se libérer s'ils sont certains d'avoir trouvé la couleur de leur yeux. À ce moment, ils sortent du cercle, et prennent un bateau qui les ramène chez eux. Le bateau quitte l'île tout les soirs.
 +
 
 +
Le premier jour, le gourou fait asseoir tous les prisonniers en cercle et dit “Au moins une personne de ce cercle a les yeux bleus !”
 +
 
 +
Les prisonniers ne connaissent pas la couleur de leurs yeux, ils ne savent pas combien de personnes ont les yeux marrons et combien ont les yeux bleus.
 +
 
 +
Heureusement, tous les prisonniers  étaient très fort pour résoudre des énigmes et tous ont réussi à se libérer. '''Comment ont-ils fait ? Au bout de combien de temps ?'''
 +
 
 +
Récapitulons:
 +
 
 +
- 201 personnes assises en cercle : le gourou + 200 prisonniers
 +
 
 +
- Les prisonniers ne connaissent pas la couleur de leurs yeux et ne peuvent pas parler
 +
 
 +
- Le gourou a les yeux verts
 +
 
 +
- 100 prisonniers ont les yeux marrons
 +
 
 +
- 100 prisonniers ont les yeux bleus
 +
 
 +
- Les prisonniers ne connaissent pas la proportion d'yeux marrons et d'yeux bleus
  
// Ce programme sert à faire le chasse-led
+
- Un bateau quitte l'île tout les soirs pour ramener les prisonniers libérés.
int led[4]={8,9,10,11};              //Déclaration des pattes des leds
 
int bp[4]={2,3,4,5};                //Déclaration des pattes des boutons poussoirs
 
//Déclaration et initialisation des variables globales servant pour la suite du code
 
int initLed = 0;       
 
int i;
 
int randnumber ;
 
int tirage = 0;
 
int compteur;
 
int score;
 
void setup(){                        //Fonction permettant d'initialiser le matériel (leds et boutons poussoir)
 
  Serial.begin(9600);                //Indique que Arduino se situe sur le port usb 9600
 
  for(i=0;i<4;i++){                  //Boucle parcourant toutes les variables de 0 à 3
 
      pinMode(bp[i], INPUT);        //Indique que le bouton poussoir est une entrée
 
      pinMode(led[i],OUTPUT);      //Indique que les leds sont des sorties
 
      digitalWrite(led[i],LOW);    //On met les leds au niveau bas (elles sont eteintes au depart)
 
      digitalWrite(bp[i],HIGH);    //On met les boutons poussoirs au niveau haut
 
}
 
  compteur=0;                        //Initialisation du compteur à 0
 
}
 
void loop(){
 
    if (initLed == 0)  {                    //Premier passage dans la fonction loop
 
      randnumber=random(0,4);              //Déclaration d'un premier nombre aléatoire de 0 à 3
 
      digitalWrite(led[randnumber],HIGH);  //Met la led correspondant au numéro aléatoire au niveau haut
 
      Serial.println("valeur aleatoire:");  //Affiche "valeur aléatoire :" dans le terminal
 
      Serial.println(randnumber,DEC);      //Affiche dans le terminal le numéro aleatoire
 
      compteur = compteur + 1;              //incrémentation du compteur
 
      initLed =1;                          //Indique que le programme est déjà lancé pour ne plus aller dans ce test
 
      tirage = 1;                          //Permet d'aller au test suivant
 
      delay(500);                          //Attente d'une demi seconde (500 = 500ms)
 
}
 
  if (tirage == 1 ){                            //Deuxième test valide si on a passé le premier test
 
      if(digitalRead(bp[randnumber])==LOW){      //Regarde si le bouton poussoir associé a la led est active
 
          Serial.println("valeur du compteur:"); //Affiche "valeur du compteur :" dans le terminal
 
          Serial.println(compteur,DEC);          //Affiche la valeur du compteur dans le terminal
 
          digitalWrite(led[randnumber],LOW);    //Éteint la led quand on a appuyé sur le bp (bp=bouton poussoir)
 
          randnumber=random(4);                  //Cherche un autre nombre aléatoire
 
          digitalWrite(led[randnumber],HIGH);    //Allume la led correspondant a ce nouveau nombre
 
          compteur = compteur + 1;              //Incrémente le compteur
 
          Serial.println("valeur aleatoire:");  //Affiche "valeur aléatoire :" dans le terminal
 
          Serial.println(randnumber,DEC);        //Affiche dans le terminal le numero aleatoire
 
          delay(500);                            //Attente d'une demi seconde
 
}
 
      else { if ( digitalRead(bp[(randnumber+1)%4])==LOW ||      //Si le bouton poussoir correspondant à la led n'est pas activé, on regarde si l'utilisateur ne s'est pas trompé et a activé un autre bp
 
                digitalRead(bp[(randnumber+2)%4])==LOW ||        //Test des trois bp
 
                digitalRead(bp[(randnumber+3)%4])==LOW){          //Test des trois bp
 
                digitalWrite(led[randnumber],LOW);                //Si l'un des autres bp est activé on éteint la led
 
                Serial.println(" ");                              //On écrit un espace dahs le terminal
 
                Serial.println("Valeur finale du compteur : ");  //On écrit "Valeur finale du compteur : " dans le terminal
 
                Serial.println(compteur,DEC);                    //Affiche dans le terminal la valeur du compteur
 
                tirage = 0;                                      //Fait en sorte que l'on allume le score à la fin
 
}
 
}
 
}
 
  score=compteur-1;                              //Calcul du score
 
  if (tirage ==0) {                              //On teste si la variable tirage est à 0
 
  allumer(score);                                //Va dans la fonction allumer
 
}
 
}
 
void allumer(int score){                        //Fonction alliumer qui prend en variable le score et qui ne retourne rien
 
  digitalWrite(led[0],LOW);                      //Éteint toutes les leds
 
digitalWrite(led[1],LOW);                        //Éteint toutes les leds
 
digitalWrite(led[2],LOW);                        //Éteint toutes les leds
 
digitalWrite(led[3],LOW);                        //Éteint toutes les leds
 
  delay(1000);                                  //Attend une seconde
 
for(int j=score; j>0;j--){                      //Boucle décrementant le score jusqu'à ce qu'il soit égal à 1
 
  digitalWrite(led[j%4],HIGH);                  //Allume la led modulo 4 (Un nombre entre 0 et 3)
 
  delay(1000);                                  //Attend une seconde
 
  digitalWrite(led[j%4],LOW);                    //Éteint la led modulo 4 (Un nombre entre 0 et 3)
 
  delay(1000);                                  //Attend une seconde
 
}
 
digitalWrite(led[0],HIGH);                      //Allume la led 0
 
digitalWrite(led[1],HIGH);                      //Allume la led 1
 
digitalWrite(led[2],HIGH);                      //Allume la led 2
 
digitalWrite(led[3],HIGH);                      //Allume la led 3
 
delay(1000);                                    //Attend une seconde
 
}
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Brancher
+
|Step_Title=Solution
|Step_Content=* Brancher l'Arduino sur un port USB de l'ordinateur.
+
|Step_Content=À vous de jouer !
}}
+
 
{{Tuto Step
+
=== '''Gédéon et ses billes : 2ème round''' ===
|Step_Title=Cliquer
+
Gédéon possède 18 billes :
|Step_Content=* Cliquer sur l'image représentant une sorte de v, puis sur l'image
+
 
représentant une flèche (le programme sera mis dans l'Arduino).
+
17 pèsent le même poids, l'une est plus légère que les autres.
}}
+
 
{{Tuto Step
+
Il possède aussi une balance qui peut comparer deux poids (balance de la justice).
|Step_Title=Resultat
+
 
|Step_Content=Attendre la fin du transfert.
+
Combien de fois au minimum devra-t-il utiliser la balance, pour être sûr de trouver quelle bille est la plus légère ?
 
}}
 
}}
 
{{Notes
 
{{Notes
|Observations=Appuyer, sans se tromper, sur le bouton associé à chaque Del. Dès qu'une erreur est commise, le jeu s'arrête et le score s'affiche. Chaque Del correspond à un palier. Celle de gauche signifie que vous êtes un champion de la ligue pokémon, celle du milieu gauche un champion de l’arène de Cramois'ile, celle du milieu droit un champion d'Azuria, et celle de droite que vous quittez bourg-palette.
+
|Applications=Ces énigmes mobilisent l'intelligence et bien souvent une manière différente de se poser des questions. Il faut contourner le problème, ou le poser d'une autre manière.
|Avertissement=Se tromper dans les codage
 
|Explanations==== '''De manière simple''' ===
 
Les Leds s'allument de manière aléatoire de plus en plus vite. À chaque pression sur un bouton poussoir se produit l'événement suivant : soit ce bouton correspond à la bonne led et le jeu continue, soit ce bouton ne correspond pas à la bonne Led, le jeu s’arrête et le score s'affiche à l'aide des leds.
 
|Deepen==== '''Allons plus loin dans l'explication''' ===
 
L'Arduino est un microprocesseur dont les instructions sont codées dans un langage proche du C. Plus d'info sur l'article Wikipédia [http://wikipedia.org/wiki/langage_C Langage C].
 
  
En C, on déclare le type des variables avant de les utiliser : ici les int correspondent à des nombres entiers (1,2,3...), et le void correspond à une fonction non typée. Le const devant un type signifie que l'objet  manipulé ne peut pas être modifié
+
Elles illustrent bien le fait qu'en science, avant toute chose, il faut bien poser les questions !
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
 
|Complete=Draft
 
|Complete=Draft
 
}}
 
}}

Version du 7 février 2019 à 12:13

Auteur avatarTess | Dernière modification 15/10/2019 par Pierreb

Introduction

Sur cette fiche, pas vraiment d'expériences au sens physique, chimique ou matériel du terme, mais une série d'énigmes mathématiques.

Étape 1 - les enigmes

Gédéon et le poids de ses billes

Le problème de Gédéon

Gédéon est en possession de 10 sacs contenant chacun des billes en grand nombre (plus de 10 billes dans chaque sac).

Chacune des billes pèse 10 grammes, sauf celles d'un de ces sacs, qui pèsent toutes 9 grammes.

Impossible de différencier les billes de 10g et celles de 9g, sauf en utilisant une balance.

Seulement, Gédéon ne peux utiliser sa balance qu'une seule fois.

Il souhaite donc déterminer en une seule pesée quel sac contient les billes les plus légères.

Étape 2 - La solution au problème de Gédéon

Je conseillerais à Gédéon de ranger ses 10 sacs en ligne.

  • dans le premier il prend 1 bille
  • dans le second, 2 billes
  • dans le troisième, 3 billes
  • ...
  • dans le neuvième, 9 billes
  • et dans le dixième ... non merci ça ira !

Il pèse les 1+2+3+4+5+6+7+8+9 = 45 billes.

S'il obtient :

  • 449g, alors les billes de 9g sont dans le premier sac (1X9g + 2X10g + 3X10g + 4X10g + 5X10g + 6X10g + 7X10g + 8X10g + 9X10g = 449g)
  • 448g, alors les billes de 9g sont dans le second sac
  • 447g, alors les billes de 9g sont dans le troisième sac
  • 446g, alors les billes de 9g sont dans le quatrième sac
  • 445g, alors les billes de 9g sont dans le cinquième sac
  • 444g, alors les billes de 9g sont dans le sixième sac
  • 443g, alors les billes de 9g sont dans le septième sac
  • 442g, alors les billes de 9g sont dans le huitième sac
  • 441g, alors les billes de 9g sont dans le neuvième sac
  • 450g, alors les billes de 9g sont dans le dixième sac !

Étape 3 - Les mésaventure du cousin de Gédéon Coincé sur l'île au gourou

Le cousin de Gédéon a eu une sacré mésaventure cet été !

Il faisait partie de 200 personnes, 100 avec les yeux bleus, 100 avec les yeux marrons. Tous étaient retenus prisonniers par un gourou magicien aux yeux verts, sur une île déserte. Tous ont perdu l'usage de la parole et ont oublié la couleur de leurs yeux car le gourou leur a jeté un sort.

Les prisonniers peuvent se libérer s'ils sont certains d'avoir trouvé la couleur de leur yeux. À ce moment, ils sortent du cercle, et prennent un bateau qui les ramène chez eux. Le bateau quitte l'île tout les soirs.

Le premier jour, le gourou fait asseoir tous les prisonniers en cercle et dit “Au moins une personne de ce cercle a les yeux bleus !”

Les prisonniers ne connaissent pas la couleur de leurs yeux, ils ne savent pas combien de personnes ont les yeux marrons et combien ont les yeux bleus.

Heureusement, tous les prisonniers étaient très fort pour résoudre des énigmes et tous ont réussi à se libérer. Comment ont-ils fait ? Au bout de combien de temps ?

Récapitulons:

- 201 personnes assises en cercle : le gourou + 200 prisonniers

- Les prisonniers ne connaissent pas la couleur de leurs yeux et ne peuvent pas parler

- Le gourou a les yeux verts

- 100 prisonniers ont les yeux marrons

- 100 prisonniers ont les yeux bleus

- Les prisonniers ne connaissent pas la proportion d'yeux marrons et d'yeux bleus

- Un bateau quitte l'île tout les soirs pour ramener les prisonniers libérés.

Étape 4 - Solution

À vous de jouer !

Gédéon et ses billes : 2ème round

Gédéon possède 18 billes :

17 pèsent le même poids, l'une est plus légère que les autres.

Il possède aussi une balance qui peut comparer deux poids (balance de la justice).

Combien de fois au minimum devra-t-il utiliser la balance, pour être sûr de trouver quelle bille est la plus légère ?

Comment ça marche ?



Applications : dans la vie de tous les jours

Ces énigmes mobilisent l'intelligence et bien souvent une manière différente de se poser des questions. Il faut contourner le problème, ou le poser d'une autre manière.

Elles illustrent bien le fait qu'en science, avant toute chose, il faut bien poser les questions !


Dernière modification 15/10/2019 par user:Pierreb.

Commentaires

Draft