Teplotni senzor sht31

Odpovědět
Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Teplotni senzor sht31

Příspěvek od Le-Ze » 07 pro 2019, 12:37

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);
}

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Teplotni senzor sht31

Příspěvek od ondraN » 07 pro 2019, 21:06

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.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Teplotni senzor sht31

Příspěvek od gilhad » 07 pro 2019, 21:29

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.

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: Teplotni senzor sht31

Příspěvek od Le-Ze » 08 pro 2019, 08:25

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?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Teplotni senzor sht31

Příspěvek od kiRRow » 08 pro 2019, 11:32

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");
  }

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Teplotni senzor sht31

Příspěvek od ondraN » 08 pro 2019, 18:56

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).

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů