DS 1820 hőmérő élesztés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
grano
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2014. február 1. szombat, 20:08

DS 1820 hőmérő élesztés

Hozzászólás Szerző: grano »

Sziasztok!

Több ds18b20-at szeretnék használni néha-néha felváltva, de nem akarom mindíg újraírni a kódot.
Próbáltam megoldani, de sajnos nem sikerül.
Mi benne a hiba?

Kód: Egész kijelölése

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

 int KEP [] = {0 , 0 , 0 , 0 ,0 , 0 , 0 , 0 ,0 ,0 } ; // a kiiarndo hofokok tombje
 int KEP1 [] = {0 , 0 , 0 , 0 ,0 , 0 , 0 , 0, 0 } ; // a csatlakoztatott eszkozok tombje
 
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

LiquidCrystal lcd(10, 9, 4, 5, 6, 7); // képernyő beállítás, lábak kiválasztása 

// OneWire címek hozzárendelése.
DeviceAddress Egy = { 0x28, 0x9C, 0xD5, 0xD0, 0x04, 0x00, 0x00, 0xC1};
DeviceAddress Ketto = { 0x28, 0xF4, 0x04, 0xD0, 0x04, 0x00, 0x00, 0x30 };
DeviceAddress Harom = {0x28, 0xCC, 0x9B, 0xD0, 0x04, 0x00, 0x00, 0xA4 } ;
DeviceAddress Negy = { 0x28, 0xCA, 0x91, 0xD0, 0x04, 0x00, 0x00, 0xAB };
DeviceAddress Ot = { 0x28, 0xCD, 0x3F, 0xD0, 0x04, 0x00, 0x00, 0xBF};
DeviceAddress Hat = { 0x28, 0x53, 0x0D, 0xD0, 0x04, 0x00, 0x00, 0x1A};
DeviceAddress Het = { 0x28, 0xEE, 0x4A, 0xD0, 0x04, 0x00, 0x00, 0xEF };
DeviceAddress Nyolc = { 0x28, 0x6D, 0x4F, 0xD0, 0x04, 0x00, 0x00, 0x8E};
DeviceAddress Kilenc = { 0x28, 0x67, 0x3E, 0xD0, 0x04, 0x00, 0x00, 0xE1};
DeviceAddress Tiz = { 0x28, 0x9C, 0xE4, 0xD0, 0x04, 0x00, 0x00, 0x88};


void setup() {

   Serial.begin(9600); // a soros (USB) porton kiküldött adatok 
    lcd.begin(16, 2); // lcd beállítása 2 soros 16 karaktereshez
    sensors.begin(); // sensorok inicializálása
 KEP1[0]=   sensors.setResolution(Egy , 10); // ha 0-at ad vissza nincs eszköz, ha 1-et van eszköz
 KEP1[1]=   sensors.setResolution(Ketto , 10);
 KEP1[2]=    sensors.setResolution(Harom , 10);
 KEP1[3]=   sensors.setResolution(Negy , 10);
 KEP1[4]=   sensors.setResolution(Ot , 10);
 KEP1[5]=    sensors.setResolution(Hat , 10);
 KEP1[6]=    sensors.setResolution(Het , 10);
 KEP1[7]=    sensors.setResolution(Nyolc , 10);
 KEP1[8]=    sensors.setResolution(Kilenc , 10);    
 KEP1[9]=    sensors.setResolution(Tiz , 10);  
 
 }

void  kiiras () {


     lcd.clear();
 
     lcd.setCursor(0,0);
     lcd. print(KEP[1]);
 
     lcd.setCursor(3,0);
     lcd. print(KEP[2]);
     
     lcd.setCursor(7,0); 
     lcd. print(KEP[3]);
     
     lcd.setCursor(10,0); 
     lcd. print(KEP[4]);

     lcd.setCursor(13,0); 
     lcd. print(KEP[5]);
     
     lcd.setCursor(0,1);
     lcd. print(KEP[6]);
 
     lcd.setCursor(3,1);
     lcd. print(KEP[7]);
     
     lcd.setCursor(7,1); 
     lcd. print(KEP[8]);
     
     lcd.setCursor(10,1); 
     lcd. print(KEP[9]);

     lcd.setCursor(13,1); 
     lcd. print(KEP[10]);
    

 }
  
void loop (){

  sensors.requestTemperatures();
 
KEP[0]=DS_olvasas(Egy,0);
KEP[1]=DS_olvasas(Ketto,1) ;
KEP[2] =DS_olvasas(Harom,2);
KEP[3]= DS_olvasas(Negy,3) ;
KEP[4]= DS_olvasas(Ot,4);
KEP[5]=DS_olvasas(Hat,5);
KEP[6]=DS_olvasas(Het,6);
KEP[7]=DS_olvasas(Nyolc,7) ;
KEP[8]=DS_olvasas(Kilenc,8);
KEP[9]=DS_olvasas(Tiz,9);

 kiiras();
}

float DS_olvasas (DeviceAddress cim, int tilt)  { //tilt: az eszköz sorszáma

float hofok = 0;
  if (KEP1[tilt]==1) {    //csak a létező eszközöket [code]olvassuk be

    delay(1000);      
float  meres = sensors.getTempC(cim);
 hofok=meres;
 
 
      return hofok;}
  }
Válasz küldése