/* SevSeg Counter Example
Copyright 2020 Dean Reading
This example demonstrates a very simple use of the SevSeg library with a 4
digit display. It displays a counter that counts up, showing deci-seconds.
*/
#include "Button.h"
#include "SevSeg.h"
SevSeg sevseg; //Instantiate a seven segment controller object
// Définir le bouton
const int tDelay = 100; // delay between LED switching
const int dataPin = A1; // DS - data serial
const int latchPin = A2; // ST_CP - storage register, latch clock pin
const int clockPin = A3; // SH_CP - shift register clock pin
/* ***************************************************
* Global Variables *
*************************************************** */
bool DirectionState = 0;
/* ***************************************************
* Functions *
*************************************************** */
int datArray[16] = {B11111100, B01100000, B11011010, B11110010, B01100110, B10110110, B10111110, B11100000, B11111110, B11110110, B11101110, B00111110, B10011100, B01111010, B10011110, B10001110};
int datArray1[64] = {
0B0000000000000000000000000000000000000000000000000000000000000000,
0B1000000000000000000000000000000000000000000000000000000000000000,
0B1100000000000000000000000000000000000000000000000000000000000000,
0B1110000000000000000000000000000000000000000000000000000000000000,
0B1111000000000000000000000000000000000000000000000000000000000000,
0B1111100000000000000000000000000000000000000000000000000000000000,
0B1111110000000000000000000000000000000000000000000000000000000000,
0B1111111000000000000000000000000000000000000000000000000000000000,
0B1111111100000000000000000000000000000000000000000000000000000000,
0B1111111110000000000000000000000000000000000000000000000000000000,
0B1111111111000000000000000000000000000000000000000000000000000000,
0B1111111111100000000000000000000000000000000000000000000000000000,
0B1111111111110000000000000000000000000000000000000000000000000000,
0B1111111111111000000000000000000000000000000000000000000000000000,
0B1111111111111100000000000000000000000000000000000000000000000000,
0B1111111111111110000000000000000000000000000000000000000000000000,
0B1111111111111111000000000000000000000000000000000000000000000000,
0B1111111111111111100000000000000000000000000000000000000000000000,
0B1111111111111111110000000000000000000000000000000000000000000000,
0B1111111111111111111000000000000000000000000000000000000000000000,
0B1111111111111111111100000000000000000000000000000000000000000000,
0B1111111111111111111110000000000000000000000000000000000000000000,
0B1111111111111111111111000000000000000000000000000000000000000000,
0B1111111111111111111111100000000000000000000000000000000000000000,
0B1111111111111111111111110000000000000000000000000000000000000000,
0B1111111111111111111111111000000000000000000000000000000000000000,
0B1111111111111111111111111100000000000000000000000000000000000000,
0B1111111111111111111111111110000000000000000000000000000000000000,
0B1111111111111111111111111111000000000000000000000000000000000000,
0B1111111111111111111111111111100000000000000000000000000000000000,
0B1111111111111111111111111111110000000000000000000000000000000000,
0B1111111111111111111111111111111000000000000000000000000000000000,
0B1111111111111111111111111111111100000000000000000000000000000000,
0B1111111111111111111111111111111110000000000000000000000000000000,
0B1111111111111111111111111111111111000000000000000000000000000000,
0B1111111111111111111111111111111111100000000000000000000000000000,
0B1111111111111111111111111111111111110000000000000000000000000000,
0B1111111111111111111111111111111111111000000000000000000000000000,
0B1111111111111111111111111111111111111100000000000000000000000000,
0B1111111111111111111111111111111111111110000000000000000000000000,
0B1111111111111111111111111111111111111111000000000000000000000000,
0B1111111111111111111111111111111111111111100000000000000000000000,
0B1111111111111111111111111111111111111111110000000000000000000000,
0B1111111111111111111111111111111111111111111000000000000000000000,
0B1111111111111111111111111111111111111111111100000000000000000000,
0B1111111111111111111111111111111111111111111110000000000000000000,
0B1111111111111111111111111111111111111111111111000000000000000000,
0B1111111111111111111111111111111111111111111111100000000000000000,
0B1111111111111111111111111111111111111111111111110000000000000000,
0B1111111111111111111111111111111111111111111111111000000000000000,
0B1111111111111111111111111111111111111111111111111100000000000000,
0B1111111111111111111111111111111111111111111111111110000000000000,
0B1111111111111111111111111111111111111111111111111111000000000000,
0B1111111111111111111111111111111111111111111111111111100000000000,
0B1111111111111111111111111111111111111111111111111111110000000000,
0B1111111111111111111111111111111111111111111111111111111000000000,
0B1111111111111111111111111111111111111111111111111111111100000000,
0B1111111111111111111111111111111111111111111111111111111110000000,
0B1111111111111111111111111111111111111111111111111111111111000000,
0B1111111111111111111111111111111111111111111111111111111111100000,
0B1111111111111111111111111111111111111111111111111111111111110000
};
const int boutonPin2 = A1;
Button boutonPin1(13);
bool enCours = false;
int statut_A1=0;
int old_statut_A1=0;
// Indicateur de l'état du chronomètre (true = en cours, false = arrêté)
unsigned long startMillis = 0; // Temps de départ
unsigned long elapsedMillis = 0; // Temps écoulé
void setup() {
byte numDigits = 4;
byte digitPins[] = {2, 3, 4, 5};
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, A0};
bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
byte hardwareConfig = COMMON_ANODE; // See README.md for options
bool updateWithDelays = false; // Default 'false' is Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
boutonPin1.begin();
boutonPin1.set_repeat(500, 200);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
char buffer[4];
int affichage =0;
char bf[32];
bool b1pressed=false;
int delay1=0;
void loop() {
if (b1pressed) {
if (boutonPin1.pressed()) {
b1pressed=false;
}
startMillis=millis() ;
//sevseg.setNumber(affichage); // Afficher les minutes et secondes
//sevseg.refreshDisplay(); // Rafraîchir l'affichage
sprintf(buffer, "%04d", affichage);
sevseg.setChars(buffer);
sevseg.refreshDisplay();
}
else
{
if (boutonPin1.pressed()) {
b1pressed=true;
}
elapsedMillis = millis() - startMillis;
// Afficher le temps en format mm:ss.ddd (minutes, secondes, millisecondes)
unsigned long minutes = elapsedMillis / 60000;
unsigned long secondes = (elapsedMillis % 60000) / 10;
unsigned long millisecondes = elapsedMillis % 1000;
affichage = (minutes * 100) + secondes;
sprintf(buffer, "%04d", affichage);
sevseg.setChars(buffer);
sevseg.refreshDisplay();
delay1++;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, datArray1[1]);
digitalWrite(latchPin, HIGH);
//if(delay1==16000){ delay1=0; }
// if(delay1 % 1000 == 0){ Serial.println((int)delay1); }
}
delay(10);
}