Deviner un code secret avec Arduino

De L'abscisse - FabLab et Hackerspace de Dijon
Révision datée du 5 mars 2017 à 09:17 par Dlareg (discussion | contributions) (Liens)
Aller à : navigation, rechercher

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

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 est à 5V (HIGH) c'est que le bouton est appuyé
  if ((etatBouton1 == HIGH)&&(etatBouton2 == 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 :

Liens

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