Binome2019-9 : Différence entre versions

De Wiki de bureau d'études PeiP
(Projet Intermédiaire: Le dé électronique)
(Projet Intermédiaire: Le dé électronique)
Ligne 59 : Ligne 59 :
  
 
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE
 
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE
 +
 +
Le voici:
  
 
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins
 
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins

Version du 30 mars 2020 à 06:58

Introduction

Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.




Partie Réflexion

Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.

Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB :

  • un haut-parleur (bruitage lors du remplissage, de la connexion, etc)
  • vumètre à LED
  • Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)
  • ajouter de la mémoire via un SHIELD

Composants

  • Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.
  • une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8

TUSB4041I Four-Port USB 2.0 Hub

Test ReX 15/03/2020

Après quelques soudures le programme suivant passe sur l'ATtiny84 :

#define MAX_LED 7
int leds[]={0,1,2,3,4,5,6};
void setup() {
  int i;
  for(i=0;i<MAX_LED;i++) pinMode(leds[i], OUTPUT);
}
void loop() {
  int i;
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], HIGH);
  delay(1000);
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], LOW);
  delay(1000);
}

Démonstration de l'exécution : media:binome2019-9-test1.mp4.

Projet Intermédiaire: Le dé électronique

Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE.

Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair sur notre PCB. Il fallait agencer les composants de sorte qu'aucunes pistes ne se croisent.

Voici une photo de la vue schématique:

Schéma 1.png
Schéma 2.png


Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail très minutieux et assez compliqué.

Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE

Le voici:

//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins

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.

 digitalWrite(0, LOW); //Eteindre la led 1
 digitalWrite(1, LOW); //Eteindre la led 2
 digitalWrite(2, LOW); //Eteindre la led 3
 digitalWrite(3, LOW); //Eteindre la led 4
 digitalWrite(4, LOW); //Eteindre la led 5
 digitalWrite(5, LOW); //Eteindre la led 6
 digitalWrite(6, LOW); //Eteindre la led 7

}

void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.

 //Elle prend en paramètre le nombre que l'on veut afficher.
 switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes
   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 chercher() {

 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 = 1; i <= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens
     afficher(chercher()); 
     delay(200); 
     toutEteindre(); 
   }
   afficher(chercher()); //On affiche le "vrai" chiffre.
   delay(3000); 
   toutEteindre(); 
   
 }

}