Тема: max6675 + 2x18b20 >> 3xTM1637
Термометр
3 индикатора TM1637
1 датчик ХА max6675
2 датчика DS18b20
Вывод температуры термопары от 0 до 1000 гр Цельсия
Вывод температуры датчиков DS18B20 от -55 до 125 гр. Цельсия
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.
#include <max6675.h>
#include <TM1637Display.h>
#include <OneWire.h>
#include <DallasTemperature.h>
MAX6675 temp1(2, 3, 4);// CLK,CS,SO
TM1637Display display_1(5, 6);// CLK,DIO
TM1637Display display_2(7, 8);// CLK,DIO
TM1637Display display_3(9,10);// CLK,DIO
OneWire oneWire(A0);// вход для датчиков 18b20
DallasTemperature t(&oneWire);
double t_c,t_sum,t_iz;
int t1,t2;
uint8_t data[]{0,0,0,0};
void setup(){ Serial.begin(9600);
display_1.setBrightness(3);// яркость TM1637 0-7
display_2.setBrightness(3);// яркость TM1637 0-7
display_3.setBrightness(3);// яркость TM1637 0-7
t.begin();
t.setResolution(10);//10 бит
}
void loop(){
///////// max6675 //////////////////////////
t_sum=0;
for(int i=0;i<5;i++){t_c=temp1.readCelsius();t_sum=t_sum+t_c;delay(200);}
t_iz=t_sum/5;
///////////// 18b20
t.requestTemperatures();
t1 = t.getTempCByIndex(0);
t2 = t.getTempCByIndex(1);
/////// индикация //////////////////////////
display_1.showNumberDecEx(t_iz,0x00,false);
if(t1 < 0){t1=abs(t1);data[0] = 0x40;}else{data[0] = 0x00;}
data[1] = display_2.encodeDigit(t1/100);
data[2] = display_2.encodeDigit((t1/10)%10);
data[3] = display_2.encodeDigit((t1%10)%10);
display_2.setSegments(data);
if(t2 < 0){t2 = abs(t2);data[0] = 0x40;}else{data[0] = 0x00;}
data[1] = display_3.encodeDigit(t2/100);
data[2] = display_3.encodeDigit((t2/10)%10);
data[3] = display_3.encodeDigit((t2%10)%10);
display_3.setSegments(data);
}