Bonjour à tous.
Je vous expose brièvement mon projet:
J'ai besoin, dans le cadre d'un projet scolaire, de fabriquer un chauffe tasse 3 température. J'ai donc acheté un arduino elegoo mega 2560 avec écran LCD, sonde de température DS18B20(sonde étanche), un relais, une série de boutons poussoirs, des leds, et les câbles nécessaires au montage.
J'ai donc commencé a regarder la programmation et les câblages sur internet.je suis tombé sur un forum intéressant qui me proposé le câblage et la prog du ds18b20 avec un écran LCD pour lire la température.
Je vous avoue que je suis nouveau dans le monde arduino et d'autan plus dans le language. Une fois le montage réalisé je l'ai testé et je n'arrive même pas a lire le capteur sur le bus 1-Wire: dans le moniteur serie il est ecrit erreur lecture capteur 1 a répétition. voila ma prog:
/**
* 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(12, 11, 5, 4, 3, 2);
/* 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;
}
/** Fonction setup() **/
void setup() {
// 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() {
float temperature;
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"));
}
if(temperature > 5 && temperature < 40){
/* 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();
}
}
Si quelqu’un peut me filer un petit coup de pouce dans mon projet ça me sauverais la mise merci.