//B. Vandeportaele IUT GEII 29/01/2021 //commande_pince_schunk //Important: LA PINCE DOIT S'OUVRIR QUAND ON DEBRANCHE DU CONTROLEUR int ouverture = 2; int fermeture = 3; int commande = A0; /////////////////// #define OUVERT 0 #define FERME 1 char etat = OUVERT; /////////////////// void setup() { Serial.begin(9600); Serial.println("Démarrage interface pince Schunk/controleur Staubli CS9"); pinMode(ouverture, OUTPUT); pinMode(fermeture, OUTPUT); pinMode(commande, INPUT); rectify_error(); if (digitalRead(commande) == OUVERT) ouvre(); else ferme(); } /////////////////// //attention logique inversée car je pilote des transistors NPN void rectify_error() { //1-1 en 24V, 0-0 en 5V digitalWrite(ouverture, LOW); digitalWrite(fermeture, LOW); Serial.println("rectify_error"); delay(2000); } /////////////////// void de_energized() { //0-0 en 24V, 1-1 en 5V digitalWrite(ouverture, HIGH); digitalWrite(fermeture, HIGH); delay(20); //>15ms } /////////////////// void ouvre() { //0-1 en 24V, 1-0 en 5V de_energized(); digitalWrite(ouverture, LOW); etat = OUVERT; Serial.println("ouvre"); } /////////////////// void ferme() { //1-0 en 24V, 0-1 en 5V de_energized(); digitalWrite(fermeture, LOW); etat = FERME; Serial.println("ferme"); } /////////////////// void loop() { //code de test pour lire l'état de la sortie du controleur CS9 //Serial.print("etat: "); //Serial.println(digitalRead(commande),DEC); char commande_actuelle = digitalRead(commande); if ((etat == OUVERT) && (commande_actuelle == FERME)) ferme(); if ((etat == FERME) && (commande_actuelle == OUVERT)) ouvre(); } //code de test pour séquences /* ouvre(); delay(5000); ferme(); delay(5000); */ ///////////////////