Et voila un premier jet, il y a des choses à refaire de toute façon, et forcément à simplifier le code :
//Bibliothèque
#include <ScheduleTable.h>
//Variables pour les tables
//Laisser à 1 pour un cycle de 24h en 24 min, pour accélérer, augmenter jusqu'à 200 max
const byte acceleration = 1;
//----------------------------
//Table générale
const byte actionTable = 4;
ScheduleTable cycle(actionTable, 1440, (1000/acceleration)); //24 min rééls pour un jour de 24h
//--------------------
//Table jour/nuit pour le soleil (ton chaud et froid)
ScheduleTable leverchaud(1, (470/acceleration));
ScheduleTable coucherchaud(1, (235/acceleration));
ScheduleTable leverfroid(1, (470/acceleration));
ScheduleTable coucherfroid(1, (235/acceleration));
// Pin des pwm
const byte pinchaud = 3;
const byte pinfroid =5;
//Variables pour pwm
byte chaudpwm = 0;
byte froidpwm = 0;
void setup() {
// ajout des taches sur la table générale
cycle.at(600, setleverchaud);
cycle.at(1140, setcoucherchaud);
cycle.at(360, setleverfroid);
cycle.at(1080, setcoucherfroid);
//ajout sur table annexe
leverchaud.at(0, pwmleverchaud);
leverfroid.at(0, pwmleverfroid);
coucherchaud.at(0, pwmcoucherchaud);
coucherfroid.at(0, pwmcoucherfroid);
cycle.start();
pinMode(pinchaud, OUTPUT);
pinMode(pinfroid, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
ScheduleTable::update();
}
//Fonctions pour les scheduleTable
void setleverfroid(){
leverfroid.start(255);
}
void setcoucherfroid(){
coucherfroid.start(255);
}
void setleverchaud(){
leverchaud.start(255);
}
void setcoucherchaud(){
coucherchaud.start(255);
}
void pwmleverfroid(){
froidpwm++;
analogWrite(pinfroid, froidpwm);
}
void pwmcoucherfroid(){
froidpwm--;
analogWrite(pinfroid, froidpwm);
}
void pwmleverchaud(){
chaudpwm++;
analogWrite(pinchaud, chaudpwm);
}
void pwmcoucherchaud(){
chaudpwm--;
analogWrite(pinchaud, chaudpwm);
}