Stránka 1 z 1

Teplotni senzor sht31

Napsal: 07 pro 2019, 12:37
od Le-Ze
Zdravím.
Byl by dotaz.
Sample z knihovny.
Jak zjistim v void loop, jestli jsem připojený k SHT31?

A pokud se nepodaři připojení

Kód: Vybrat vše

void setup() {
  Serial.begin(9600);
  
  Serial.println("SHT31 test");
  if (! sht31.begin(0x44)) {   // Set to 0x45 for alternate i2c addr
    Serial.println("Couldn't find SHT31");
    while (1) delay(1);
  }
}


void loop() {
  float t = sht31.readTemperature();
  float h = sht31.readHumidity();

  if (! isnan(t)) {  // check if 'is not a number'
    Serial.print("Temp *C = "); Serial.println(t);
  } else { 
    Serial.println("Failed to read temperature");
  }
  
  if (! isnan(h)) {  // check if 'is not a number'
    Serial.print("Hum. % = "); Serial.println(h);
  } else { 
    Serial.println("Failed to read humidity");
  }
  Serial.println();
  delay(1000);
}

Re: Teplotni senzor sht31

Napsal: 07 pro 2019, 21:06
od ondraN
Zkus metodu readStatus() Zjisti si co ti vrací když je to připojené a když ne.
Víc asi neporadím protože sht31 nepoužívám.

Re: Teplotni senzor sht31

Napsal: 07 pro 2019, 21:29
od gilhad
Pokud se pripojeni nepovede a dostane se to sem

Kód: Vybrat vše

 while (1) delay(1);

tak uz to tu zustane navzdy a nic to zkouset nebude.

Takze to vzit jen jako zakladni ideu a program si napsat tak, aby delal to, co potrebujes.

Re: Teplotni senzor sht31

Napsal: 08 pro 2019, 08:25
od Le-Ze
ondraN » Nic takoveho google nenešlol

gilhad » Proč si mysliš že tu řešim, jak zjistim v void loop, jestli jsem připojený k SHT31?

Re: Teplotni senzor sht31

Napsal: 08 pro 2019, 11:32
od kiRRow
vždyť už tam všechno je ...

Kód: Vybrat vše

  if (! isnan(t)) {  // Tady se kontroluje jestli je teplota číslo
    Serial.print("Temp *C = "); Serial.println(t); // Pokud ano, vytiskne se do seriové linky
  } else { 
    Serial.println("Failed to read temperature"); // Pokud číslo není, došlo k chybě čtení => tady bych si asi dal counter a pokud by "přetekl" vyhodnotil bych to jako odpojený senzor
  }
  
  if (! isnan(h)) {  // uplně to samé co o blok výše
    Serial.print("Hum. % = "); Serial.println(h);
  } else { 
    Serial.println("Failed to read humidity");
  }

Re: Teplotni senzor sht31

Napsal: 08 pro 2019, 18:56
od ondraN
Le-Ze píše:
08 pro 2019, 08:25
ondraN » Nic takoveho google nenešlol
nehledej to na googlu ale v hlavičkovém souboru adafruit knihovny Adafruit_SHT31.h nebo .cpp
Je tam třeba tohle:
/**
* Gets the current status register contents.
*
* @return The 16-bit status register.
*/
uint16_t readStatus(void);

Použiješ to jako jakoukoli jinou metodu, např:

Kód: Vybrat vše

unsigned int StatusRegister=0;
StatusRegister=sht31.readStatus();
Zjisti si, jakou hodnotu (nebo hodnoty) dostaneš, když je senzor zapojený a když ho za běhu odpojíš (o to ti asi jde, protože jak už psal gilhad, kontrola je už v setup při inicializaci senzoru a ta při selhání zastaví provádění dalšího kódu).