/********** Charge et décharge d'un condensateur *************** * * On mesure la tension aux bornes d'un condensateur pendant qu'il * se charge, puis pendant qu'il se décharge. * ***************************************************************/ int etat = 0; // 0 au début, 1 pendant la charge // 2 pendant la décharge, 3 quand c'est fini long previousMillis = 0; long interval = 20; // nombre de millisecondes entre chaque mesure void setup() { pinMode(8, OUTPUT); // alimentation du condensateur Serial.begin(9600); // dans un premier temps, on s'assure que le condensateur est // completement déchargé Serial.println("Preparation du condensateur"); digitalWrite(8,LOW); delay(2000); // nouvel etat: charge du condensateur etat = 1; Serial.println("Charge du condensateur"); digitalWrite(8,HIGH); // on met en marche l'alimentation } void loop() { unsigned long currentMillis = millis(); int tension; float U; if(currentMillis - previousMillis >= interval) { // il est temps de prendre une nouvelle mesure previousMillis = currentMillis; if (etat == 1) { // charge du condensateur tension = analogRead(A0); U=tension*5.00/1023; if (tension < 1020){ // pas completement chargé Serial.println(U); } else{ // completement chargé // on change d'état: décharge du condensateur etat = 2; Serial.println(); Serial.println("Decharge du condensateur"); digitalWrite(8,LOW); // désactivation de l'alimentation } } if (etat == 2) { // décharge tension = analogRead(A0); U=tension*5.00/1023; if (tension > 3){ // pas completement déchargé Serial.println(U); } else { // completement déchargé etat = 3; // on change d'état: tout est terminé } } } }