Arduino NTC teplomer s MAX7219
Moderátor: Moderátoři
Arduino NTC teplomer s MAX7219
- Přílohy
-
Thermometer31_NTC_MAX7219_test.zip- (640 bajtů) Staženo 80 x
Kód: Vybrat vše
#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);
}- Přílohy
-
Thermometer31_NTC_MAX7219_test.zip- (681 bajtů) Staženo 70 x
Kód: Vybrat vše
#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);
}Nikdy nepoužívaj float pre celé čísla.jankrizan píše:Dôvod? aj keď to funguje?
Nedávno tu bola o tom debata
http://www.ebastlirna.cz/modules.php?na ... c&t=110069
presnejšie od strany 2 až do konca.
Kód: Vybrat vše
LedControl lc = LedControl(2,4,3,1);Kód: Vybrat vše
LedControl lc(2,4,3,1);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ú.
- Přílohy
-
Thermometer31_NTC_MAX7219_test.zip- (1.84 KiB) Staženo 64 x
- pocitujlasku
- Příspěvky: 2764
- Registrován: 12 pro 2005, 00:00
- Bydliště: SR, Poprad
Kód: Vybrat vše
LedControl lc = LedControl(2,4,3,1);Tímhle
Kód: Vybrat vše
LedControl lc(2,4,3,1);Datový typ int je celočíselný a platformně závislý a používá se jak pro kladné tak i pro záporné hodnoty. Na 16 bitové platformě se jedná o 16 bitovou proměnnou určenou pro rozsah celočíselných hodnot od -32768 do 32767. Na 32 bitové platformě se jedná o 32 bitovou proměnnou určenou pro rozsah celočíselných hodnot od -2147483648 do 2147483647.jankrizan píše:int sa používa na celé a kladné čísla