Beer Clock : Différence entre versions
(30 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | |||
+ | '''C'est l'heure de l'apéro !''' | ||
+ | |||
+ | [[Fichier:Logo-enib.png | 500px | center]] | ||
+ | |||
== Description du projet == | == 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 == | == Matériel nécessaire == | ||
Ligne 12 : | Ligne 18 : | ||
• 5 Résistances de 330Ω | • 5 Résistances de 330Ω | ||
− | Pour la partie | + | Pour la partie support : |
• 1 planche de medium de 25 cm x 20 cm | • 1 planche de medium de 25 cm x 20 cm | ||
Ligne 27 : | Ligne 33 : | ||
=== 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 === | ||
+ | |||
+ | 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 : | ||
[[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 | 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 !
Sommaire
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 :
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 :
Voici ce que nous avons obtenu après passage à la découpeuse laser :
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.