Deviner un code secret avec Arduino : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
m (Liens)
m
 
(11 révisions intermédiaires par le même utilisateur non affichées)
Ligne 26 : Ligne 26 :
  
 
==Schémas ==
 
==Schémas ==
 +
 +
[[Fichier:Deviner_code_secret_schéma.png|center|400px]]
 +
 +
[[Fichier:Deviner_code_secret_bb.png|center|400px]]
  
 
==Code source==
 
==Code source==
Ligne 67 : Ligne 71 :
 
   etatBouton2 = digitalRead(bouton2);
 
   etatBouton2 = digitalRead(bouton2);
 
   etatBouton3 = digitalRead(bouton3);
 
   etatBouton3 = digitalRead(bouton3);
   // Si etatBouton1 est à 5V (HIGH) c'est que le bouton est appuyé
+
   // Si etatBouton1 et etatBouton2 sont à 5V (HIGH) c'est que les boutons sont appuyés, on controle que etatBouton3 n'est pas appuyé
   if ((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)) {     
+
   if ((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 != HIGH)) {     
 
     digitalWrite(ledVerte, HIGH);  // on éteind la LED verte
 
     digitalWrite(ledVerte, HIGH);  // on éteind la LED verte
 
     delay(2000);                    // on laisse allumée la led jaune 1/2 seconde
 
     delay(2000);                    // on laisse allumée la led jaune 1/2 seconde
Ligne 82 : Ligne 86 :
  
 
Pour aller plus loin voici des variantes possibles du montage :
 
Pour aller plus loin voici des variantes possibles du montage :
* changer le code secret en ajoutant ou en supprimant une condition : https://gitlab.com/coagul/arduino/tree/master/beginner/_010_bouton_declenchement_feu_de_circulation
+
* changer le code secret en ajoutant ou en supprimant une condition : https://gitlab.com/coagul/arduino/tree/master/beginner_011_deviner_code_secret
* rendre le code secret aléatoire
+
 
 +
Bouton 1
 +
<syntaxhighlight lang="c">
 +
if (etatBouton1 == HIGH)&&(etatBouton2 != HIGH)&&(etatBouton3 != HIGH))
 +
</syntaxhighlight>
 +
 
 +
Bouton 1 et 2
 +
<syntaxhighlight lang="c">
 +
if ((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 != HIGH))
 +
</syntaxhighlight>
 +
 
 +
Bouton 1, 2 et 3
 +
<syntaxhighlight lang="c">
 +
if (((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 == HIGH)))
 +
</syntaxhighlight>
 +
 
 +
{| class="wikitable" border="1"
 +
||+ Essai naturel
 +
|-
 +
!scope="col"| Comptage en décimal
 +
!scope="col"| LED 1
 +
!scope="col"| LED 2
 +
!scope="col"| LED 3
 +
|-
 +
| 0
 +
| 0
 +
| 0
 +
| 0
 +
|-
 +
| 1
 +
| 0
 +
| 0
 +
| 1
 +
|-
 +
| 2
 +
| 0
 +
| 1
 +
| 0
 +
|-
 +
| 3
 +
| 1
 +
| 0
 +
| 0
 +
|-
 +
| 4
 +
| 1
 +
| 1
 +
| 0
 +
|-
 +
| 5
 +
| 0
 +
| 1
 +
| 1
 +
|-
 +
| 6
 +
| 1
 +
| 0
 +
| 1
 +
|-
 +
| 7
 +
| 1
 +
| 1
 +
| 1
 +
|}
 +
 
 +
{| class="wikitable" border="1"
 +
||+ Compter en binaire
 +
|-
 +
!scope="col"| Comptage en décimal
 +
!scope="col"| LED 1
 +
!scope="col"| LED 2
 +
!scope="col"| LED 3
 +
|-
 +
| 0
 +
| 0
 +
| 0
 +
| 0
 +
|-
 +
| 1
 +
| 0
 +
| 0
 +
| 1
 +
|-
 +
| 2
 +
| 0
 +
| 1
 +
| 0
 +
|-
 +
| 3
 +
| 0
 +
| 1
 +
| 1
 +
|-
 +
| 4
 +
| 1
 +
| 0
 +
| 0
 +
|-
 +
| 5
 +
| 1
 +
| 0
 +
| 1
 +
|-
 +
| 6
 +
| 1
 +
| 1
 +
| 0
 +
|-
 +
| 7
 +
| 1
 +
| 1
 +
| 1
 +
|}
  
 
==Liens==
 
==Liens==
 +
 +
Fichiers liés au montage<br />
 +
https://gitlab.com/coagul/arduino/tree/master/beginner_011_deviner_code_secret
  
 
==Auteurs==
 
==Auteurs==
Ligne 95 : Ligne 214 :
 
{{CC-BY-SA France}}  
 
{{CC-BY-SA France}}  
  
[[Catégorie:Électronique/HackLab]] [[Catégorie:Arduino]] [[Catégorie:Fablab_Enfants/Fablab_Kids]] [[Catégorie:Arduino pas à pas]]
+
[[Catégorie:Électronique/HackLab]] [[Catégorie:Arduino]] [[Catégorie:Fablab Jeunesse/Fablab Youth]] [[Catégorie:Arduino pas à pas]]

Version actuelle datée du 11 février 2020 à 14:55

Deviner quels sont les interrupteurs qui déclenchent l'allumage d'une LED

Présentation

Montage simple qui permet de détecter les événements sur 3 interrupteurs, une combinaison secrète permet l'allumage d'une LED.

Coût

Faible

Niveau de difficulté

Vert.png

Outillage nécessaire

  • Arduino
  • planche d'essai

Composants nécessaires

  • 4 résistances de 1kΩ
  • 1 LED
  • 3 boutons poussoirs
  • des fils de connexion

Schémas

Deviner code secret schéma.png
Deviner code secret bb.png

Code source

https://gitlab.com/coagul/arduino/blob/master/beginner/_011_deviner_code_secret/_011_deviner_code_secret.ino

/*

 Faire deviner un code secret
 Apprentissage du binaire en observant le nombre de combinaisons possibles
 
 */

// Initialisation des constantes :
const int bouton1 = 4;     // Numéro de la broche à laquelle est connecté le bouton poussoir 1
const int bouton2 = 3;     // Numéro de la broche à laquelle est connecté le bouton poussoir 2
const int bouton3 = 2;     // Numéro de la broche à laquelle est connecté le bouton poussoir 3

const int ledVerte =  13;      // Numéro de la broche à laquelle est connectée la LED verte

// Déclaration des variables :
int etatBouton1 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 1
int etatBouton2 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 2
int etatBouton3 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 3

// le code dans cette fonction est exécuté une fois au début
void setup() {
  // indique que la broche ledVerte, ledJaune et ledRouge sont des sorties :
  pinMode(ledVerte, OUTPUT);       
  // indique que la broche bouton est une entrée :
  pinMode(bouton1, INPUT);     
  pinMode(bouton2, INPUT);     
  pinMode(bouton3, INPUT);
}

// le code dans cette fonction est exécuté en boucle
void loop(){
  // lit l'état du bouton et stocke le résultat dans etatBouton
  etatBouton1 = digitalRead(bouton1);
  etatBouton2 = digitalRead(bouton2);
  etatBouton3 = digitalRead(bouton3);
  // Si etatBouton1 et etatBouton2 sont à 5V (HIGH) c'est que les boutons sont appuyés, on controle que etatBouton3 n'est pas appuyé
  if ((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 != HIGH)) {     
    digitalWrite(ledVerte, HIGH);   // on éteind la LED verte
    delay(2000);                    // on laisse allumée la led jaune 1/2 seconde
  }
  else {
    // sinon on éteind les LED
    digitalWrite(ledVerte, LOW); 
  }
}

Variantes

Pour aller plus loin voici des variantes possibles du montage :

Bouton 1

if (etatBouton1 == HIGH)&&(etatBouton2 != HIGH)&&(etatBouton3 != HIGH))

Bouton 1 et 2

if ((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 != HIGH))

Bouton 1, 2 et 3

if (((etatBouton1 == HIGH)&&(etatBouton2 == HIGH)&&(etatBouton3 == HIGH)))
+ Essai naturel
Comptage en décimal LED 1 LED 2 LED 3
0 0 0 0
1 0 0 1
2 0 1 0
3 1 0 0
4 1 1 0
5 0 1 1
6 1 0 1
7 1 1 1
+ Compter en binaire
Comptage en décimal LED 1 LED 2 LED 3
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Liens

Fichiers liés au montage
https://gitlab.com/coagul/arduino/tree/master/beginner_011_deviner_code_secret

Auteurs

Licence de la page

Attribution - Partage dans les Mêmes Conditions 3.0 non transposé (CC BY-SA 3.0)

Vous êtes libre de :

  • partager — reproduire, distribuer et communiquer l’œuvre
  • remixer — adapter l’œuvre
  • d’utiliser cette œuvre à des fins commerciales

Selon les conditions suivantes :

  • Attribution — Vous devez attribuer l’œuvre de la manière indiquée par l’auteur de l’œuvre ou le titulaire des droits (mais pas d’une manière qui suggérerait qu’ils vous approuvent, vous ou votre utilisation de l’œuvre).
  • Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci.

http://creativecommons.org/licenses/by-sa/3.0/deed.fr