/**********************************************************/
//Auteurs: Alexandre Petrosky, Khaoula Hachemi
//Code Permanent: PETA16029504, HACK04549400
#include "SevSeg.h";
SevSeg sevseg; // Déclaration d’un objet SevSeg
int redLED = 4;
int yellowLED = 5;
int greenLED = 6;
int pushButton = 2;
bool nextGreen = false;
void displayNum(int num) {
//Affichage du chiffre sur le 7 segments
sevseg.setNumber(num);
sevseg.refreshDisplay();
delay(10);
}
void setup() {
//Initialisation des pins
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(pushButton, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pushButton), buttonPressed, FALLING);
//Afficher un seul chiffre
byte numDigits = 1;
// Définir les broches lors de l'utilisation de l'affichage plusieurs chiffres. Laisser vide pour afficher un seul chiffre
byte digitPins[] = {};
// Définir les connexions des broches Arduino dans l'ordre: A, B, C, D, E, F, G, DP
byte segmentPins[] = {13,12, 11, 10, 9, 8, 7, 3};
byte displayType = COMMON_ANODE; //Afficheur ANODE
bool resistorsOnSegments = true; //resistances sont connectés aux broches
//Initialiser l'objet sevseg
sevseg.begin(displayType, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
displayNum(0);
}
void loop() {
//LED rouge s'allume
digitalWrite(redLED, HIGH);
delay(3000);
digitalWrite(redLED, LOW);
//LED jaune s'allume
digitalWrite(yellowLED, HIGH);
delay(1000);
digitalWrite(yellowLED, LOW);
//LED verte s'allume
digitalWrite(greenLED, HIGH);
//Vérication si le bouton a été pesé
if (nextGreen == true) {
decompte();
nextGreen = false;
}
delay(3000);
digitalWrite(greenLED, LOW);
displayNum(0);
}
void buttonPressed() {
//Lorsque le bouton est appuyé on regarde si la LED vert est allumé, si oui on décompte sinon on attend au prochain vert
if (digitalRead(greenLED) == HIGH) {
decompte();
} else {
nextGreen = true;
}
}
void decompte() {
// Décompte de 9 à 0 avec un délai de 1 secondes.
for(int i = 9; i >= 0; i--)
{
displayNum(i);
delay(1000);
}
}