2
0
Files
lpsarii/main.cpp

166 lines
3.4 KiB
C++
Raw Permalink Normal View History

2026-01-09 07:46:52 +01:00
#include "main.hpp"
2026-01-09 11:24:51 +01:00
#include "autom.cpp"
#include <thread>
#include <atomic>
int marche_precedent = 0;
int marche_frontmontant = 0;
int arret_precedent = 1;
int arret_frontdescedant = 0;
2026-01-14 21:03:56 +01:00
int bouton_precedent[8];
int bouton_frontmontant[8];
int bouton_frontdescendant[8];
2026-01-14 07:37:16 +01:00
int cycle = 0;
long unsigned tempo = 0;
2026-01-20 07:33:49 +01:00
int compteur[4];
2026-01-14 07:37:16 +01:00
int sens = 1;
int ci = 0;
int mode_auto = 0;
2026-01-14 21:03:56 +01:00
int mode_manu = 0;
2026-01-14 07:37:16 +01:00
int etape = 0;
2026-01-14 21:03:56 +01:00
int etape_2 = 0;
2026-01-21 07:39:24 +01:00
int etape_sauvegarde = 0;
2026-01-14 07:37:16 +01:00
2026-01-14 23:52:06 +01:00
int c7_frontdescendant = 0;
int c7_precedent = 0;
2026-01-14 21:03:56 +01:00
2026-01-20 07:33:49 +01:00
2026-01-09 07:46:52 +01:00
int main()
{
2026-01-09 10:14:37 +01:00
mqtt_open(&client);
2026-01-09 07:46:52 +01:00
std::atomic<bool> running{true};
2026-01-09 09:52:51 +01:00
while (running)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
2026-01-09 09:25:37 +01:00
}
2026-01-09 10:10:14 +01:00
mqtt_close();
2026-01-09 07:46:52 +01:00
return 0;
}
2026-01-20 07:33:49 +01:00
void process()
{
2026-01-21 07:39:24 +01:00
// Gestion du RESET
// ****************************************************************
if (reset == 1) {
std::cout << "RESET" << std::endl;
etape = 0;
return;
}
// ****************************************************************
2026-01-14 23:52:06 +01:00
// Détection des fronts
// front montant (état courant supérieur à l'état précédent)
// front descendant (état courant inférieur à l'état précédent)
// ****************************************************************
marche_frontmontant = marche > marche_precedent;
arret_frontdescedant = arret < arret_precedent;
2026-01-20 07:33:49 +01:00
for (int i = 0; i < 8; i++)
{
2026-01-14 21:03:56 +01:00
bouton_frontmontant[i] = bouton[i] > bouton_precedent[i];
bouton_frontdescendant[i] = bouton[i] < bouton_precedent[i];
}
2026-01-14 23:52:06 +01:00
/* ****************************************************************
2026-01-20 07:33:49 +01:00
VOTRE PROGRAMME COMMENCE ICI
**************************************************************** */
2026-01-21 07:39:24 +01:00
if (etape == 0 && interrupteur[1] == 1 && capteur[1] == 1 && capteur[3] == 1 && capteur[5] == 1) {
etape = 1;
}
2026-01-21 07:39:24 +01:00
if (etape == 1 && !interrupteur[1]) {
etape = 0;
}
2026-01-20 07:33:49 +01:00
2026-01-21 07:39:24 +01:00
if (etape != 11 && interrupteur[2] && interrupteur[1] == 0 && (capteur[1]!=1 || capteur[3]!=1 || capteur[5]!=1))
{
etape = 10;
}
if (etape == 1 && marche_frontmontant) {
etape = 2;
}
if (etape == 2 && capteur[0]) {
etape = 3;
}
if (etape == 3 && capteur[2]) {
etape = 4;
}
if (etape == 4 && capteur[4]) {
etape = 5;
}
if (arret_frontdescedant) {
etape_sauvegarde = etape;
etape = 6;
}
if (etape == 6 && marche_frontmontant) {
etape = etape_sauvegarde;
}
if (etape == 10 && marche_frontmontant)
{
etape = 11;
}
if (etape == 11 && capteur[1] && capteur[3] && capteur[5])
{
etape = 0;
}
if (etape == 1) {
sortie[8] = 1;
}
else if (etape == 5) {
sortie[8] = 3;
}
else if (etape > 1 && etape < 5) {
sortie[8] = 2;
}
else if (etape == 10)
{
sortie[8] = millis() / 500 % 2 ? 2 : 0;;
}
else {
sortie[8] = 0;
}
actionneur[0] = !capteur[0] && etape == 2;
actionneur[2] = !capteur[2] && etape == 3;
actionneur[4] = !capteur[4] && etape == 4;
actionneur[1] = !capteur[1] && etape == 11;
actionneur[3] = !capteur[3] && etape == 11;
actionneur[5] = !capteur[5] && etape == 11;
/* ****************************************************************
VOTRE PROGRAMME S'ARRETE ICI
**************************************************************** */
sortie[10] = etape;
2026-01-14 23:52:06 +01:00
// Prêt pour un nouveau cycle
// L'état courant devient l'état précédent
2026-01-14 23:52:06 +01:00
marche_precedent = marche;
arret_precedent = arret;
2026-01-20 07:33:49 +01:00
for (int i = 0; i < 8; i++)
{
2026-01-14 21:03:56 +01:00
bouton_precedent[i] = bouton[i];
}
2026-01-21 07:39:24 +01:00
c7_precedent = capteur[7];
}