// // ########################### // # MESURE DES RADIATIONS 2 # // ########################### // # Guy Magli 13.12.2020 # // ########################### // # Conception, cablages # // # mises a jour, # // # contact... # // # www.magli.fr # // ########################### // // Afin d'eviter les problemes d'affichage et d'impression les signes diacritiques // ont ete retires des commentaires et des chaines de caracteres. // // ! ======================= ! // ! BRANCHEMENT DE LA CARTE ! // ! ======================= ! // // : ----- : : ------------ : // : Carte : : Arduino Mega : // : ----- : : ------------ : // INT D 2 // 5 V 5 V // GND GND // // ! ======================== ! // ! LIBRAIRIES ET PARAMETRES ! // ! ======================== ! // #include //// // ! ================================================= ! // ! VARIABLES GLOBALES, CONSTANTES ET INITIALISATIONS ! // ! ================================================= ! // unsigned long lCoupsDansDixMinutes = 0; // Coups comptes dans une minute unsigned long lDerniersCoupsParDixMinutes = 0; // Pour ne pas avoir de page vide unsigned long lMillisPrecedents = 0;// Derniere mesure du temps en millisecondes unsigned long lMillisActuels = 0; // Mesure actuelle du temps en millisecondes unsigned int iSecondesTotales = 0; unsigned int iSecondes = 0; unsigned int iMinutes = 0; // // : -------------------------- : // : Pour les afficheurs a LEDS : // : -------------------------- : // #define CLKA 12 // Afficheur droite (la derniere mesure) #define DIOA 11 int iNombre = 0; // Nombre a afficher int iMilliers = 0; int iCentaines = 0; int iDizaines = 0; int iUnites = 0; TM1637Display display(CLKA, DIOA); // Afficheur // // // ! ===== ! // ! SETUP ! // ! ===== ! // void setup() { // // Pour la communication via la console. // Serial.begin(9600); while (!Serial) { ; } // // Titre // Serial.println(" "); Serial.println(": ----------------------- :"); Serial.println(": INFORMATIONS RADIATIONS :"); Serial.println(": ----------------------- :"); Serial.println(" "); // Serial.println(" "); // Pour cette interruption, voir // https://github.com/SensorsIot/Geiger-Counter-RadiationD-v1.1-CAJOE- // Sketch written by Alex Boguslavsky RH Electronics; mail: support@radiohobbystore.com attachInterrupt(0, tube_impulse, FALLING); // Definition de l'interruption lMillisPrecedents = millis(); // Mesure du temps en millisecondes // // Pour la led // pinMode(13, OUTPUT); // // Pour l'afficheur // display.setBrightness(7); display.showNumberDec(0, false, 1, 0); // Digit de gauche display.showNumberDec(0, false, 1, 1); display.showNumberDec(0, false, 1, 2); display.showNumberDec(0, false, 1, 3); // Digit de droite } // // ! ==== ! // ! LOOP ! // ! ==== ! // void loop() { // On fait une lecture sur dix minutes. char c; lMillisActuels = millis(); // Mesure du temps en millisecondes. if (lMillisActuels - lMillisPrecedents > 600000) { Serial.print("TOTAL APRES DIX MINUTES : "); Serial.println(lCoupsDansDixMinutes); lMillisPrecedents = lMillisActuels; // On memorise le temps de cette mesure. iNombre = (int)(lCoupsDansDixMinutes/10); iMilliers = (int)(iNombre / 1000); iNombre = iNombre - (iMilliers * 1000); iCentaines = (int)(iNombre / 100); iNombre = iNombre - (iCentaines * 100); iDizaines = (int)(iNombre / 10); iNombre = iNombre - (iDizaines * 10); iUnites = iNombre; display.showNumberDec(iMilliers, false, 1, 0); // Digit de gauche display.showNumberDec(iCentaines, false, 1, 1); display.showNumberDec(iDizaines, false, 1, 2); display.showNumberDec(iUnites, false, 1, 3); // Digit de droite lCoupsDansDixMinutes = 0; // Coups comptes dans une minute remis a zero. iMinutes = 0; iSecondes = 0; } } // // ! ========== ! // ! Procedures ! // ! ========== ! // // --------------------------------- // : Compte les impulsions du tube : // --------------------------------- // void tube_impulse() { lCoupsDansDixMinutes++; // Un coup de plus est compte dans cette minute. iSecondesTotales = (lMillisActuels - lMillisPrecedents) / 1000; iMinutes = (int)(iSecondesTotales / 60); iSecondes = iSecondesTotales - iMinutes * 60; Serial.print("Coups : "); Serial.print(lCoupsDansDixMinutes); Serial.print(" en "); Serial.print(iMinutes); Serial.print(" min et "); Serial.print(iSecondes); Serial.println(" sec."); // Allume la LED digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); }