//PROGRAMME D ESSAI AU SOL #include //I2C library #include // Constantes const int decoupleur = 5; const int lock = 3; const int maintenance = 4; const int buzzer = 2; const int led = 13; const int decompte = 10000;//décompte en millis; // Constantes à fixer const int ouverture = 0;//position du servo découpleur ouvert const int fermeture = 25;//position du servo découpleur fermé // Variables validées int n; //compteur de boucle long t0;//début du test long t;// timer bool test_on;//indique que l'essai est en cours bool locked; //true = armé et prêt au lancement, false si réglage bool separateur_ouvert; // état du séparateur //Servo de découplage Servo myServo; void setup() { Wire.begin(); // Init port I2C Serial.begin(9600); // Init port série myServo.attach(decoupleur); // attache servo sur E/S myServo.write(fermeture);//position ouverte par defaut pinMode(lock, INPUT);// pour la tirette de sécurité pinMode(maintenance, INPUT);// pour la manipulaton du separateur pinMode(led, OUTPUT);// voyant led de controle de la carte Nano if (digitalRead(lock) == HIGH) { locked = false;//tirette enclenchée, interrupteur fermé, pin à +5V } else { locked = true;//tirette retirée, interrupteur fermé, pin à 0 } test_on = false; t = 0; n = 0; } void loop() { //mode de vol while (locked == true){//la boucle s'arrête si la tirette de sécu a été mise // infos textuelles et lumineuses digitalWrite(led, HIGH);//led allumée fixe if (n == 0){ Serial.println("mode test"); t0 = millis(); Serial.println(t0); test_on = true; t = t0; n = 1; } // décompte - emmet un bip a chaque seconde if (millis()-t >1000){ t = millis(); Serial.println(t-t0); tone(buzzer, 440); } if (millis()-t >200) { noTone(buzzer); } // ouverture du séparateur à la fin du decompte if (t - t0 > decompte){ Serial.println("Ouverture !!!"); t = 0; myServo.write(ouverture); separateur_ouvert = true; tone(buzzer, 540); delay(200); noTone(buzzer); delay(200); } if (digitalRead(lock) == HIGH){ // verif de l'état de la tirette de sécu locked = false; Serial.println("fin de l'essai"); } else { locked = true; } if (locked == false){ n = 0; } } //mode maintenance - manipulation du separateur while (locked == false){ test_on = false; digitalWrite(led, LOW);//led eteinte if (n == 0){ Serial.println("mode maintenance"); n = 1; } if (digitalRead(maintenance) == HIGH){ if (separateur_ouvert == false){ Serial.println("decoupleur ouvert"); myServo.write(ouverture); separateur_ouvert = true; delay(300); } else{ Serial.println("decoupleur fermé"); myServo.write(fermeture); myServo.write(fermeture-3); myServo.write(fermeture); myServo.write(fermeture-2); myServo.write(fermeture); separateur_ouvert = false; delay(300); } } delay(150); digitalWrite(led, HIGH);//led allumée delay(150); if (digitalRead(lock)== HIGH){ locked = false; } else { locked = true; Serial.println("fin mode maintenance"); n = 0; Serial.println(n); } if (locked == true){ n = 0; } } }