Programmation simple d'un grafcet en deux étapes

Bonjour, j'ai acheter une carte Arduino dans le but d'automatisé la création d'un mélange d'eau pour aquarium. J'ai une formation d'automaticien des années 2000 mais la programmation de ce type je ne connais pas. J'ai appris a déclarer mes entrées et mes sortie mais je suis incapable de lancé une programmation en séquence. A chaque fois que je lance un auto je me perd alors que je souhaite une chose simple :

  1. j'appuie sur le bouton DCY, l'osmoseur se met en route jusqu'au niveau Nosm, ensuite le robinet se met en route jusqu'au niveau Nrob. Je ferais par la suite si je souhaite rajouté des étapes. Mais déjà la ça ne marche pas... j'arrive même pas a compilé. Quelqu'un aurait un exemple de programme séquentiel simple?
    ( actuellement mon erreur est : /Users/yvanernestine/Documents/Arduino/cr_ation_m_lange_eau/cr_ation_m_lange_eau.ino: In function 'void GRAFCET_01_Bool(int, boolean*)':
    cr_ation_m_lange_eau:33:1: error: expected '}' at end of input
    }
    ^
    cr_ation_m_lange_eau:33:1: error: expected '}' at end of input
    exit status 1
    expected '}' at end of input
// On déclare les variables
const int Nosm = 2;  // la broche 2 devient niveau eau osmosée
const int Nrob = 3;    // la broche 3 devient niveau eau robinet
const int Nsec = 4;    // la broche 4 devient niveau sécurité
const int Dcy = 5;    // la broche 5 devient depart cycle
const int OSM = 8;    // la broche 3 devient niveau sécurité
const int ROB = 9;    // la broche 3 devient niveau sécurité


void setup()
{
    pinMode(Nosm, INPUT); // Initialise la broche 2 comme entrée
    pinMode(Nrob, INPUT);   // Initialise la broche 3 comme entrée
    pinMode(Nsec, INPUT);   // Initialise la broche 4 comme entrée
    pinMode(Dcy, INPUT);   // Initialise la broche 5 comme entrée   
    pinMode(OSM, OUTPUT);   // Initialise la broche 8 comme sortie
    pinMode(ROB, OUTPUT);   // Initialise la broche 9 comme sortie
    Serial.begin(9600);     // Ouvre le port série à 9600 bauds
}

void GRAFCET_01_Bool(int fSerie_Lu, boolean *pGRAFCET_Bool)
{
//Gestion des étapes du GRAFCET
  pGRAFCET_Bool[0] = (((pGRAFCET_Bool[2] && fSerie_Lu == 3) || pGRAFCET_Bool[0]) && !pGRAFCET_Bool[1]);
  pGRAFCET_Bool[1] = (((pGRAFCET_Bool[0] && fSerie_Lu == 1) || pGRAFCET_Bool[1]) && !pGRAFCET_Bool[2]);  
  pGRAFCET_Bool[2] = (((pGRAFCET_Bool[1] && fSerie_Lu == 2) || pGRAFCET_Bool[2]) && !pGRAFCET_Bool[0]);
  
//Gestion des actions dans les étapes du GRAFCET

  if (pGRAFCET_Bool[1]){digitalWrite(OSM, HIGH);
  if (pGRAFCET_Bool[2]){digitalWrite(ROB, HIGH);

}

je me rend compte que je n'ai pas déclarer mes transition.... je vois pas ou cela est dans le tutoriel

C'est manque l'accolade fermante sur l'entrée nommée

  if (pGRAFCET_Bool[1]){digitalWrite(OSM, HIGH);
  if (pGRAFCET_Bool[2]){digitalWrite(ROB, HIGH);
devient
  if (pGRAFCET_Bool[1]){digitalWrite(OSM, HIGH)};
  if (pGRAFCET_Bool[2]){digitalWrite(ROB, HIGH)};

Bonjour

Ce se traite facilement ou presque par machine a etat

Lire le post

c'est quoi "auto" ?

un programme qui fait quoi ?
Tu as regardé les exemples fournis avec l'IDE d'Arduino ?

Ton programme n'a pas la fonction "loop" obligatoire sur Arduino, c'est normal ?

Avant d'avoir découvert la "Machine d'état" vu par J.M.L, j'utilisais la librairie plclib

Qui est assez simple à comprendre pour la mise en place d'un grafceg (Étape / Transition)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.