#include "main.hpp" #include "autom.cpp" #include #include int marche_precedent = 0; int marche_frontmontant = 0; int arret_precedent = 1; int arret_frontdescedant = 0; int bouton_precedent[8]; int bouton_frontmontant[8]; int bouton_frontdescendant[8]; int cycle = 0; long unsigned tempo = 0; int compteur[4]; int sens = 1; int ci = 0; int mode_auto = 0; int mode_manu = 0; int etape = 0; int etape_2 = 0; int etape_sauvegarde = 0; int c7_frontdescendant = 0; int c7_precedent = 0; int main() { mqtt_open(&client); std::atomic running{true}; while (running) { std::this_thread::sleep_for(std::chrono::seconds(1)); } mqtt_close(); return 0; } void process() { // Gestion du RESET // **************************************************************** if (reset == 1) { std::cout << "RESET" << std::endl; etape = 0; return; } // **************************************************************** // 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; for (int i = 0; i < 8; i++) { bouton_frontmontant[i] = bouton[i] > bouton_precedent[i]; bouton_frontdescendant[i] = bouton[i] < bouton_precedent[i]; } /* **************************************************************** VOTRE PROGRAMME COMMENCE ICI **************************************************************** */ if (etape == 0 && interrupteur[1] == 1 && capteur[1] == 1 && capteur[3] == 1 && capteur[5] == 1) { etape = 1; } if (etape == 1 && !interrupteur[1]) { etape = 0; } 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; // Prêt pour un nouveau cycle // L'état courant devient l'état précédent marche_precedent = marche; arret_precedent = arret; for (int i = 0; i < 8; i++) { bouton_precedent[i] = bouton[i]; } c7_precedent = capteur[7]; }