1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| #include <SPI.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
#define MAX6675_CS 3
#define MAX6675_SO 4
#define MAX6675_SCK 2
int Potentiometre = A0; // le potentiometre est définit au pin analogique 0
int valPotentiometre = 0; // variable devant stocker les valeurs de tension du potentiometre, initialisé à 0
int Relais = 5; //variable pour le pin qui commande le relais
double readPotentiometre()
{
valPotentiometre = analogRead (A0); // les valeurs de potentiometre lue en A0 sont stocké dans "valPotentiometre" varie entre 0 et 1023
// on souhaite des températures en celsius allant de 0°C à 450°C
double valTemperature = map (valPotentiometre,0,1023,0,450); // transformation des valeurs du potentiometre en °C par mapage
return valTemperature;
}
double readThermocouple()
{
uint16_t v;
pinMode(MAX6675_CS, OUTPUT);
pinMode(MAX6675_SO, INPUT);
pinMode(MAX6675_SCK, OUTPUT);
digitalWrite(MAX6675_CS, LOW);
delay(1);
// Lecture en 16 bits,
// 15 = 0 toujours
// 14..2 = 0,25 degré compte MSB First
// 2 = 1 si le thermocouple est en circuit ouvert
// 1..0 = statut inintéressant
v = shiftIn(MAX6675_SO, MAX6675_SCK, MSBFIRST);
v <<= 8;
v |= shiftIn(MAX6675_SO, MAX6675_SCK, MSBFIRST);
digitalWrite(MAX6675_CS, HIGH);
if (v & 0x4)
{
// Le bit 2 indique si le thermocouple est déconnecté
return NAN;
}
// Les trois bits inférieurs (0,1,2) sont des bits d'état rejetés
v >>= 3;
// Les bits restants sont le nombre de comptages de 0,25 degré (C)
return v*0.25;
}
int TemperatureBuse()
{
lcd.setCursor(0,1);
lcd.print("T buse ");
lcd.setCursor(9,1);
lcd.print (" ");
lcd.setCursor(9,1);
lcd.print(readThermocouple());
lcd.setCursor(15,1);
lcd.print("C");
/*Serial.print("T buse ");
Serial.println(readThermocouple());
Serial.println(" C"); */
}
int TemperatureChoix()
{
valPotentiometre = analogRead (A0); // les valeurs de potentiometre lue en A0 sont stocké dans "valPotentiometre" varie entre 0 et 1023
// on souhaite des températures en celsius allant de 0°C à 450°C
int valTemperature = map (valPotentiometre,0,1023,0,450); // transformation des valeurs du potentiometre en °C par mapage
lcd.setCursor(0,0);
lcd.print("T voulue ");
lcd.setCursor(9,0);
lcd.print (" ");
lcd.setCursor(9,0);
lcd.print (valTemperature); // juste apres fait apparaitre la valeur de température lue du potentiometre
lcd.setCursor(15,0);
lcd.print("C"); // juste après fait apparaitre "°C"
/*Serial.print("T voulue "); // fait apparaitre "température choisit" sur la console
Serial.println (valTemperature); // juste apres fait apparaitre la valeur de température lue du potentiometre
Serial.println("C"); // juste après fait apparaitre "°C"*/
}
void setup() {
lcd.begin(16,2);
pinMode(Relais,OUTPUT); //pin en mode OUTPUT
//Serial.begin(9600);
}
void loop() {
TemperatureChoix();
TemperatureBuse();
if (readThermocouple() < (readPotentiometre() +2))
{
digitalWrite(Relais,HIGH); // on commande l'allumage
}
else if (readThermocouple() > (readPotentiometre() +5))
{
digitalWrite(Relais,LOW); // on commande l'extinction
}
delay(1000);
} |
Partager