Odpověď na: Hodinový displej TM1637
Úvodní stránka › Fórum › Vaše projekty › Arduino › Hodinový displej TM1637 › Odpověď na: Hodinový displej TM1637
1.2.2017 v 20:51
#10349
posjirka
Účastník
to je vcelku jasné. bavíme se o proměnné typu byte která nabývá hodnot 0-255.
Když dělíš -5 st. c tak ti vyjde 255-5 = 250 což je v hex. kodovani rovno „FA“.
zkus toto:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
TM1637Display displej(CLK,DIO);
const int pinCidlaDS = 4; // nastavení čísla vstupního pinu
OneWire oneWireDS(pinCidlaDS);
DallasTemperature senzoryDS(&oneWireDS);
byte teplota=0;
int rele=8;
void setup() {
pinMode(rele,OUTPUT);
Serial.begin(9600);
senzoryDS.begin();
displej.setBrightness(8);//jas displeje 8-15
}
void loop() {
senzoryDS.requestTemperatures();
teplota=senzoryDS.getTempCByIndex(0);
Serial.print("Teplota cidla DS18B20: ");
Serial.print(senzoryDS.getTempCByIndex(0));
Serial.println(" stupnu Celsia");
// pauza pro přehlednější výpis
delay(1000);
if(teplota>25){
digitalWrite(rele,LOW);//sepne rele
} else {
digitalWrite(rele,HIGH);//rozepne rele
}
uint8_t vypis[] = { 0, 0, 0, 0 };//nastavení displeje na zobrazení teploty
if(teplota<1){
vypis[0]=(SEG_G);
}
teplota = abs(teplota); // prepocet na absolutni hodnotu
vypis[1]=displej.encodeDigit((teplota/10)/10);//teplota stovky
vypis[2]=displej.encodeDigit((teplota/10)%10);//teplota desítky
vypis[3]=displej.encodeDigit((teplota%10)%10);//teplota jednotky
displej.setSegments(vypis);
}
jinak pro vkladani kodu používej párové značky CODE. Je to to tlačítko v horni části odpovědi s nápisem CODE. jinak se ti špatně vloží text a není pak čitelný