Stránka 2 z 5
Napsal: 19 dub 2024, 22:03
od Dumitru
buchar píše:Valdano: Přepsal jsem na setNumberF a funguje to. A v tom ostatním máte asi pravdu. Zakomentoval jsem čtení z čida, vepsal celé číslo místo tempC a displej nebliká. Takže budu muset přepsat celý kód. Díky za vaše znalosti.
A teda z novým kódom už ukazuje teplotu správnu nie posunutú o dva stupne ?
Napsal: 19 dub 2024, 22:04
od petrfilipi
Pokud bys nepotřeboval takovou přesnost měření, dostal bys data z čidla rychleji. Při přesností 0,0625°C (12 bitů) trvá převod 750 ms, při přesností 0,5°C (9 bitů) trvá převod 94 ms. Přesnosti pro 10 a 11 bitů jakožto i časy převodu jsou popsány v datasheetu.
PF
Napsal: 19 dub 2024, 22:04
od Valdano
Mrkněte ještě na úpravu níže. Ta by měla odstranit i to blikání. Dá se totiž nastavit neblokující provádění konverze dat teplotního senzoru viz níže v upraveném příkladu.
Kód: Vybrat vše
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
#include "SevSeg.h"
SevSeg sevseg;
const unsigned long eventInterval = 1000;
unsigned long previousTime = 0;
unsigned long currentTime = 0;
byte numDigits = 4;
byte digitPins[] = {A5, A4, A3, A2};
byte segmentPins[] = {2, 13, 6, 4, 3, 12, 7, 5};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
bool updateWithDelays = true;
bool leadingZeros = false;
bool disableDecPoint = false;
bool cekaniNaKonverzi = false;
float tempC;
void setup()
{
Serial.begin(9600);
sensor.begin();
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins,
resistorsOnSegments, updateWithDelays, leadingZeros,
disableDecPoint);
sevseg.setBrightness(90);
sensor.setResolution(11);
}
void loop()
{
currentTime = millis();
if (!cekaniNaKonverzi && (currentTime - previousTime) >= eventInterval) {
previousTime = currentTime;
// nastavit neblokující volání
sensor.setWaitForConversion(false);
// následující volání skončí hned bez čekání a konverze bude probíhat na pozadí
// na dokončení konverze se bude čekat bez blokování viz níže
sensor.requestTemperatures();
// nastavit příznak neblokujícího čekání na dokončení konverze dat senzoru na pozadí
cekaniNaKonverzi = true;
};
if (cekaniNaKonverzi) {
// neblokující dotaz zda konverze dat na pozadí již byla dokončena
if (sensor.isConversionComplete()) {
// konverze dat dokončena
cekaniNaKonverzi = false;
// teprve nyní načíst a zobrazit data
// a to by již mělo být rychlé bez bliknutí
tempC = sensor.getTempCByIndex(0);
Serial.println(tempC);
sevseg.setNumberF(tempC, 1);
};
};
sevseg.refreshDisplay();
}
Napsal: 19 dub 2024, 22:16
od buchar
Valdano, hned zítra vyzkouším vaši úpravu kódu. Dnes už nemám prostor. Zatím moc díky a ostatním taky. Zítra dám vědět jak to bude chodit.
Napsal: 19 dub 2024, 22:27
od bum
"Dumitru" samotný řadič je DPS s osazeným PIC který se osadí na piny znakového LCD displeje. Více je na
www.snailshop.cz.
Napsal: 19 dub 2024, 22:42
od Dumitru
bum píše:"Dumitru" samotný řadič je DPS s osazeným PIC který se osadí na piny znakového LCD displeje. Více je na
www.snailshop.cz.
Ďakujem

za informáciu ale ostanem pri 74HC595.
Napsal: 20 dub 2024, 06:56
od Cowley
Dumitru: nebo 4094 či 8574

Napsal: 20 dub 2024, 08:27
od buchar
Dobré ráno všem.
Valdano, vyzkoušel jsem tvoji úpravu kódu. Bohužel už nevleze na ATmegu8 což je mi líto, že je nemůžu s tvým kódem použít, ale musel jsem použít ATmegu168.
Při spuštění displej po 1s mrkne.
Napsal: 20 dub 2024, 10:20
od petrfilipi
A musíš tu teplotu měřit opravdu v každém cyklu programu? Nestačilo by ji měřit v každém x-tém cyklu, kde x= 10, 20, 200, ...?
PF
Napsal: 20 dub 2024, 10:28
od buchar
Já myslím, že nemusím. Nepotřebuji znát teplotu každou vteřinu.
Napsal: 20 dub 2024, 11:46
od Dumitru
buchar píše:Dobré ráno všem.
Valdano, vyzkoušel jsem tvoji úpravu kódu. Bohužel už nevleze na ATmegu8 což je mi líto, že je nemůžu s tvým kódem použít, ale musel jsem použít ATmegu168.
Při spuštění displej po 1s mrkne.
Za prvé nedostať meranie teploty cez 1wire a zobrazenie teploty na
7-tovku do 8kb je úplná šialenosť attiny13 by to zvládla.
Za druhé už vieme že posunutie o 2 stupne je chýba kódu ?
Napsal: 20 dub 2024, 12:40
od buchar
Dumitru, myslíš, že je to chyba kódu?
Dokázal by jsi tu chybu najít?
Napsal: 20 dub 2024, 13:24
od Dumitru
buchar píše:Dumitru, myslíš, že je to chyba kódu?
Dokázal by jsi tu chybu najít?
Ja neviem zatiaľ či je to v kóde ale ty už máš aj kód z arduina ten síce bliká ale meria ja som myslel že si to porovnaš či teplota je v poriadku alebo tiež je posunutá od toho sa môžeme ďalej odraziť .
Ak dva rôzne kódy posúvajú teplotu tak to v kóde nebude
Ak kód z arduino ukazuje dobre tak nájdeme chybu v C kóde
Treba len zistiť kde je presne problém SW či HW
Napsal: 20 dub 2024, 13:48
od buchar
Tento nový kód od Valdano ukazuje přesně (+-0,5°C). Takže asi chyba v původním kódu?
Napsal: 20 dub 2024, 14:04
od Dumitru
buchar píše:Tento nový kód od Valdano ukazuje přesně (+-0,5°C). Takže asi chyba v původním kódu?
Ak všetky 3 teplomery bez žiadneho zásahu do pcb len prepalenim nového kódu z arduino ukazujú správne tak chýba bude v kóde.