Bonsoir je pense que j'ai beaucoup d'erreurs dans ma programmation si quelqu’un peut y jeter un œil se serais chouette merci. PS : Je suis sur arduino mega
/**
Exemple de code pour lire un unique capteur DS18B20 sur un bus 1-Wire.
*/
/* Dépendance pour le bus 1-Wire */
#include <OneWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 8);
/* Broche du bus 1-Wire */
const byte BROCHE_ONEWIRE = 7;
/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES {
READ_OK, // Lecture ok
NO_SENSOR_FOUND, // Pas de capteur
INVALID_ADDRESS, // Adresse reçue invalide
INVALID_SENSOR // Capteur invalide (pas un DS18B20)
};
/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
/**
Fonction de lecture de la température via un capteur DS18B20.
*/
byte getTemperature(float *temperature, byte reset_search) {
byte data[9], addr[8];
// data[] : Données lues depuis le scratchpad
// addr[] : Adresse du module 1-Wire détecté
/* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
if (reset_search) {
ds.reset_search();
}
/* Recherche le prochain capteur 1-Wire disponible */
if (!ds.search(addr)) {
// Pas de capteur
return NO_SENSOR_FOUND;
}
/* Vérifie que l'adresse a été correctement reçue */
if (OneWire::crc8(addr, 7) != addr[7]) {
// Adresse invalide
return INVALID_ADDRESS;
}
/* Vérifie qu'il s'agit bien d'un DS18B20 */
if (addr[0] != 0x28) {
// Mauvais type de capteur
return INVALID_SENSOR;
}
/* Reset le bus 1-Wire et sélectionne le capteur */
ds.reset();
ds.select(addr);
/* Lance une prise de mesure de température et attend la fin de la mesure */
ds.write(0x44, 1);
delay(800);
/* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
ds.reset();
ds.select(addr);
ds.write(0xBE);
/* Lecture du scratchpad */
for (byte i = 0; i < 9; i++) {
data[i] = ds.read();
}
/* Calcul de la température en degré Celsius */
*temperature = ((data[1] << 8) | data[0]) * 0.0625;
// Pas d'erreur
return READ_OK;
}
float temperaturePin = 0;
int button1Pin,button2Pin,button3Pin,ledPin,relayPin;
/** Fonction setup() **/
void setup() {
const int button1 = 9;
const int button2Pin = 10;
const int button3Pin = 11;
const int ledPin = 12;
const int relayPin = 13;
int button1Pin = 0;
int button2Pin = 0;
int button3Pin = 0;
int ledPin = 0;
int relayPin = 0;
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(led,OUTPUT);
pinMode(relay, OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.setCursor(0, 0);
// Print a message to the LCD.
lcd.print("Initialisation");
delay(2000);
lcd.clear();
/* Initialisation du port série */
Serial.begin(9600);
}
/** Fonction loop() **/
void loop() {
button1 = digitalRead(button1Pin);
button2 = digitalRead(button2Pin);
button3 = digitalRead(button3Pin);
if (getTemperature(&temperature, true) != READ_OK) {
Serial.println(F("Erreur de lecture du capteur"));
}
if (button1 = HIGH)
{
while (temperature <= 90)
{
// Activer LED
digitalWrite(led,HIGH);
// Activer RELAIS
digitalWrite(relay,HIGH);
lcd.setCursor(0, 0);
lcd.print("Temp.: ");
/* Lit la température ambiante à ~1Hz */
if (getTemperature(&temperature, true) != READ_OK) {
Serial.println(F("Erreur de lecture du capteur"));
}
/* Affiche la température */
lcd.print(temperature, 1);
lcd.write(176);
lcd.print("C");
Serial.print(F("Temperature : "));
Serial.print(temperature, 2);
Serial.write(176); // Caractère degré
Serial.write('C');
Serial.println();
}
}
else if (button2 = HIGH)
{
while (temperature <= 80)
{
// Activer LED
digitalWrite(led,HIGH);
// Activer RELAIS
digitalWrite(relay,HIGH);
lcd.setCursor(0, 0);
lcd.print("Temp.: ");
/* Lit la température ambiante à ~1Hz */
if (getTemperature(&temperature, true) != READ_OK) {
Serial.println(F("Erreur de lecture du capteur"));
}
/* Affiche la température */
lcd.print(temperature, 1);
lcd.write(176);
lcd.print("C");
Serial.print(F("Temperature : "));
Serial.print(temperature, 2);
Serial.write(176); // Caractère degré
Serial.write('C');
Serial.println();
}
}
else if (button3 = HIGH)
{
while (temperature <= 70)
{
// Activer LED
digitalWrite(led,HIGH);
// Activer RELAIS
digitalWrite(relay,HIGH);
lcd.setCursor(0, 0);
lcd.print("Temp.: ");
/* Lit la température ambiante à ~1Hz */
if (getTemperature(&temperature, true) != READ_OK) {
Serial.println(F("Erreur de lecture du capteur"));
}
/* Affiche la température */
lcd.print(temperature, 1);
lcd.write(176);
lcd.print("C");
Serial.print(F("Temperature : "));
Serial.print(temperature, 2);
Serial.write(176); // Caractère degré
Serial.write('C');
Serial.println();
}
}
lcd.clear();
}