Close

Odpověď na: Hodinový displej TM1637

Úvodní stránka Fórum Vaše projekty Arduino Hodinový displej TM1637 Odpověď na: Hodinový displej TM1637

#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ý