Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Arduino NTC teplomer s MAX7219

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 10:40    Předmět: Arduino NTC teplomer s MAX7219 Citovat

Zdravím. chcem poprosiť u radu s týmto teplomerom. Zosmolil som túto jednoduchú konštrukciu, ale má to chybu krásy. Teplomer funguje iba do 00,0°C a už neviem ako ďalej, aby som dosiahol mínusovú teplotu. Ohmická tezerva na anal. vstupe ešte je. Ak teplomerovú časť požijem s LCD, tak to funguje, s MAXom nie. Neviem, čo ďalej treba pridať alebo zmeniť, na internete je veľmi málo takýchto zapojení, myslím s MAXom. Ale myslím, že mi niečo chýba. A ešte by som poprosil aj odstránenie prebytočnej nuly na začiatku, pod hodnodou 10,0°C. Ďakujem.


Thermometer31_NTC_MAX7219_test.zip
 Komentář:

Stáhnout
 Soubor:  Thermometer31_NTC_MAX7219_test.zip
 Velikost:  640 Bajtů
 Staženo:  16 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 462

PříspěvekZaslal: st listopad 12 2025, 12:09    Předmět: Citovat

To minus bych zkusil nějak takhle (ale nemám to jak vyzkoušet):
kód:
#include "LedControl.h"
LedControl lc = LedControl(2,4,3,1);

float ThermistorPina = A0;
float Va;
int tempC;
float Reading;
float R1 = 10000;
float logR2, R2, T, Tc, Tca, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
char minus;

void setup(){
  lc.shutdown(0, false);
  lc.setIntensity(0, 0); 
  lc.clearDisplay(0);}
 
void loop(){
  Va = analogRead(ThermistorPina); 
  R2 = R1 * (1023.0 / (float)Va -1);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tca = (T - 273.15);
  Tf = (T * 9.0)/ 5.0 + 32.0;
  tempC=Tca*10;
 
  minus = ' ';
  if ( tempC < 0 )
  {
    minus = '-';
    tempC *= -1;
  }
 
  int temp1 = (tempC % 10); // one of temp
  int temp2 =  (tempC / 10) % 10; // tens of temp
  int temp3 =  (tempC / 100) % 10; // units of temp

   lc.setRow(0,7,15);     
   lc.setRow(0,6,0);     
   lc.setRow(0,5,0);   
   lc.setDigit(0,4,temp3,false);   
   lc.setDigit(0,3,temp2,true);
   lc.setDigit(0,2,temp1,false);
   lc.setChar(0,1,minus,false);
   lc.setRow(0,1,99);
   lc.setRow(0,0,78);
delay(300);
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 14:37    Předmět: Citovat

Perfekne, ďakujem asdf, akurát trebalo poprehadzovať riadky do lc.setChar(0,5,minus,false); , ešte keby sa niekomu podarilo tú zbytočnú nulu.


Thermometer31_NTC_MAX7219_test.zip
 Komentář:

Stáhnout
 Soubor:  Thermometer31_NTC_MAX7219_test.zip
 Velikost:  681 Bajtů
 Staženo:  5 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
samec



Založen: Dec 19, 2017
Příspěvky: 5794

PříspěvekZaslal: st listopad 12 2025, 14:41    Předmět: Citovat

float ThermistorPina = A0; nie je dobrý nápad Právník
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 14:44    Předmět: Citovat

Dôvod? aj keď to funguje?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 462

PříspěvekZaslal: st listopad 12 2025, 14:51    Předmět: Citovat

Zkusil bych to takhle (nemám to jak vyzkoušet):
kód:
#include "LedControl.h"
LedControl lc = LedControl(2,4,3,1);

float ThermistorPina = A0;
float Va;
int tempC;
float Reading;
float R1 = 10000;
float logR2, R2, T, Tc, Tca, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
char minus;

void setup(){
  lc.shutdown(0, false);
  lc.setIntensity(0, 0); 
  lc.clearDisplay(0);}
 
void loop(){
  Va = analogRead(ThermistorPina); 
  R2 = R1 * (1023.0 / (float)Va -1);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tca = (T - 273.15);
  Tf = (T * 9.0)/ 5.0 + 32.0;
  tempC=Tca*10;
 
  minus = ' ';
  if ( tempC < 0 )
  {
    minus = '-';
    tempC *= -1;
  }
 
  int temp1 = (tempC % 10); // one of temp
  int temp2 =  (tempC / 10) % 10; // tens of temp
  int temp3 =  (tempC / 100) % 10; // units of temp

   lc.setRow(0,7,15);     
   lc.setRow(0,6,0);     
   lc.setRow(0,5,0);
   if ( temp3 == 0 )
   {
     lc.setChar(0,5,' ',false);
     lc.setChar(0,4,minus,false);
   }
   else
   {   
     lc.setChar(0,5,minus,false);
     lc.setDigit(0,4,temp3,false);
   }   
   lc.setDigit(0,3,temp2,true);
   lc.setDigit(0,2,temp1,false);
   lc.setRow(0,1,99);
   lc.setRow(0,0,78);
delay(300);
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
samec



Založen: Dec 19, 2017
Příspěvky: 5794

PříspěvekZaslal: st listopad 12 2025, 15:01    Předmět: Citovat

jankrizan napsal(a):
Dôvod? aj keď to funguje?
Nikdy nepoužívaj float pre celé čísla.
Nedávno tu bola o tom debata
http://www.ebastlirna.cz/modules.php?name=Forums&file=viewtopic&t=110069
presnejšie od strany 2 až do konca.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 462

PříspěvekZaslal: st listopad 12 2025, 15:06    Předmět: Citovat

Taky tu řádku
kód:
LedControl lc = LedControl(2,4,3,1);
bych zkusil změnit na
kód:
LedControl lc(2,4,3,1);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 15:30    Předmět: Citovat

Vďaka za informácie. Pre asdf: Ďakujem ide to, ale zasa som si dovolil malý zásah do riadkov v lc. Mínusko poskakovalo z pozície 4 na 5, ak sa teplota zmenila o dekádu. Čo sa týka riadku - LedControl lc.... tak je to v každom programe, ktorý má MAX7219, ale samozrejme, že to môžem zmeniť, program funguje rovnako a nemá problém ani s kompiláciou, ani s fungovaním.
Pre samec: Ja som chápal z "priloženého txt", že int sa používa na celé a kladné čísla a float na plávajúce čísla, ako trebars mínus a plus a desatinné čiarky, preto. Ale zmenil som na int, ak si myslel toto. Program beží rovnako a nemá problém. Ale VĎAKA, tieto veci mi len prospejú.



Thermometer31_NTC_MAX7219_test.zip
 Komentář:

Stáhnout
 Soubor:  Thermometer31_NTC_MAX7219_test.zip
 Velikost:  1.84 kB
 Staženo:  4 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2674
Bydliště: SR, Poprad

PříspěvekZaslal: st listopad 12 2025, 15:44    Předmět: Citovat

jankrizan: ano, float je na des. cisla. ale ty mu tam definujes cislo pinu, nie hodnotu na jeho vstupe.
_________________
No vidis, a tak si sa bal
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 15:50    Předmět: Citovat

Aha, chápem, vďaka.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 462

PříspěvekZaslal: st listopad 12 2025, 16:04    Předmět: Citovat

Tahle řádka
kód:
LedControl lc = LedControl(2,4,3,1);
dělá to, že vytvoří dočasný objekt, zinicializuje ho, jak je požadováno. Pak vytvoří objekt lc, inicializuje ho jako kopii toho dočasného objektu. A pak ten dočasný objekt zruší. Kdyby ten objekt byl nějaký složitější, tak by mohl s tím jeho kopírováním být problém. Tady asi problém není, ale proč to dělat tak složitě, když to jde jednoduše.

Tímhle
kód:
LedControl lc(2,4,3,1);
se inicializuje na požadované hodnoty rovnou ten objekt lc. Žádná kopie se nedělá.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
jankrizan



Založen: Dec 30, 2007
Příspěvky: 139

PříspěvekZaslal: st listopad 12 2025, 16:16    Předmět: Citovat

Chápem, takže ak to takto upravím aj v iných konštrukciach, tak nič nepokazím?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 462

PříspěvekZaslal: st listopad 12 2025, 16:21    Předmět: Citovat

Já bych to upravil všude.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund