initial commit

This commit is contained in:
gribse 2023-12-08 18:43:37 +00:00
commit 4a7d153391
2 changed files with 658 additions and 0 deletions

200
lean.cpp Normal file
View file

@ -0,0 +1,200 @@
#include <FastLED.h>
//fastled
#define NUM_LEDS 132 //7 * 9 * 2 + 2*3(points)
#define DATA_PIN 3
CRGB leds[NUM_LEDS]; // Define the array of leds
void setup()
{
//Serial
Serial.begin(9600);
//FASTLED
FastLED.addLeds<WS2811, DATA_PIN, GRB>(leds, NUM_LEDS);
//char test[10] = "000000019";
//sevensegment(test, 1, false);
}
void sevensegment(char displayText[9], short displayColor, bool displayPoints) //2 strings
{
Serial.println("Entrée dans sevensegment");
//transformer la matrice de caracteres en une matrice de numéros
//avec
//char 0 = 0
//char 1 = 1
//etc
//char - = 10
int displayNumCode[9];
for(int i=0; i<9; i++)
{
switch (displayText[i])
{
case '0':
displayNumCode[i] = 0;
break;
case '1':
displayNumCode[i] = 1;
break;
case '2':
displayNumCode[i] = 2;
break;
case '3':
displayNumCode[i] = 3;
break;
case '4':
displayNumCode[i] = 4;
break;
case '5':
displayNumCode[i] = 5;
break;
case '6':
displayNumCode[i] = 6;
break;
case '7':
displayNumCode[i] = 7;
break;
case '8':
displayNumCode[i] = 8;
break;
case '9':
displayNumCode[i] = 9;
break;
case '-':
displayNumCode[i] = 10; // -
break;
case ' ':
displayNumCode[i] = 11; // " "
break;
}
}
//afficher l'array displayNumCode
for(int i=0; i<9; i++)
{
Serial.print(displayNumCode[i]);
Serial.print(",");
}
Serial.println("");
//quels segments allumer pour chaque caractere
// 2
// ___
// 3| |1
// |_4_|
// 7| |5
// |___|
// 6
// à revoir
short matrixsevenseg[12][7] = //12 charactères, 012345679-" ", 7 seg
// 1 2 3 4 5 6 7
{ {1,1,1,0,1,1,1}, //char 0
{0,0,1,0,0,0,1}, //char 1
{1,1,0,1,0,1,1}, //char 2
{0,1,1,1,0,1,1}, //char 3
{0,0,1,1,1,0,1}, //char 4
{0,1,1,1,1,1,0}, //char 5
{1,1,1,1,1,1,0}, //char 6
{0,0,1,0,0,1,1}, //char 7
{1,1,1,1,1,1,1}, //char 8
{0,1,1,1,1,1,1}, //char 9
{0,0,0,1,0,0,0}, //char -
{0,0,0,0,0,0,0} //char " " (space)
};
Serial.println("Déclaré la matrice des segments 'matrixsevenseg' ");
//afficher les caracteres individuels
for(int i=0; i<9; i++) //chaque caractère
{
Serial.print("on entre dans le caractère n°");
Serial.println(i);
for(int j = 0; j<7; j++) //chaque segment
{
Serial.print("on entre dans le segments n°");
Serial.println(j);
if(matrixsevenseg[displayNumCode[i]][j] == 1)
{
for(short k; k<2; k++) // les 2 leds du segemnt
{
if(displayColor == 0) //rouge
{
leds[(i+1)*7 +(j+1)*2 + k] = CRGB::Red;
}
else if(displayColor == 1) //rose
{
leds[(i+1)*7 +(j+1)*2 + k] = CRGB::Pink;
}
else if(displayColor == 2) //jaune
{
leds[(i+1)*7 +(j+1)*2 + k] = CRGB::Yellow;
}
}
}
}
}
for(int i=0; i<140; i++
{
Serial.println(leds[i]);
}
//points
if(displayPoints == false)
{
//éteindre les points
for(int m=125; m<=131; m++)
{
leds[m] = CRGB::Black;
}
}
else if(displayPoints)
{
//allumer les points
for(int m=379; m<=396; m++)
{
leds[m] = CRGB::Red; //adapter les points à la couleur de displaycolor
}
}
FastLED.show();
}
void loop()
{
leds[19] = CRGB::Green;
FastLED.show();
char message[9] = "000000019";
sevensegment(message, 0, true);
delay(10000);
}

458
main.cpp Normal file
View file

@ -0,0 +1,458 @@
#include <FastLED.h>
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
SevSeg Display;
const int hrs_set = A0;
const int min_set = A1;
const int ledPin = A3;
unsigned int displayNumber = 0;
const long displayChangeInterval = 500;
unsigned int displayPanel = 0; // 0 = time, 1 = fam's
unsigned long startMillis;
unsigned long currentMillis;
unsigned long previousMillis = 0;
unsigned int date = 0;
unsigned int hour = 0;
unsigned int hrs_var = 0;
unsigned int min_var = 0;
int ledState = LOW;
//fastled
#define NUM_LEDS 396 //7 * 9 * 6 + 6*3(points)
#define DATA_PIN 3
CRGB leds[NUM_LEDS]; // Define the array of leds
//display
short delayFams = 10000; //chaque fam's s'affiche ce temps
short delayTime = 5000; //l'heure s'affiche
void setup()
{
//Serial
Serial.begin(9600);
//RTC
rtc.begin();
pinMode(ledPin, OUTPUT);
pinMode(hrs_set, INPUT_PULLUP);
pinMode(min_set, INPUT_PULLUP);
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
bool resistorsOnSegments = false;
bool updateWithDelays = false;
byte hardwareConfig = COMMON_CATHODE;
bool leadingZeros = true;
bool disableDecPoint = true;
Display.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint);
Display.setBrightness(100);
//FASTLED
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
//7seg
}
int getTime()
{
//Getting the time
t = rtc.getTime();
date = t.date;
hour = t.hour;
hrs_var = t.hour;
min_var = t.min;
return ; //return time
}
void displayTime()
{
displayNumber = hour * 100 + t.min;
Display.setdisplayNumber(displayNumber);
Display.refreshDisplay();
if (digitalRead(hrs_set) == LOW)
{
hrs_var += 1;
if (hrs_var > 23) hrs_var = 0;
rtc.setTime(hrs_var, min_var, 0);
for (int i = 0; i < 1000; i ++)
{
Display.setdisplayNumber(displayNumber);
Display.refreshDisplay();
}
}
if (digitalRead(min_set) == LOW)
{
min_var += 1;
if (min_var >= 60) min_var = 0;
rtc.setTime(hrs_var, min_var, 0);
for (int i = 0; i < 1000; i ++)
{
Display.setdisplayNumber(displayNumber);
Display.refreshDisplay();
}
}
}
void displayFams(int joursRestants)
{
String currentFams;
String famsDuJour1;
String famsDuJour2;
int currentColor = 0; //0 = Blue; 1=Pink; 2=Yellow
int parseJoursRestantsInt;
//liste
String matrixFams[179][2] = //162 fam's, 2 colonnes : joursRestants & texte à afficher
// on peut faire des array de strings ?
// jour restant, fams à afficher
{
{"0", " 100"},
{"0", " 100"},
{"1", " 1"},
{"1", " 100"},
{"2", " 2"},
{"2", " 102-38"},
{"3", " 3"},
{"3", " 103"},
{"4", " 4-51-55"},
{"4", " 104"},
{"5", " 5"},
{"5", " 105-12"},
{"6", " 6"},
{"6", " 106-113"},
{"7", " 7"},
{"7", " 107-180"},
{"8", " 8"},
{"8", " 190-95"},
{"9", " 9"},
{"9", " 109-114"},
{"10"," 10-67"},
{"10"," 110"},
{"11"," 11-41"},
{"11"," 111"},
{"12"," 12-105"},
{"12"," 112"},
{"13"," 13"},
{"13"," 113-106"},
{"14"," 14"},
{"14"," 114-109"},
{"15"," 15 82"},
{"15"," 115-31"},
{"16"," 89"},
{"16"," 116-160"},
{"17"," 17"},
{"17"," 117"},
{"18"," 18-154"},
{"18"," 98"},
{"19"," 19"},//phy's
{"19"," 119-155"},
{"20"," 20-37-58"},
{"20"," 120"},
{"21"," 21-97"},
{"21"," 121"},
{"22"," 22-148"},
{"22"," 122"},
{"23"," 23-164"},
{"23"," 123-80"},
{"24"," 24"},
{"24"," 124-33"},
{"25"," 25-5-94"},
{"25"," 125-133"},
{"26"," 26"},
{"26"," 126"},
{"27"," 27"},
{"27"," 127"},
{"28"," 28-165"},
{"28","128-12959"},
{"29"," 29"},
{"29","129-59128"},
{"30"," 90-158"},
{"30"," 130"},
{"31"," 31-115"},
{"31"," 131-99"},
{"32"," 32"},
{"32"," 132-168"},
{"33"," 99-131"},
{"33"," 133-125"},
{"34"," 34-137"},
{"34"," 134"},
{"35"," 35"},
{"35"," 135"},
{"35"," 335"},//aarhgh
{"36"," 36"},
{"36"," 136-169"},
{"37"," 137-34"},
{"37"," 911"},
{"38"," 38-102"},
{"38"," 95-190"},
{"39"," 39"},
{"39"," 139"},
{"40"," 40"},
{"40","40-140-12"},
{"41"," 41-11"},
{"41"," 141-118"},
{"42"," 42-52"},
{"42"," 142"},
{"43"," 43"},
{"43"," 143"},
{"44"," 44-84-88"},
{"44"," 144"},
{"45"," 45"},
{"45"," 145-65"},
{"46"," 46"},
{"46"," 146"},
{"47"," 47"},
{"47"," 147"},
{"48"," 48-81"},
{"48"," 148-22"},
{"49"," 49"},
{"49"," 149-66"},
{"50"," 50-30"},
{"50"," 150"},
{"51"," 51-4-55"},
{"51"," 151"},
{"52"," 52-42"},
{"52"," 152-53"},
{"53"," 53-152"},
{"53"," 153"},
{"54"," 54"},
{"54"," 91"},
{"55"," 55-4-51"},
{"55"," 155-119"},
{"56"," 56"},
{"56"," 156"},
{"57"," 57-74"},
{"57"," 157"},
{"58"," 58-20-37"},
{"58"," 158-90"},
{"59","59-129128"},
{"59"," 159"},
{"60"," 60-70"},
{"60"," 160-116"},
{"61"," 61-159"},
{"61"," 161"},
{"62"," 62-24"},
{"62"," 62-24"},
{"63"," 93"},
{"63"," 163"},
{"64"," 64"},
{"64"," 164-23"},
{"65"," 65-145"},
{"65"," 165-28"},
{"66"," 66-149"},
{"66"," 96"},
{"67"," 67-65"},
{"67"," 167"},
{"68"," 68"},
{"68"," 168-132"},
{"69"," 69"},
{"69"," 169-136"},
{"70"," 70-60"},
{"70"," 170-71"},
{"71"," 71-170"},
{"71"," 171-173"},
{"72"," 72"},
{"72"," 92"},
{"73"," 73-16"},
{"73"," 173-171"},
{"74"," 74-57"},
{"74"," 94-5-25"},
{"75"," 75"},
{"75"," 75"},
{"76"," 76-108"},
{"76"," 76-108"},
{"77"," 77"},
{"77"," 87"},
{"78"," 78-96"},
{"78"," 178-138"},
{"79"," 79"},
{"79"," 97-21"},
{"80"," 83"},
{"80"," 85"},
{"81"," 84-44-88"},
{"81"," 88-84-44"}
};
//récupérer la date
//transformer en jours restants
//couleurs spéciales
if(currentFams == " 142")
{
currentColor = 1;
Serial.println("Couleur : Rose");
}
else if(currentFams = " 94-5-25")
{
currentColor = 2;
Serial.println("Couleur : Jaune");
}
else
{
currentColor = 0;
Serial.println("Couleur : Rouge");
}
if(joursRestants == 35) // exeption pour les fams 35, 135 et 335
{
}
else
{
famsDuJour1 = matrixFams[joursRestants][2];
famsDuJour2 = matrixFams[joursRestants+1][2];
7segment(famsDuJour1);
delay(delayFams);
}
}
void 7segment(char displayText[9], short displayColor, bool displayPoints) //2 strings
{
// décomposer displayTest en une matrice de caractères
int segmentsChar[9]
for(int i=0; i<9; i++)
{
int temp = 0;
temp = displayText
segmentChar[i] =
}
//transformer la matrice de caracteres en une matrice de numéros
//avec
//char 0 = 0
//char 1 = 1
//etc
//char - = 10
int displayNumCode[];
//quels segments allumer pour chaque caractere
// 6
// ___
// 5| |7
// |_4_|
// 1| |3
// |___|
// 2
bool matrix7seg[11][7] = //11 charactères, 012345679-, 7 seg
// 1 2 3 4 5 6 7
{ {1,1,1,0,1,1,1}, //char 0
{0,0,1,0,0,0,1}, //char 1
{1,1,0,1,0,1,1}, //char 2 continuer ici
{0,1,1,1,0,1,1}, //char 3
{0,0,1,1,1,0,1}, //char 4
{0,1,1,1,1,1,0}, //char 5
{1,1,1,1,1,1,0}, //char 6
{0,0,1,0,0,1,1}, //char 7
{1,1,1,1,1,1,1}, //char 8
{0,1,1,1,1,1,1}, //char 9
{0,0,0,1,0,0,0} //char -
};
//afficher les caracteres individuels
int indiceLed = 0;
for(int i=0; i<9; i++) //chaque numéro
{
for(int j = 0; j<7; j++) //chaque segment
{
if(matrix7seg[displayNumCode][j] == 1)
{
for(indiceLed; k<6; k++) //chaque led
{
if(displayColor == 0) //rouge
{
leds[i*7*6 +j*6 + k] = CRGB::Red;
}
else if(displayColor == 1) //rose
{
leds[i*7*6 +j*6 + k] = CRGB::Pink;
}
else if(displayColor == 2) //jaune
{
leds[i*7*6 +j*6 + k] = CRGB::Yellow;
}
indiceLed = indiceLed+1
}
}
else if(matrix7seg[displayNumCode][j] == 0)
{
}
indiceLed = indiceLed+6
}
indiceLed = indiceLed+()
}
//points
if(displayPoints == false)
{
//éteindre les points
for(int l=379; l<=396; l++)
{
leds[l] = CRGB::Black;
}
}
else if(displayPoints == true)
{
//allumer les points
for(int l=379; l<=396; l++)
{
leds[l] = CRGB::displayColor; //displaycolor est un string
}
}
FastLED.show();
}
void loop()
{
//get the time
//display the time
//get the fams
//display the fam's
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= displayChangeInterval)
{
previousMillis = currentMillis;
if (ledState == LOW)
{
ledState = HIGH;
}
else
{
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
}