// Déclaration
// ***********
#include <LiquidCrystal_I2C.h> // Librairie pour LCD I2C
LiquidCrystal_I2C LCD(0x27,16,02); // Adresse et format LCD
unsigned long tempsPrecedent ;
const int PotDuree = A0; // potentiomètre "durée" sur PIN A0
const int PotTemperature = A1; // potentiomètre "température" sur PIN A1
const int SondeTemperature = A2; // sonde "température" sur PIN A2 (MODE TEST)
int Duree ; // variable pour le réglage "durée"
int Temperature ; // variable pour le réglage "température"
int TemperatureLue ; // variable pour la "température lue"
const int Bouton = 3; // bouton fin de préréglage durée et température sur PIN 3
int BoutonLecture ; // variable du bouton lecture
const int Chauffage = 10 ; // sortie commande chauffage sur PIN 10
const int BoutonStop = 4 ; // bouton sortie de boucle utilisation sur PIN 4 (MODE TEST)
int BoutonStopLecture = 0 ; // variable du bouton stop (MODE TEST)
// fonction lecture e affichage de la température de la sonde
void sonde(){
TemperatureLue =(analogRead(SondeTemperature));
TemperatureLue = map(TemperatureLue ,0,1023,0,300);
LCD.setCursor(12,1);
LCD.print(" ");
LCD.setCursor(12,1);
LCD.print(TemperatureLue);
}
//********************************************
// Fonction réglage duree ****************************
void duree() {
Duree = (analogRead(PotDuree)) ;
Duree = map(Duree ,0,1023,10,99);
LCD.setCursor(0,0);
LCD.print("Duree:");
LCD.setCursor (6,0);
LCD.print(Duree) ;
}
//*********************************************
void tempo () {
if(millis()- tempsPrecedent >= Duree*1000){tempsPrecedent = millis() ;
BoutonStopLecture = 0;
LCD.setCursor (10,0);
LCD.print("xxxxx") ;
}
}
// Fonction reglage temperature *********************
void temperature() {
Temperature = (analogRead(PotTemperature)) ;
Temperature = map(Temperature ,0,1023,0,300);
LCD.setCursor(0,1);
LCD.print("Tempe:");
LCD.setCursor (6,1);
LCD.print(Temperature);
}
//*********************************************
// Initialisation
// **************
void setup() {
LCD.init(); LCD.backlight(); // Initialise et allume rétroéclairage LCD
pinMode(PotDuree , INPUT); // Initialise les potentiomètre en mode entrée
pinMode(PotTemperature , INPUT);
pinMode(Bouton , INPUT_PULLUP); // initialise les boutons en mode entrée pullup
pinMode(BoutonStop , INPUT_PULLUP);
pinMode(Chauffage , OUTPUT); // initialise Chauffage en mode sortie
// Lecture e affichage de la température de la sonde
TemperatureLue =(analogRead(SondeTemperature));
TemperatureLue = map(TemperatureLue ,0,1023,0,300);
LCD.setCursor(12,1);
LCD.print(TemperatureLue);
//********************************************
}
// Exécution
// *********
void loop() {
digitalWrite(Chauffage, LOW);
// DEBUT DE LA BOUCLE REGLAGE
do{
BoutonLecture = digitalRead(Bouton);
temperature();
duree();
sonde();
// préchauffage de la plaque à 50 degrés
if(TemperatureLue < 50){ digitalWrite(Chauffage, HIGH); }
else{ digitalWrite(Chauffage, LOW); }
}
while(BoutonLecture == 1);
LCD.setCursor (10,0);
LCD.print("OK") ;
// FIN DE LA BOUCLE REGLAGE
// DEBUT DE LA BOUCLE UTILISATION (montée en température)
do{
BoutonStopLecture = digitalRead(BoutonStop);
sonde();
//régulation temperature soudure
if(TemperatureLue < Temperature){ digitalWrite(Chauffage, HIGH) ; }
else {
digitalWrite(Chauffage , LOW);
LCD.setCursor (10,0);
LCD.print("debut") ;
// if(millis()- tempsPrecedent >= (Duree*1000));{tempsPrecedent=millis();
//}
tempo();
}
while(BoutonStopLecture == 1);
//while(BoutonStopLecture == 1);
//LCD.setCursor (10,0);
//LCD.print("fin") ;
//tempsPrecedent = 0;
//BoutonStopLecture = 0;
// boucle durée soudure
//do {
// BoutonStopLecture = digitalRead(BoutonStop);
// sonde();
//
//tempo();
// delay(10000);
// if(millis()- tempsPrecedent >= (Duree*1000));{tempsPrecedent=millis();
//}
//delay(10000);
//}
//while(BoutonStopLecture == 1);
//LCD.setCursor (10,0);
//LCD.print("Fin") ;
// delay(10000);
// LCD.setCursor (10,0);
//LCD.print(" ") ;
}
}