Aide sur code ATTINNY

Bonjour , je voudrais savoir si parmi vous quelqu’un à fait le programme pour brancher 3 sondes D18B20 sur l'attinny 85 avec le module 433 MHz , j'ai essayer de modifier le programme mais j'avoue que je sèche un peux ..... :wink: le but est de renvoyer la température de deux congélateurs et un réfrigérateur sur ma box EEDOMUS via le RFP1000 .

Voici mon code actuel incomplet , je n’arrive pas à trouver les lignes à modifier pour lire les 3 sondes ds18b20 sur PB0/PB1/PB2 ? seule une sonde fonctionne ,merci de votre aide :smiley:

J’ai pas réussi à inserer mon code sur cette page à cause de la limitation à 9000 caractères alors il est en PJ désolé .

Merci

essait_3_sonde_ok_pb0.ino (16.4 KB)

hello
dans ton code, on trouve:

#define DS18B20
#ifdef DS18B20
#include "OneWire.h"
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 0
#define ONE_WIRE_BUS 1
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#endif

soit 1 bus par sonde :confused: et tu initialise la librairie avec 1 bus , le dernier defini, soit le 2.

pour lire les autres sondes, il faudra refaire l’init de la librairie avec le bus correspondant à chaque sonde avant chaque lecture.
un peu lourd!!!

les sondes peuvent être raccordées au même bus onewirene pas oublier la résistance de 4.7K

regarde ce prg de lecture fait pour 4 sondes

#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

OneWire oneWire(5);
DallasTemperature sensors(&oneWire);
DeviceAddress sonde0 = {0x28, 0xFF, 0x03, 0x0A, 0xB3, 0x17, 0x01, 0x99};
//DeviceAddress sonde1 = {0x28, 0x2C, 0x2F, 0x45, 0x92, 0x16, 0x02, 0xBE};
//DeviceAddress sonde2 = {0x28, 0xE9, 0xA6, 0x77, 0x91, 0x19, 0x02, 0x41};
//DeviceAddress sonde3 = {0x28, 0x20, 0xF5, 0x45, 0x92, 0x16, 0x02, 0x20};

void setup(){
 Serial.begin(1000000);
 sensors.begin();
 sensors.setResolution(sonde0, 12);
 //sensors.setResolution(sonde1, 12);
 //sensors.setResolution(sonde2, 12);
 //sensors.setResolution(sonde3, 12);
}
void loop(){
 sensors.requestTemperatures();
 //Serial.print("0: ");
 Serial.println(sensors.getTempC(sonde0));
 //Serial.print("   1: ");
 //Serial.print(sensors.getTempC(sonde1));
 //Serial.print("   2: ");
 //Serial.print(sensors.getTempC(sonde2));
 //Serial.print("   3: ");
 //Serial.println(sensors.getTempC(sonde3));
 delay(1000);
}

tu peux voir que les sondes ont des adresses, tu les auras avec le prog de scan suivant

#include <OneWire.h>
// Onewire lib is here http://www.pjrc.com/teensy/td_libs_OneWire.html
OneWire  ds(5);  //  don't forget 4.7K resistor between +5V and DQ pin
void setup(void) {
  Serial.begin(1000000);
}
void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  if ( !ds.search(addr)) {
    Serial.println("--------------");
    Serial.println(".");
    Serial.println(".");
    Serial.println("END OF SCAN.");
    Serial.println(".");
    Serial.println();
    ds.reset_search();
    delay(2500);
    return;
  }
  Serial.println("--------------");
  Serial.print(" ROM =");
  for ( i = 0; i < 8; i++) {
    Serial.write(' ');
    if ( addr[i] < 16) {
      Serial.print("0");
    }
    Serial.print(addr[i], HEX);
  }
  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return;
  }
  Serial.println();
  Serial.print("CHIP FAMILY ");
  Serial.print(addr[0], HEX);
  // the first ROM byte indicates which chip
  Serial.print(" =  ");
  switch (addr[0]) {
    case 0x01:
      Serial.println(" DS1990 DS2401");  //
      break;
    case 0x02:
      Serial.println(" DS1991");  //
      break;
    case 0x04:
      Serial.println(" DS1994");  //
      break;
    case 0x05:
      Serial.println(" DS2405");  //
      break;
    case 0x06:
      Serial.println(" DS1992");  //
      break;
    case 0x08:
      Serial.println(" DS1993");  //
      break;
    case 0x0B:
      Serial.println(" DS1985");
      break;
    case 0x10:
      Serial.println(" DS1820 DS18S20 DS1920");
      break;
    case 0x12:
      Serial.println(" DS2406");
      break;
    case 0x21:
      Serial.println(" DS1921");
      break;
    case 0x22:
      Serial.println(" DS1822");
      break;
    case 0x23:
      Serial.println(" DS2433");
      break;
    case 0x24:
      Serial.println(" DS1904");
      break;
    case 0x28:
      Serial.println(" DS18B20");
      break;
    case 0x29:
      Serial.println(" DS2408");
      break;
    case 0x2C:
      Serial.println(" DS2890");
      break;
    case 0x36:
      Serial.println(" DS2740");
      break;
    case 0x3B:
      Serial.println(" DS1825");
      break;
    case 0x41:
      Serial.println(" DS1923");
      break;
    case 0xB3:
      Serial.println(" CHIP cartouche laser");
      break;
    default:
      Serial.println(" is not listed.");
      return;
  }
}

Merci DFGH , du coup mon typon est bon à refaire , tu crois que je n'ai pas d'autre solution ?