#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 10
#define DATA_PIN 11
#define CLK_PIN 13
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 0.9096034675E-3, c2 = 2.149137558E-4, c3 = 1.063439787E-7;
void setup() {
myDisplay.begin();
myDisplay.setIntensity(5);
myDisplay.displayClear();
}
void loop() {
Vo = analogRead(A1);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
Tc = T - 273.15;
int hour = 21;
int minute = 37;
int day = 21;
int month = 8;
String timeString = String(hour) + ":" + String(minute);
String dateString = String(day) + "/" + String(month);
String tempString = String(Tc, 1) + "'C";
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.setInvert(false);
//myDisplay.print(timeString);
//delay(5000);
//myDisplay.print(dateString);
//delay(5000);
myDisplay.print(tempString);
delay(5000);
}
Napisałem taki kod, wyniki ładnie się wyświetlają na wyświetlaczu lecz wahają się do 7 stopni w góre od faktycznej wartości temperatury, termistor to 47kOhm 5% NTC. Ktoś ma pomysł co robie źle?