/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#define bruleur 12 // must support PWM
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int conteurDegre = 0;
int StarteCrono = 0;
int tempMaxCuve = 0;
int Z = 0;
long temp_time = 0;
long times = 0;
float tempSonde;
int InertieThermiqueCuve = 5;
String temperatureC = "";
bool PALIER1 = 0;
String value_menue = "PALIER 1";
String temp_palier_1 = "50"; // valeur du curseur.
String duree_palier_1 = "80"; // valeur du curseur.
String inertieth_palier_1 = "3"; // valeur du curseur.
long TotalSecondes = 0;
long Cegonde = 0;
long Depar_millis_I_T = 0;
String data1 = (""); // 2 données reçues de Arduino
String data2 = (""); // 3 données reçues de Arduino
boolean getTemperature(float *temp)
{
delay(800); // Et on attend la fin de la mesure
*temp = analogRead(potpin);
String tempSonde = String(*temp); // conversion d'une valeur int en String
temperatureC = tempSonde;
// int tempCuve = tempSonde.toInt();
// data9 = (strin1);
Serial.print ("temperatureC = ");
Serial.println (temperatureC);
Serial.print ("tempSonde = ");
Serial.println (tempSonde);
return true;
}
////////////////////// REGULATION DE CHAUFFE ////////////////////////////
boolean chauffer(int temperaturePalierEnCoure )
{
Serial.println ("temperaturePalierEnCoure" );
// Serial.println (temperaturePalierEnCoure );
// = (String(InertieThermiqueCuve));
// = ("getTemperature " + getTemperature);
if (!getTemperature(&tempSonde))
{
return chauffer(temperaturePalierEnCoure);
}
if (tempSonde == temperaturePalierEnCoure)
{ // tempSonde = temperaturePalierEnCoure
tempSonde = tempSonde + 1; // forcer le demarage palier suivant surtous a l arrait bruleur
}
if (tempSonde < temperaturePalierEnCoure - InertieThermiqueCuve)
{ // && tempSonde < temperaturePalierEnCoure
///////////////////// MARCHE //////////////////////// "
conteurDegre = 1;
StarteCrono = 0;
digitalWrite(bruleur, HIGH);
// digitalWrite(bruleur, LOW);
// data0 = "Marche";
// data10 = "";
int res = temperaturePalierEnCoure - InertieThermiqueCuve;
// Serial.println("Bruleur Marche tempSonde = " + String(tempSonde) + " < " + res + " = temperaturePalierEnCoure - InertieThermiqueCuve");
// = ("");
// = ("") ;
//____________________________________________________________________
/* on diminue l'Inertie Thermique de Cuve de 1 pour redémarrée le bruleur a l'arrêt de la tempo
de la stabilité de la température ou température qui diminue apparait l'arrêt par Inertie Thermique
de Cuve et que la température du palier n'ait pas atteinte */
if (Z == 1 && InertieThermiqueCuve >= 1)
{ // && tempSonde < temperaturePalierEnCoure
InertieThermiqueCuve = InertieThermiqueCuve - 1;
// Serial.println(" 1");
Z = 0;
// delay (1000);
}
//____________________________________________________________________
}
else
{
//____________________________________________________________________
if (Z == 0 && tempSonde <= tempMaxCuve && tempSonde < temperaturePalierEnCoure)
{
InertieThermiqueCuve = InertieThermiqueCuve - 1;
// Serial.println(" 2");
}
else
{
if (tempSonde < temperaturePalierEnCoure)
{
Z = 1;
}
}
//____________________________________________________________________
if (tempSonde > temperaturePalierEnCoure - InertieThermiqueCuve)
{
// bruleur ************* arrait ********************
// Serial.println("");
digitalWrite(bruleur, LOW);
// digitalWrite(bruleur, HIGH);
//data10 = "Arrait";
//data0 = "";
StarteCrono = 1;
int res = temperaturePalierEnCoure - InertieThermiqueCuve;
// Serial.println("Bruleur Arrait tempSonde = " + String(tempSonde) + " > " + res + " = temperaturePalierEnCoure - InertieThermiqueCuve");
// StarTinInertieThermique = 0;
if (Z == 1 && tempSonde <= tempMaxCuve - 1)
{
// InertieThermiqueCuve = InertieThermiqueCuve - conteurDegre;
InertieThermiqueCuve = 0;
conteurDegre = 0;
}
}
}
if (StarteCrono == 1 && tempSonde < temperaturePalierEnCoure)
{
temp_time = millis() / 1000 - times;
// Afficha deconte Crono de la durée de réclenchement de la Température
// Serial.println(" temp_time " + String(temp_time) + " = millis() " + String(millis() / 1000) + " - times = " + String(times));
if (temp_time >= 30)
{
InertieThermiqueCuve = InertieThermiqueCuve - 1;
// InertieThermiqueCuve = InertieThermiqueCuve - conteurDegre;
// Serial.println("conteur Degre = " + conteurDegre);
// Serial.println("temp_time InertieThermiqueCuve = " + InertieThermiqueCuve);
}
}
else
{
temp_time = 0;
times = millis() / 1000;
// = ("");
}
if (tempSonde > tempMaxCuve)
{
// Serial.println("tempSonde > tempMaxCuve");
tempMaxCuve = tempSonde;
// temp_time = 0;
// times = millis()/1000;
if (StarteCrono == 1 && InertieThermiqueCuve > 0 && tempSonde < temperaturePalierEnCoure)
{
conteurDegre = conteurDegre + 1;
// InertieThermiqueCuve = InertieThermiqueCuve - 1;
// Serial.println("tempSonde > tempMaxCuve InertieThermiqueCuve = " + InertieThermiqueCuve);
// Serial.println("conteurDegre = " + String(conteurDegre));
}
}
//*****************************************
// Serial.print(" tempSonde ..."); Serial.println(tempSonde);
// Serial.print(" temperaturePalierEnCoure ..."); Serial.println(temperaturePalierEnCoure);
return tempSonde > temperaturePalierEnCoure;
}
long now()
{
return millis() / 1000;
}
void setup() {
Serial.begin(9600);
pinMode(bruleur, OUTPUT);
}
void loop() {
/*************************************************
PALIER 1
**************************************************/
if (value_menue == "PALIER 1")
{
if (PALIER1 == 1)
{
InertieThermiqueCuve = inertieth_palier_1.toInt();
PALIER1 = 0;
}
if (chauffer(temp_palier_1.toInt()))
{
// depar_palier = 0;
// depar_duree_palier = 1;
data1 = ("temperature du palier_1 atteinte a " + String(temp_palier_1) + " °C ");
Serial.println(data1);
value_menue = "DUREE PALIER 1";
Depar_millis_I_T = millis() / 1000;
TotalSecondes = (millis() / 1000 - Depar_millis_I_T);
Serial.print("Total Secondes = ");
Serial.println(TotalSecondes);
}
else
{
data1 = ("chauffe jusqu'a temperature du palier 1 a " + String(temp_palier_1) + " °C");
data2 = "avec ΔT de " + String(InertieThermiqueCuve);
Serial.println(data1);
Serial.println(data2);
// data8 = ("");
}
}
else
{
PALIER1 = 1;
}
if (val <= 500){
/// digitalWrite(bruleur, HIGH); // turn the LED on (HIGH is the voltage level)
// wait for a second
}else{
// digitalWrite(bruleur, LOW); // turn the LED off by making the voltage LOW
// waits for the servo to get there
}
Serial.println(tempSonde);
Serial.print (" temperaturePalierEnCoure " );
}