/*
*********************************************************************
Controleur de temperature pour presse "P-regs" V1.1
Programme par FERNANDEZ OLIVIER wareck@cegetel.net3

VARIANTE POUR LA CHAUFFE DE PLANCHE !!!
NE PAS UTILISER SUR LA PRESSE PREGS !!!
*********************************************************************
Organigramme du programme:

wood.ino:
-Declaration des variables principales
-Activation des librairires necessaires au programme
-Déclaration des timers

Def.h:
-Definition des constantes
-Definition des pin entrées/sortie sur la carte principale

Type.h:
-Definition des états du programme
-definitions des dialogues LCD

PID.h:
-Déclaration des differentes valeurs de temperatures
-Déclaration des differents timings
-Déclaration des valeurs PID des differentes étapes

LCD.H/LCD.INO:
-Sous programme déstiné à l'affichage LCD
-Caractères spéciaux LCD
-Gestion des graph LCD

Serial.ino:
-Gestion du dialogue Serie
-Envois des données CSV sur le port Serie (pour le datalogger)

Core.ino:
-Setup
-Programme principale (loop)
*/


//#define DEBUG_MODE
#define LCD_GRAPH //activation des graphs

// ***** INCLUDES *****
#include <Stdio.h>
#include <MAX31855.h>
#include <PID_v1.h>
#include <Time.h>
#include "Types.h"
#include "PID.h"
#include "Def.h"
#include "LCD.h"
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C twilcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin, BACKLIGHT_PIN, POSITIVE); 

// ***** PID CONTROL VARIABLES *****
double setpoint;
double input;
double output;
double kp = PID_KP_PREHEAT;
double ki = PID_KI_PREHEAT;
double kd = PID_KD_PREHEAT;
int windowSize;
unsigned long windowStartTime;
unsigned long nextCheck;
unsigned long nextRead;
unsigned long timerSoak;
unsigned long buzzerPeriod;

// ***** Configuration Presse *****
int presse_status=0;
int compute_step=0;

// configuration timings interne
unsigned long previousMillis1 = 0;  
unsigned long startTime = 0 ;      
unsigned long elapsedTime = 0 ;    
unsigned long centitot1 = 0;       
unsigned long secotot1 =0;         
unsigned long minutot1 =0;

// Variables pour les graphs LCD
#ifdef LCD_GRAPH
int graph_active = 1;
#define updatetime 300 
unsigned int tempreadcount = 0;
float tempC = 0;
float tempCp = 0;
unsigned long currentTime;
unsigned long loopTime;
int temp = 0;
float temparray[10];
int countcol;
int mempos = 0;
int glcdpos = 0;
int temparraycounter = 0;
float mintemp = TEMPERATURE_ROOM;
float maxtemp = TEMPERATURE_CUIS;
float average = 0;
#endif







