Výpadek ds18b20

HonzaR
Příspěvky: 4
Registrován: 09 úno 2022, 07:26
Reputation: 0

Výpadek ds18b20

Příspěvek od HonzaR » 09 úno 2022, 07:34

Ahoj,

prosím o pomoc.

Jak v programu fixnout když mi vypadne dallasu?

jde o to, že když "odpojím" dallas, tak se mi vrátí teplota -127, problém je že na ni nejsem schopen reagovat.

např když bych vložil do programu:

if(dallas == -127){
serial.println("chyba");
}
if(dallas != -127){
serial.println("ok");
}

tak vždy se vrátí odpověď "ok" a to i když odpojím dallas z nepájivého pole

díky

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

Re: Výpadek ds18b20

Příspěvek od ondraN » 09 úno 2022, 09:31

A jakého typu je proměnná dallas?? Pokud je to float, tak nelze rozumě použít operátory == a !=
zkus to třeba
if (dallas < -126) {
//reakce na chybu}
else{
//zpracování hodnoty}

HonzaR
Příspěvky: 4
Registrován: 09 úno 2022, 07:26
Reputation: 0

Re: Výpadek ds18b20

Příspěvek od HonzaR » 09 úno 2022, 10:43

ano je float.

to co jsi psal jsem tuším zkoušel ale pro jistotu vyzkouším znovu jak přijdu domů

HonzaR
Příspěvky: 4
Registrován: 09 úno 2022, 07:26
Reputation: 0

Re: Výpadek ds18b20

Příspěvek od HonzaR » 09 úno 2022, 18:06

tak vyzkoušeno a pořád se vždy vrátí OK

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

Re: Výpadek ds18b20

Příspěvek od kiRRow » 09 úno 2022, 18:26

Kód: Vybrat vše

if(dallas == -127.00){
serial.print(dallas);
serial.println(":1chyba");
}

if(dallas < -126){
serial.print(dallas);
serial.println(":2chyba");
}

if(dallas > -126){
serial.print(dallas);
serial.println(":3asiOK");
}
Co to vypíše ? ...

jankop
Příspěvky: 1030
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Výpadek ds18b20

Příspěvek od jankop » 09 úno 2022, 21:43

Že jsem tak smělý. dallas je co?
Opravdu má smysl diskutovat nad tím, proč podmínka nemá hodnotu jakou si přeji, když vůbec netuším, co se v proměnné dallas nalézá? Dej sem ten program a já ti řeknu, co v něm děláš za chybu. Jinak nemá cenu tady vést diskusi.

HonzaR
Příspěvky: 4
Registrován: 09 úno 2022, 07:26
Reputation: 0

Re: Výpadek ds18b20

Příspěvek od HonzaR » 10 úno 2022, 07:21

jankop píše:
09 úno 2022, 21:43
Že jsem tak smělý. dallas je co?
Opravdu má smysl diskutovat nad tím, proč podmínka nemá hodnotu jakou si přeji, když vůbec netuším, co se v proměnné dallas nalézá? Dej sem ten program a já ti řeknu, co v něm děláš za chybu. Jinak nemá cenu tady vést diskusi.
dallas- ds18b20

s kódem jsem teprve začal (navíc se s arduinem teprve učím):

Kód: Vybrat vše

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

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Addresses of 3 DS18B20s
uint8_t dallas[8] = { 0x28, 0x61, 0x64, 0x11, 0x83, 0xC0, 0x7F, 0xD8 };

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures();
  

  printTemperature(dallas); 
  Serial.println();
  delay(1000);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float dallas1 = sensors.getTempC(dallas);
  
if(dallas1 == -127){
Serial.println("chyba");
}
if(dallas1 != -127){
Serial.println("ok");
}}

Uživatelský avatar
Diego
Příspěvky: 169
Registrován: 23 črc 2017, 09:43
Reputation: 0
Kontaktovat uživatele:

Re: Výpadek ds18b20

Příspěvek od Diego » 10 úno 2022, 08:05

Zkus dole vyměnit podmínky
if(dallas1 < -126)
{
Serial.println("chyba");
}
else
{
Serial.println("ok");
}
https://arze.cz - ARduino Zapojení Elektronika

jankop
Příspěvky: 1030
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Výpadek ds18b20

Příspěvek od jankop » 10 úno 2022, 09:45

dallas- ds18b20
Co je Dallas vím, šlo mi o význam v programu.
Použil jsem Arduino NANO s AVR 1.8.4 a Arduino IDE 1.8.19.
Program ten tvůj, téměř beze změny, jen knihovny jsem musel střelit od oka, protože je nespecifikuješ. ovšem výsledek je :

Kód: Vybrat vše

09:33:13.837 -> chyba
09:33:13.837 -> -127.00
09:33:13.837 -> 
09:33:15.572 -> chyba
09:33:15.572 -> -127.00
09:33:15.572 -> 
Tak nějak nevím, co vlastně řešíš?

Kód: Vybrat vše

#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Addresses of 3 DS18B20s
uint8_t dallas[8] = { 0x28, 0x61, 0x64, 0x11, 0x83, 0xC0, 0x7F, 0xD8 };
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
printTemperature(dallas);
Serial.println();
delay(1000);
}
void printTemperature(DeviceAddress deviceAddress)
{
float dallas1 = sensors.getTempC(dallas);
if(dallas1 == -127){
Serial.println("chyba");
Serial.println(dallas1);
}
if(dallas1 != -127){
Serial.println("ok");
}}

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

Re: Výpadek ds18b20

Příspěvek od ondraN » 10 úno 2022, 09:57

Tak vida, v úvodu byl název proměnné dallas, teď už je to dallas1. Nebyla chyba v tom?
A taky se zkus zamyslet nad předáváním nodnot nebo odkazů funkci. Proč ji předáváš něco, s čím pak vůbec nepracuješ a použiješ globální proměnnou?

Odpovědět

Kdo je online

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