#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd (0x27,20,4);
RTC_DS1307 RTC;
#define val 22
#define f14 23
#define f23 24
#define f27 25
#define f30 26
#define f35 27
#define f45 28
#define blanc 29
#define rouge 30
#define noir 31
#define gris 32
#define belec 33
#define bsable 34
#define inc 35
#define dec 36
#define on 37
String typeA,colorA,tl1,cl1,tl2,cl2,tl3,cl3;
int j=0;
int pl1,pl2,pl3,pr1=0,pr2=0,pr3=0;
unsigned int vaj1=0,vaj2=0,vaj3=0;
boolean bpM,bp,binc,bincM,bdec,bdecM;
void setup() {
lcd.begin(20, 4);
//pinmode des buttons de type de refrigirateur
pinMode(f14,INPUT);pinMode(f23,INPUT);pinMode(f27,INPUT);pinMode(f30,INPUT);pinMode(f35,INPUT);pinMode(f45,INPUT);
//pinmode des buttons de couleur de refrigirateur
pinMode(blanc,INPUT);pinMode(rouge,INPUT);pinMode(noir,INPUT);pinMode(gris,INPUT);pinMode(belec,INPUT);pinMode(bsable,INPUT);
//pinmode des buttons de validation,incrementation et decrementation de nombre d'article et le bouton on/off
pinMode (val, INPUT);pinMode (inc, INPUT);pinMode (dec, INPUT);pinMode (on, INPUT);
Wire.begin();
lcd.init(); // initialisation de l'afficheur
RTC.begin();
if (! RTC.isrunning())
{
lcd.print("RTC is NOT running!");// This will reflect the time that your sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop() {
if (digitalRead(on)==1){
date();
if(digitalRead(f14)||digitalRead(f23)||digitalRead(f27)||digitalRead(f30)||digitalRead(f35)||digitalRead(f45)||digitalRead(blanc)||digitalRead(belec)||digitalRead(bsable)||digitalRead(rouge)||digitalRead(noir)||digitalRead(gris)||digitalRead(inc)||digitalRead(dec)||digitalRead(val)==1)
{ lcd.clear(); //effacer l'affichage pour la re-ecriture
}
binc=digitalRead(inc); bdec=digitalRead(dec);
if (j==0){
botton();tl1=typeA; cl1=colorA;
if (binc!=bincM){bincM=binc;
if (binc==1){if (vaj1==500){vaj1=500;}
else vaj1=vaj1+5;
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(vaj1==0){vaj1=000;}
else vaj1=vaj1-5;
}
}
}
if (j==1){
botton();tl2=typeA; cl2=colorA;
if (binc!=bincM){bincM=binc;
if (binc==1){if (vaj2==500){vaj2=500;}
else vaj2=vaj2+5;
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(vaj2==0){vaj2=0;}
else vaj2=vaj2-5;
}
}
}
if (j==2){
botton();tl3=typeA; cl3=colorA;
if (binc!=bincM){bincM=binc;
if (binc==1){if (vaj3==500){vaj3=500;}
else vaj3=vaj3+5;
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(vaj3==0){vaj3=0;}
else vaj3=vaj3-5;
}
}
}
if (j==3){
lcd.setCursor(17,1); lcd.print(" ? ");
lcd.setCursor(17,2); lcd.print(" ? ");
lcd.setCursor(17,3); lcd.print(" ? ");
}
else{
botton();
lcd.setCursor(17,1); lcd.print(pr1);
lcd.setCursor(17,2); lcd.print(pr2);
lcd.setCursor(17,3); lcd.print(pr3);
if ((tl1==typeA)&&(cl1==colorA)){
if (binc!=bincM){bincM=binc;
if (binc==1){if (pl1==vaj1){ pl1=vaj1; pr1=((pl1*100)/vaj1);}
else {pl1=pl1+1;pr1=((pl1*100)/vaj1);}
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(pl1==0){pl1=0;pr1=((pl1*100)/vaj1);}
else {pl1=pl1-1;pr1=((pl1*100)/vaj1);}
}
}
}
if ((tl2==typeA)&&(cl2==colorA)){
if (binc!=bincM){bincM=binc;
if (binc==1){if (pl2==vaj2){pl2=vaj2;pr2=((pl2*100)/vaj2);}
else {pl2=pl2+1;pr2=((pl2*100)/vaj2);}
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(pl2==0){pl2=0;pr2=((pl2*100)/vaj2);}
else {pl2=pl2-1;pr2=((pl2*100)/vaj2);}
}
}
}
if ((tl3==typeA)&&(cl3==colorA)){
if (binc!=bincM){bincM=binc;
if (binc==1){if (pl3==vaj3){pl3=vaj3;pr3=((pl3*100)/vaj3);}
else {pl3=pl3+1;pr3=((pl3*100)/vaj3);}
}
}
if (bdec!=bdecM){bdecM=bdec;
if (bdec==1){
if(pl3==0){pl3=0;pr3=((pl3*100)/vaj3);}
else {pl3=pl3-1;pr3=((pl3*100)/vaj3);}
}
}
}
}
if(bp!= bpM){
bpM=bp; //le maitient de bouton poussoir ne se compte qu'une seule fois (front montant)
if(bp==1){
j++;
typeA="_ _";colorA=" _ _ ";
}
}
lcd.setCursor(12,0); lcd.print ("Chaine A");
lcd.setCursor(0,1); lcd.print(tl1);
lcd.setCursor(4,1); lcd.print(cl1);
lcd.setCursor(9,1); lcd.print(":");
lcd.setCursor(10,1); lcd.print(pl1);
lcd.setCursor(13,1); lcd.print("/");
lcd.setCursor(14,1); lcd.print(vaj1);
lcd.setCursor(0,2); lcd.print(tl2);
lcd.setCursor(4,2); lcd.print(cl2);
lcd.setCursor(9,2); lcd.print(":");
lcd.setCursor(10,2); lcd.print(pl2);
lcd.setCursor(13,2); lcd.print("/");
lcd.setCursor(14,2); lcd.print(vaj2);
lcd.setCursor(0,3); lcd.print(tl3);
lcd.setCursor(4,3); lcd.print(cl3);
lcd.setCursor(9,3); lcd.print(":");
lcd.setCursor(10,3); lcd.print(pl3);
lcd.setCursor(13,3); lcd.print("/");
lcd.setCursor(14,3); lcd.print(vaj3);
bp=digitalRead(val);
}
if (digitalRead(on)==0){
j=0;typeA=" "; colorA=" "; pl1=0;pl2=0;pl3=0;vaj1=0;vaj2=0;vaj3=0;tl1=tl2=tl3=" "; cl1=cl2=cl3=" ";
delay(100000);
lcd.clear();}
}
void botton() {
if(digitalRead (f14)==1){
typeA="F14";}
if(digitalRead (f23)==1){
typeA="F23";}
if(digitalRead (f27)==1){
typeA="F27";}
if(digitalRead (f30)==1){
typeA="F30";}
if(digitalRead (f35)==1){
typeA="F35";}
if(digitalRead (f45)==1){
typeA="F45";}
if (digitalRead (blanc)==1){
colorA="blanc";}
if (digitalRead (rouge)==1){
colorA="rouge"; }
if (digitalRead (noir)==1){
colorA="noir "; }
if (digitalRead (gris)==1){
colorA="gris "; }
if (digitalRead (bsable)==1){
colorA="b.sab"; }
if (digitalRead (belec)==1){
colorA="b.elc"; }
}
void date(){
DateTime now = RTC.now();
lcd.setCursor (0,0);lcd.print ("le");
lcd.setCursor (2,0);lcd.print (now.day());
lcd.setCursor (4,0);lcd.print ("/");
lcd.setCursor(5,0);lcd.print(now.month());
lcd.setCursor (7,0);lcd.print ("/");
lcd.setCursor (8,0);lcd.print(now.year());
}