"partiel" { depart = true; capteur_ligne = true; } else {} } void loop() { if (millis() > (temps_top+1000)){DPH!=DPH;DPB!=DPB;digit=52;actionDigitalpoint(digit,DPH,DPB);temps_top = millis();} if (capteur_ligne == true) { detection_passage(); //si pas occupé suite à détection } temps = (millis() - temps_start);init_h_m_s();affichage(); controle_si_interruption(); } void detection_passage() { digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(15); digitalWrite(trigPin, LOW); duree = pulseIn(echoPin, HIGH); //Serial.print(("detection passage duree retour = ")); Serial.println(duree); if (duree < distance) //pour 2m, il faut mettre environ 10000 { capteur_ligne = false; digitalWrite(reportPin, LOW); } } void controle_si_interruption() { if (capteur_ligne == false) // oui, il y a eu interruption "partiel" { temps_au_top_interruption = millis(); //relevé du temps au tour temps = (temps_au_top_interruption - temps_start); temps_start = temps_au_top_interruption; init_h_m_s(); affichage(); while( (millis() = 10 ) {digit=0;valeur=(TempsMn/10);/*aiguillage();*/}//Serial.print(F("TempsMn>10 = "));Serial.println(valeur);}//chiffre significatif pour dizaines de minutes else {digit=0;valeur=0;/*aiguillage();*/}//Serial.print(("TempsMn>>10 =0 = "));Serial.println(valeur);} //dizaines de minutes valent zero if (TempsMn < 10 ) {digit=0;valeur=(TempsMn);/*aiguillage();*/}//Serial.print(F("TempsMn<10 = "));Serial.println(valeur);}//chiffre significatif pour minutes else {digit=0;valeur=0;/*aiguillage();*/}//Serial.print(("TempsMn<= 10) {digit=45;valeur=((TempsSec/10));aiguillage();} //chiffre significatif pour dizaines de secondes else {digit=45;valeur=0;aiguillage();} //dizaines de secondes valent zero if (TempsSec = 100 ) {digit=31;valeur=(TempsMil/100);aiguillage();}// chiffre significatif pour dixièmes de secondes else {digit=31;valeur=0;aiguillage();}// dixièmes de secondes valent zero if ((TempsMil > 9 )) //if ((TempsMil > 100 ) &(TempsMil > 9 )) {digit=24;valeur=((TempsMil/10)-((TempsMil/100)*10));aiguillage();}//chiffre significatif pour centièmes de secondes else {digit=24;valeur=0;aiguillage();}//centièmes de secondes valent zero //Serial.println((" = ")); } void aiguillage() { switch (valeur) { case 0:// B C A G D F E //chiffre 0 actionDigital(digit,1,1,1,0,1,1,1); break ; case 1:// B C A G D F E //chiffre 1 actionDigital(digit,1,1,0,0,0,0,0); break ; case 2:// B C A G D F E //chiffre 2 actionDigital(digit,1,0,1,1,1,0,1); break ; case 3:// B C A G D F E //chiffre 3 actionDigital(digit,1,1,1,1,1,0,0); break ; case 4:// B C A G D F E //chiffre 4 actionDigital(digit,1,1,0,1,0,1,0); break ; case 5:// B C A G D F E //chiffre 5 actionDigital(digit,0,1,1,1,1,1,0); break ; case 6:// B C A G D F E //chiffre 6 actionDigital(digit,0,1,1,1,1,1,1); break ; case 7:// B C A G D F E //chiffre 7 actionDigital(digit,1,1,1,0,0,0,0); break ; case 8:// B C A G D F E //chiffre 8 actionDigital(digit,1,1,1,1,1,1,1); break ; case 9:// B C A G D F E //chiffre 9 actionDigital(digit,1,1,1,1,1,1,0); break ; default: break; } } // B C A G D F E void actionDigital(int digit,byte un,byte deux,byte trois,byte quatre,byte cinq,byte six,byte sept) { digitalWrite(digit+6, un); //Segment B digitalWrite(digit+5, deux); //Segment C digitalWrite(digit+4, trois); //Segment A digitalWrite(digit+3, quatre); //Segment G digitalWrite(digit+2, cinq); //Segment D digitalWrite(digit+1, six); //Segment F digitalWrite(digit, sept); //Segment E } // DPH DPB void actionDigitalpoint(int digit,byte pointhaut,byte pointbas) { digitalWrite(digit+1, pointbas); //Segment point bas digitalWrite(digit, pointhaut); //Segment point haut } void isr_ligne_franchie() // routine d'interruption 0 { capteur_ligne = false; //depart == true; }
Modifier mon Tutoriel
Bonjour,
auriez vous une petit vidéo pour voir ce jolie chronomètre en action
félicitation pour ce travail une boite avec plexiglas fumé devant et chrono de pro