Beer Clock : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
 
(13 révisions intermédiaires par le même utilisateur non affichées)
Ligne 32 : Ligne 32 :
  
 
=== Code Arduino ===
 
=== Code Arduino ===
 +
 +
<nowiki>#define ledPin1 11 // LED connected to pin 11</nowiki>
 +
 +
<nowiki>#define ledPin2 10</nowiki>
 +
 +
<nowiki>#define ledPin3 9</nowiki>
 +
 +
<nowiki>#define ledPin4 6</nowiki>
 +
 +
<nowiki>#define ledPin5 5</nowiki>
 +
 +
<nowiki>#define BP1 13</nowiki>
 +
 +
<nowiki>#define BP2 12</nowiki>
 +
 +
<nowiki>#define BP3 8</nowiki>
 +
 +
<nowiki>int BP1state = 0;</nowiki>
 +
 +
<nowiki>int BP2state = 0;</nowiki>
 +
 +
<nowiki>int BP3state = 0;</nowiki>
 +
 +
<nowiki>int hour;</nowiki>
 +
 +
 +
<nowiki>void setup()  { </nowiki>
 +
 +
  <nowiki>Serial.begin(9600);</nowiki>
 +
 +
  <nowiki>pinMode(ledPin1, OUTPUT);</nowiki>
 +
  <nowiki>pinMode(ledPin2, OUTPUT);</nowiki>
 +
  <nowiki>pinMode(ledPin3, OUTPUT);</nowiki>
 +
  <nowiki>pinMode(ledPin4, OUTPUT);</nowiki>
 +
  <nowiki>pinMode(ledPin5, OUTPUT);</nowiki>
 +
 +
  <nowiki>pinMode(BP1, INPUT);</nowiki>
 +
  <nowiki>pinMode(BP2, INPUT);</nowiki>
 +
  <nowiki>pinMode(BP3, INPUT);</nowiki>
 +
 +
<nowiki>}</nowiki>
 +
 +
 +
<nowiki>void startCount(float hours) {</nowiki>
 +
  <nowiki>long int duree;</nowiki>
 +
  <nowiki>duree = hours*3600*1000;</nowiki>
 +
  <nowiki>delay(duree/5);</nowiki>
 +
 +
  <nowiki>//Clignotement Led 5</nowiki>
 +
  <nowiki>digitalWrite(ledPin5, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin5, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin5, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin5, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin5, LOW);</nowiki>
 +
  <nowiki>delay((duree/5)-2000);</nowiki>
 +
 +
  <nowiki>//Clignotement Led 4</nowiki>
 +
  <nowiki>digitalWrite(ledPin4, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin4, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin4, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin4, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin4, LOW);</nowiki>
 +
  <nowiki>delay((duree/5)-2000);</nowiki>
 +
 +
  <nowiki>//Clignotement Led 3</nowiki>
 +
  <nowiki>digitalWrite(ledPin3, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin3, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin3, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin3, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin3, LOW);</nowiki>
 +
  <nowiki>delay((duree/5)-2000);</nowiki>
 +
 +
  <nowiki>//Clignotement Led 2</nowiki>
 +
  <nowiki>digitalWrite(ledPin2, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin2, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin2, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin2, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin2, LOW);</nowiki>
 +
  <nowiki>delay((duree/5)-2000);</nowiki>
 +
 +
  <nowiki>//Clignotement Led 1</nowiki>
 +
  <nowiki>digitalWrite(ledPin1, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin1, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin1, LOW);</nowiki>
 +
  <nowiki>delay(500); </nowiki>
 +
  <nowiki>digitalWrite(ledPin1, HIGH);</nowiki>
 +
  <nowiki>delay(500);</nowiki>
 +
  <nowiki>digitalWrite(ledPin1, LOW);</nowiki>
 +
  <nowiki>delay((duree/5)-2000);</nowiki>
 +
 +
<nowiki>}</nowiki>
 +
 +
 +
<nowiki>void loop()  {</nowiki>
 +
  <nowiki>// read the buttons</nowiki>
 +
  <nowiki>BP1state = digitalRead(BP1);</nowiki>
 +
  <nowiki>BP2state = digitalRead(BP2);</nowiki>
 +
  <nowiki>BP3state = digitalRead(BP3);</nowiki>
 +
 +
 +
  <nowiki>if(BP1state && BP2state && BP3state)</nowiki>
 +
  <nowiki>{</nowiki>
 +
    <nowiki>digitalWrite(ledPin1, LOW);</nowiki>
 +
    <nowiki>digitalWrite(ledPin2, LOW);</nowiki>
 +
    <nowiki>digitalWrite(ledPin3, LOW);</nowiki>
 +
    <nowiki>digitalWrite(ledPin4, LOW);</nowiki>
 +
    <nowiki>digitalWrite(ledPin5, LOW);</nowiki>
 +
  <nowiki>}</nowiki>
 +
 +
 +
  <nowiki>if(!BP1state)</nowiki>
 +
  <nowiki>{</nowiki>
 +
    <nowiki>digitalWrite(ledPin1, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin2, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin3, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin4, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin5, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>startCount(7);</nowiki>
 +
 +
  <nowiki>}</nowiki>
 +
 +
 +
  <nowiki>if(!BP2state)</nowiki>
 +
  <nowiki>{</nowiki>
 +
    <nowiki>digitalWrite(ledPin1, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin2, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin3, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin4, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin5, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>startCount(4);</nowiki>
 +
 +
  <nowiki>}</nowiki>
 +
 +
  <nowiki>if(!BP3state)</nowiki>
 +
  <nowiki>{</nowiki>
 +
    <nowiki>digitalWrite(ledPin1, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin2, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin3, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin4, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>digitalWrite(ledPin5, HIGH);</nowiki>
 +
    <nowiki>delay(300);</nowiki>
 +
    <nowiki>startCount(3);</nowiki>
 +
  <nowiki>}</nowiki>
 +
 +
 +
<nowiki>}</nowiki>
  
 
=== Support ===
 
=== Support ===
Ligne 38 : Ligne 216 :
  
 
[[Fichier:Gabarit Bière Beeer Clock.svg | 400px | thumb | center | Gabarit du support]]
 
[[Fichier:Gabarit Bière Beeer Clock.svg | 400px | thumb | center | Gabarit du support]]
 +
 +
Voici ce que nous avons obtenu après passage à la découpeuse laser :
 +
 +
[[Fichier:Support Beer Clock.jpg | 400px | thumb | center | Support après découpage (sans les trous)]]
 +
 +
Nous n'avions cependant pas encore ajouter les lignes pour les trous, ce qui explique que le support soit "plein". À cause de cette erreur, et comme nous n'avons pas réussi à replacer parfaitement la plaque dans l'imprimante, les trous ont finalement été légèrement décalés.
  
 
=== Assemblage ===
 
=== Assemblage ===
  
[[Fichier:Soudure Beer Clock.jpg | 300px | thumb | left | Soudure des composants au support]] [[Fichier:Assemblage Beer Clock Final.jpg | 200px | thumb | center | Arrière du montage final]] [[Fichier:Beer Clock.jpg | 300px | thumb | right | Montage final]]
+
[[Fichier:Soudure Beer Clock.jpg | 300px | thumb | center | Soudure des composants au support]]
 +
 
 +
[[Fichier:Assemblage Beer Clock Final.jpg | 200px | thumb | center | Arrière du montage final]]
 +
 
 +
[[Fichier:Beer Clock.jpg | 300px | thumb | center | Montage final]]
  
 
[[Catégorie:Enib2019]]
 
[[Catégorie:Enib2019]]

Version actuelle datée du 23 janvier 2019 à 10:01

C'est l'heure de l'apéro !

Logo-enib.png

Description du projet

Nous avons réaliser ce projet dans le but de répondre à un besoin de la Cafétéria de l'ENIB, savoir si lors des apéros et autres événements nous pouvons nous faire servir une bière. Nous avons ainsi eu l'idée de créer une horloge. Au début de la soirée, nous pouvons ainsi sélectionner la durée de la soirée (3h, 4h ou 7h) en appuyant sur le bouton poussoir adéquat. Lors de l'appui sur le bouton, les 5 LEDs présentent sur la plaque en forme de bière s'allume. Au fur et à mesure que le temps passe, les LEDs clignotent puis s'éteignent une par une, afin qu'à la fin du décompte plus rien ne soit allumé.

Matériel nécessaire

Pour la partie programmable :

• 1 Carte Arduino
• 3 Boutons Poussoirs
• 3 Résistances de 10kΩ
• 5 LEDs
• 5 Résistances de 330Ω

Pour la partie support :

• 1 planche de medium de 25 cm x 20 cm
• 1 découpeuse laser

Réalisation

Schéma de câblage

Avec l'aide du logiciel Fritzing, nous avons réalisé le schéma de câblage suivant :

Schéma de câblage

Code Arduino

#define ledPin1 11 // LED connected to pin 11

#define ledPin2 10

#define ledPin3 9

#define ledPin4 6

#define ledPin5 5

#define BP1 13

#define BP2 12

#define BP3 8

int BP1state = 0;

int BP2state = 0;

int BP3state = 0;

int hour;


void setup() {

 Serial.begin(9600);
 pinMode(ledPin1, OUTPUT);
 pinMode(ledPin2, OUTPUT);
 pinMode(ledPin3, OUTPUT);
 pinMode(ledPin4, OUTPUT);
 pinMode(ledPin5, OUTPUT);
 pinMode(BP1, INPUT);
 pinMode(BP2, INPUT);
 pinMode(BP3, INPUT);

}


void startCount(float hours) {

 long int duree;
 duree = hours*3600*1000;
 delay(duree/5);
 //Clignotement Led 5
 digitalWrite(ledPin5, LOW);
 delay(500); 
 digitalWrite(ledPin5, HIGH);
 delay(500);
 digitalWrite(ledPin5, LOW);
 delay(500); 
 digitalWrite(ledPin5, HIGH);
 delay(500);
 digitalWrite(ledPin5, LOW);
 delay((duree/5)-2000);
 //Clignotement Led 4
 digitalWrite(ledPin4, LOW);
 delay(500); 
 digitalWrite(ledPin4, HIGH);
 delay(500);
 digitalWrite(ledPin4, LOW);
 delay(500); 
 digitalWrite(ledPin4, HIGH);
 delay(500);
 digitalWrite(ledPin4, LOW);
 delay((duree/5)-2000);
 //Clignotement Led 3
 digitalWrite(ledPin3, LOW);
 delay(500); 
 digitalWrite(ledPin3, HIGH);
 delay(500);
 digitalWrite(ledPin3, LOW);
 delay(500); 
 digitalWrite(ledPin3, HIGH);
 delay(500);
 digitalWrite(ledPin3, LOW);
 delay((duree/5)-2000);
 //Clignotement Led 2
 digitalWrite(ledPin2, LOW);
 delay(500); 
 digitalWrite(ledPin2, HIGH);
 delay(500);
 digitalWrite(ledPin2, LOW);
 delay(500); 
 digitalWrite(ledPin2, HIGH);
 delay(500);
 digitalWrite(ledPin2, LOW);
 delay((duree/5)-2000);
 //Clignotement Led 1
 digitalWrite(ledPin1, LOW);
 delay(500); 
 digitalWrite(ledPin1, HIGH);
 delay(500);
 digitalWrite(ledPin1, LOW);
 delay(500); 
 digitalWrite(ledPin1, HIGH);
 delay(500);
 digitalWrite(ledPin1, LOW);
 delay((duree/5)-2000);

}


void loop() {

 // read the buttons
 BP1state = digitalRead(BP1);
 BP2state = digitalRead(BP2);
 BP3state = digitalRead(BP3);


 if(BP1state && BP2state && BP3state)
 {
   digitalWrite(ledPin1, LOW);
   digitalWrite(ledPin2, LOW);
   digitalWrite(ledPin3, LOW);
   digitalWrite(ledPin4, LOW);
   digitalWrite(ledPin5, LOW);
 }


 if(!BP1state)
 {
   digitalWrite(ledPin1, HIGH);
   delay(300);
   digitalWrite(ledPin2, HIGH);
   delay(300);
   digitalWrite(ledPin3, HIGH);
   delay(300);
   digitalWrite(ledPin4, HIGH);
   delay(300);
   digitalWrite(ledPin5, HIGH);
   delay(300);
   startCount(7);
 }


 if(!BP2state)
 {
   digitalWrite(ledPin1, HIGH);
   delay(300);
   digitalWrite(ledPin2, HIGH);
   delay(300);
   digitalWrite(ledPin3, HIGH);
   delay(300);
   digitalWrite(ledPin4, HIGH);
   delay(300);
   digitalWrite(ledPin5, HIGH);
   delay(300);
   startCount(4);
 }
 if(!BP3state)
 {
   digitalWrite(ledPin1, HIGH);
   delay(300);
   digitalWrite(ledPin2, HIGH);
   delay(300);
   digitalWrite(ledPin3, HIGH);
   delay(300);
   digitalWrite(ledPin4, HIGH);
   delay(300);
   digitalWrite(ledPin5, HIGH);
   delay(300);
   startCount(3);
 }


}

Support

Après avoir vectoriser l'image de notre choix sur le logiciel InkScape, nous avons ajouter des emplacements pour les LEDs et les boutons poussoirs. Ci-dessous, le fichier SVG final compatible avec l'utilisation de la découpeuse laser :

Gabarit du support

Voici ce que nous avons obtenu après passage à la découpeuse laser :

Support après découpage (sans les trous)

Nous n'avions cependant pas encore ajouter les lignes pour les trous, ce qui explique que le support soit "plein". À cause de cette erreur, et comme nous n'avons pas réussi à replacer parfaitement la plaque dans l'imprimante, les trous ont finalement été légèrement décalés.

Assemblage

Soudure des composants au support
Arrière du montage final
Montage final