Příspěvek
od mrna101 » 03 kvě 2018, 17:35
Mám ale jiný problém. Hodiny šlapou a měřím teplotu na dalasu a neumím rozsvítit desetinnou tečku u tohoto displeje.
#include <TM1637Display.h>
#include <Wire.h>
#include <DS3231.h>
#include <OneWire.h>
#include <DallasTemperature.h>
float a;
int tepl;
const int pinCidlaDS = 4;
OneWire oneWireDS(pinCidlaDS);
DallasTemperature senzoryDS(&oneWireDS);
DS3231 rtc;
RTCDateTime datumCas;
#define CLK 12
#define DIO 13
TM1637Display display(CLK, DIO);
int x;
int y;
int w;
byte s = 0;
byte r;
void setup() {
rtc.begin();
senzoryDS.begin();
display.setBrightness(10);
}
void loop() {
senzoryDS.requestTemperatures();
a = senzoryDS.getTempCByIndex(0);
tepl = a * 100;
datumCas = rtc.getDateTime();
uint8_t vypis[] = { 0, 0, 0, 0 };
x = datumCas.hour * 60;
y = datumCas.minute;
w = x + y;
vypis[0] = display.encodeDigit((w/60)/10);
vypis[1] = display.encodeDigit((w/60)%10);
vypis[2] = display.encodeDigit((w%60)/10);
vypis[3] = display.encodeDigit((w%60)%10);
display.setSegments(vypis);
delay(250);
vypis[1] = vypis[1]+128;
display.setSegments(vypis);
delay(250);
s = s + 1;
if(s == 5){
uint8_t vypis[] = { 0, 0, 0, 0 };//nastavení displeje na zobrazení teploty
vypis[1]=display.encodeDigit(tepl /1000);//teplota desítky
vypis[2]=display.encodeDigit((tepl %1000)/100);//teplota jednotky
vypis[3]=display.encodeDigit(((tepl %1000)%100)/10);//?teplota desetina jednotky
if(tepl < 0){
vypis[0]=(SEG_G);
}
display.setSegments(vypis);
delay(1000);
s = 0;
}
}