Stránka 1 z 2
Výpadek ds18b20
Napsal: 09 úno 2022, 07:34
od HonzaR
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
Re: Výpadek ds18b20
Napsal: 09 úno 2022, 09:31
od ondraN
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}
Re: Výpadek ds18b20
Napsal: 09 úno 2022, 10:43
od HonzaR
ano je float.
to co jsi psal jsem tuším zkoušel ale pro jistotu vyzkouším znovu jak přijdu domů
Re: Výpadek ds18b20
Napsal: 09 úno 2022, 18:06
od HonzaR
tak vyzkoušeno a pořád se vždy vrátí OK
Re: Výpadek ds18b20
Napsal: 09 úno 2022, 18:26
od kiRRow
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 ? ...
Re: Výpadek ds18b20
Napsal: 09 úno 2022, 21:43
od jankop
Ž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.
Re: Výpadek ds18b20
Napsal: 10 úno 2022, 07:21
od HonzaR
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");
}}
Re: Výpadek ds18b20
Napsal: 10 úno 2022, 08:05
od Diego
Zkus dole vyměnit podmínky
if(dallas1 < -126)
{
Serial.println("chyba");
}
else
{
Serial.println("ok");
}
Re: Výpadek ds18b20
Napsal: 10 úno 2022, 09:45
od jankop
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");
}}
Re: Výpadek ds18b20
Napsal: 10 úno 2022, 09:57
od ondraN
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?