// Gestion d'une boite de distribution 10 MHz // V 1.0 juillet 2020 (pierre@rotilom.com/F6IDT) // // Décomptage de 10 minutes pour permettre // la stabilisation en température de l'OCXO // // Si LCD en I2C: SDA vers A4 et SCL vers A5. // Décommenter/Commenter les lignes consernées. // Adresse 0x3F à modifier selon interface I2C #include //#include // LCD en I2C #include #define out_1 5 #define out_2 6 // en disponibilité #define buzzer 7 #define RS 2 #define E 3 #define DB4 8 #define DB5 9 #define DB6 10 #define DB7 11 LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7); //LiquidCrystal_I2C lcd(0x3F, 16, 2); // LCD en I2C int compteur; //************* SETUP *********************************** void setup() { pinMode(buzzer, OUTPUT); pinMode(out_1, OUTPUT); pinMode(out_2, OUTPUT); // en disponibilité digitalWrite(out_1, LOW); digitalWrite(out_2, LOW); // en disponibilité compteur = 10; // Temps de stabilisation en mn de l'OCXO lcd.begin(16, 2); lcd.display(); // lcd.begin(); // LCD en I2C // lcd.clear(); // LCD en I2C } //************* BOUCLE *********************************** void loop() { lcd.setCursor(0, 0); lcd.print(" STABILISATION "); lcd.setCursor(0, 1); lcd.print("Il reste: "); lcd.print(compteur); lcd.print(" mn "); delay(60000); // 1 minute = 60000 millisecondes --compteur ; // Compte à rebours du temps if (compteur < 0) // Fin de comptage { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" OCXO Stable: "); lcd.setCursor(0, 1); lcd.print("10 MHz en sortie"); digitalWrite(out_1, HIGH); // sortie à 1, connexion de l'OCXO for (int i = 0; i < 3; i++) // 3 bips { tone(buzzer, 2000, 200); // 2000 = fréquence à modifier delay(500); // selon fréquence de résonance noTone(buzzer); // du buzzer (à expérimenter). } while(1); // STOP pour l'éternité... } // (tant qu'il y a du 5 volts !) } //************ FIN DE BOUCLE **********************************