Go Down

Topic: mettre un seuil pour une sonde de type ds18b20 (Read 1 time) previous topic - next topic

aleqcis

Bonjour j'aimerais que l'on me dise pourquoi le programme ne marche pas avec le seuil
Code: [Select]
#include <OneWire.h> // Inclusion de la librairie OneWire
#define LEDV 3
#define LEDR 4
#define DS18B20 0x28     // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
int = 26;
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds

// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){
  byte data[9], addr[8];
  // data : Données lues depuis le scratchpad
  // addr : adresse du module 1-Wire détecté

  if (!ds.search(addr)) { // Recherche un module 1-Wire
    ds.reset_search();    // Réinitialise la recherche de module
    return false;         // Retourne une erreur
  }
   
  if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
    return false;                        // Si le message est corrompu on retourne une erreur

  if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
    return false;         // Si ce n'est pas le cas on retourne une erreur

  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
   
  ds.write(0x44, 1);      // On lance une prise de mesure de température
  delay(800);             // Et on attend la fin de la mesure
   
  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
  ds.write(0xBE);         // On envoie une demande de lecture du scratchpad

  for (byte i = 0; i < 9; i++) // On lit le scratchpad
    data[i] = ds.read();       // Et on stock les octets reçus
   
  // Calcul de la température en degré Celsius
  *temp = ((data[1] << 8) | data[0]) * 0.0625;
   
  // Pas d'erreur
  return true;
}

// setup()
void setup() {
  Serial.begin(9600); // Initialisation du port série
  pinMode(LEDV, OUTPUT); // Choix du mode des Pins des LEDs
pinMode(LEDR, OUTPUT);
}

// loop()
void loop() {
  float temp;
   
  // Lit la température ambiante à ~1Hz
  if(getTemperature(&temp)) {
     
    // Affiche la température
    Serial.print("Temperature : ");
    Serial.print(temp);
    Serial.write(176); // caractère °
    Serial.write('C');
    Serial.println();
  }
   if (Temperature > seuil)
   {
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDV, LOW);
}
else if (Temperature < seuil)
{
  digitalWrite(LEDV, HIGH);
  digitalWrite(LEDR, LOW);
}
}

Artouste


Bonjour j'aimerais que l'on me dise pourquoi le programme ne marche pas avec le seuil


déjà les variables seuil et temperature ne sont pas definies

infobarquee

#2
Mar 20, 2014, 07:46 pm Last Edit: Mar 20, 2014, 07:48 pm by infobarquee Reason: 1
bonjour,
ca serait temp au lieu de Temperature ?


EDIT :
Artouste, tu tape plus vite que moi :)
exacte pour le seuil en plus ;)
et c'est quoi ca?
Code: [Select]
int = 26;
AUCUNE AIDE PAR MP

Asturias

Bonsoir,

Je suppose que" 26" fait référence à la température de seuil. Il ne manquait que la variable :)
donc :
Code: [Select]
int seuil 26;

Pour le test :
Code: [Select]
if (temp > seuil)
   {
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDV, LOW);

}


Salutations




aleqcis

merci pour les réponses j'ai donc mis en variable
Code: [Select]
int seuil = 26
mais quand je compile il me met une erreur ici
Code: [Select]
if (Temperature > seuil)
   {
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDV, LOW);
}
else if (Temperature < seuil)
{
  digitalWrite(LEDV, HIGH);
  digitalWrite(LEDR, LOW);

Artouste


merci pour les réponses j'ai donc mis en variable
Code: [Select]
int seuil = 26
mais quand je compile il me met une erreur ici
Code: [Select]
if (Temperature > seuil)
   {
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDV, LOW);
}
else if (Temperature < seuil)
{
  digitalWrite(LEDV, HIGH);
  digitalWrite(LEDR, LOW);


Temperature n'est pas defini
ta temperature tu la recupere dans temp pas dans Temperature

aleqcis

Ce serais donc sa ?
Code: [Select]
if (temp > seuil)
   {
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDV, LOW);
}
else if (temp < seuil)
{
  digitalWrite(LEDV, HIGH);
  digitalWrite(LEDR, LOW);

infobarquee

#7
Mar 20, 2014, 10:13 pm Last Edit: Mar 20, 2014, 10:16 pm by infobarquee Reason: 1

bonjour,
ca serait temp au lieu de Temperature


évidemment que oui, tu es en train d'essayer d'afficher un "commentaire en fait :)
regardes bien le code et trouve ou est pris la variable et ou elle est affichée dans le code
Quote
if(getTemperature(&temp)) {
   
   // Affiche la température
   Serial.print("Temperature : ");
   Serial.print(temp);
   Serial.write(176); // caractère °
   Serial.write('C');
   Serial.println();
 }

AUCUNE AIDE PAR MP

Go Up