Binome2019-7 : Différence entre versions

De Wiki de bureau d'études PeiP
(Codage du dé)
(Codage du dé)
Ligne 34 : Ligne 34 :
 
Une fois le dé complètement fabriqué, il ne reste plus qu'à coder notre microcontrôleur. On utilise à cette fin l'Arduino IDE. Le code ci-dessous permet de donner un chiffre aléatoire compris entre 1 et 6. A chacune de ces valeurs correspond une combinaison de leds qui permet son affichage par le dé.
 
Une fois le dé complètement fabriqué, il ne reste plus qu'à coder notre microcontrôleur. On utilise à cette fin l'Arduino IDE. Le code ci-dessous permet de donner un chiffre aléatoire compris entre 1 et 6. A chacune de ces valeurs correspond une combinaison de leds qui permet son affichage par le dé.
  
Voici le code: //========FONCTIONS PERSONALISEES - Il s'agit de fonctions
+
Voici le code ci-dessous :
  
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type "void" car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.
+
void extinction() { //Permet d'éteindre toutes les leds. Fonction de type "void" car ne fait qu'executer les instructions.
  
  digitalWrite(0, LOW); //Eteindre la led 1
+
  digitalWrite(0, LOW); //Ferme la première led
  digitalWrite(1, LOW); //Eteindre la led 2
+
  digitalWrite(1, LOW); //Ferme la deuxième led
  digitalWrite(2, LOW); //Eteindre la led 3
+
  digitalWrite(2, LOW); //Ferme la troisième led
  digitalWrite(3, LOW); //Eteindre la led 4
+
  digitalWrite(3, LOW); //Ferme la quatrième led
  digitalWrite(4, LOW); //Eteindre la led 5
+
  digitalWrite(4, LOW); //Ferme la cinquième led
  digitalWrite(5, LOW); //Eteindre la led 6
+
  digitalWrite(5, LOW); //Ferme la sixième led
  digitalWrite(6, LOW); //Eteindre la led 7
+
  digitalWrite(6, LOW); //Ferme la septième led
 
}
 
}
  
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.
+
void controle_led(int nb) { //Allume les leds affectées à chaque nombre.
  
  //Elle prend en paramètre le nombre que l'on veut afficher.
+
  //Paramétré par le chiffre à afficher.
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes
+
  switch (nb) { //Idem qu'un if mais en non-booléen.
 
   case 1:  
 
   case 1:  
 
     digitalWrite(4, HIGH);
 
     digitalWrite(4, HIGH);
Ligne 87 : Ligne 87 :
 
}
 
}
  
int chercher() {
+
int trouver() {
  
 
  return random(1, 7);
 
  return random(1, 7);
Ligne 110 : Ligne 110 :
 
  if (digitalRead(9) ==  LOW) {  
 
  if (digitalRead(9) ==  LOW) {  
  
   for (int i = 1; i <= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens
+
   for (int i = 6; i >=1 ; i--) { // Sers à créer un décompte ( 6, 5, 4, 3, 2, 1...).
     afficher(chercher());  
+
     afficher(i);  
 
     delay(200);  
 
     delay(200);  
     toutEteindre();  
+
     extinction();  
 
   }
 
   }
   afficher(chercher()); //On affiche le "vrai" chiffre.
+
   controle_led(trouver()); //Affiche le nombre désigné final.
   delay(3000);  
+
   delay(3500);  
 
   toutEteindre();  
 
   toutEteindre();  
 
    
 
    

Version du 18 mai 2020 à 19:26

Introduction

Par nos premières réflexions, nous avions décidé de créer une clé USB munie d'un système de led confirmant la connexion à un outil informatique. La deuxième idée était d'avoir 2 entrées sur la clé usb afin d'en brancher une deuxième et ainsi d'augmenter sa capacité, même si cette idée semblait assez compliquée a réaliser. Nous allions alors nous atteler à la création d'une clé USB mère (en contact avec le PC) sur laquelle serait venue se brancher d'autres clés filles. Les circonstances ont évidemment perturbé notre projet. Nous nous sommes donc tout d'abord concentré sur la bonne marche d'un dé électronique USB.

Modélisation informatique du dé

Pour la réalisation du dé électronique, nous avons commencé par modéliser le PCB de la carte sur le logiciel Fritzing pour le faire imprimer. Le schéma électrique de la carte contient donc tous les composants électroniques qui s'y trouvent : microcontrôleur (attiny84), bouton, alimentation (batterie), 7 resistances, 7 leds. Une fois ces derniers positionnés et reliés entre eux, nous avons pu dessiner le PCB de la carte en prenant garde que les pistes ne se croisent pas afin d'éviter tout coupe circuit ou toute fausse transmission d'information. Les schéma et rendu du PCB sont à voir ci-dessous.

PCB 1


PCB 27

Réalisation matérielle du dé

C'est une fois la carte imprimée en main que nous y avons soudé les différents composants planifiés. Notre première séance de soudure réalisée à Polytech nous a donné la clé suivante :

2euros


Malheureusement, un voyou a dû dérober notre carte, nous avons donc dû recommencer cette dernière chez nous, grâce au matériel généreusement envoyé par notre prof adoré. Le résultat est comme suit :

Avant

Arriere

Codage du dé

Une fois le dé complètement fabriqué, il ne reste plus qu'à coder notre microcontrôleur. On utilise à cette fin l'Arduino IDE. Le code ci-dessous permet de donner un chiffre aléatoire compris entre 1 et 6. A chacune de ces valeurs correspond une combinaison de leds qui permet son affichage par le dé.

Voici le code ci-dessous :

void extinction() { //Permet d'éteindre toutes les leds. Fonction de type "void" car ne fait qu'executer les instructions.

digitalWrite(0, LOW); //Ferme la première led
digitalWrite(1, LOW); //Ferme la deuxième led
digitalWrite(2, LOW); //Ferme la troisième led
digitalWrite(3, LOW); //Ferme la quatrième led
digitalWrite(4, LOW); //Ferme la cinquième led
digitalWrite(5, LOW); //Ferme la sixième led
digitalWrite(6, LOW); //Ferme la septième led

}

void controle_led(int nb) { //Allume les leds affectées à chaque nombre.

//Paramétré par le chiffre à afficher.
switch (nb) { //Idem qu'un if mais en non-booléen.
  case 1: 
    digitalWrite(4, HIGH);
    break; 
  case 2: 
    digitalWrite(1, HIGH);
    digitalWrite(6, HIGH);
    break;
  case 3:
    digitalWrite(0, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    break;
  case 4:
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(6, HIGH);
    break;
  case 5:
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(4, HIGH);
    break;
  case 6:
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    break;
}

}

int trouver() {

return random(1, 7);

}

//=================================================

void setup() {

pinMode(0, OUTPUT); 
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9,INPUT_PULLUP);

}

void loop() {

if (digitalRead(9) ==   LOW) { 
  for (int i = 6; i >=1 ; i--) { // Sers à créer un décompte ( 6, 5, 4, 3, 2, 1...).
    afficher(i); 
    delay(200); 
    extinction(); 
  }
  controle_led(trouver()); //Affiche le nombre désigné final.
  delay(3500); 
  toutEteindre(); 
  
}

Avancement sur la clé USB

Chronologie

Séances du 27/01 et du 10/02 : Découverte du BE et lancement de l'idée de créer plusieurs clés qui se connectent entre elles pour avoir plus de mémoire.

17/02 : Découverte du logiciel Fritzing et ébauche d'un PCB pour la réalisation d'un dé éléctronique

02/03 : Finalisation du PCB sur Fritzing

Pour la réalisation d'un dé Utilisation de fritzing pour réaliser un PCB Fichier:Quirin martin dé.zip

Problèmes et solutions