Cada digito terá segmentos (ABCDEFG), o que se pretende é que o último tenha ligado o C.
const uint8_t celsius[] = {
SEG_A | SEG_B | SEG_F | SEG_G, // Circulo
SEG_A | SEG_D | SEG_E | SEG_F // C
};
Assim, o nosso código para os dígitos
// Cria objeto para TM1637Display:
TM1637Display display = TM1637Display(CLK, DIO);
// Cria linha de elementos (array) a ON:
const uint8_t data[] = {0xff, 0xff, 0xff, 0xff};
// Cria linha de elementos (array) a OFF:
const uint8_t blank[] = {0x00, 0x00, 0x00, 0x00};
// Podemos selecionar e fixar cada uma dos segementos:
// Neste exemplo vai aparecer a palavra "dOnE"
const uint8_t done[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_C | SEG_E | SEG_G, // n
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
};
// Cria o simbolo "ºC" grau celsius:
const uint8_t celsius[] = {
SEG_A | SEG_B | SEG_F | SEG_G, // Circulo
SEG_A | SEG_D | SEG_E | SEG_F // Letra C
};
// Cria o simbolo "C", Celsiu:
const uint8_t celsiu[] = {
SEG_A | SEG_D | SEG_E | SEG_F // Letra C
};
void setup() {
// Limpa o display:
display.clear();
delay(1000);
}
void loop() {
// Define o Brilho:
display.setBrightness(7);
// Liga todos os segmentos:
display.setSegments(data);
delay(1000);
display.clear();
delay(1000);
// Mostra contagem:
int i;
for (i = 0; i < 101; i++) {
display.showNumberDec(i);
delay(50);
}
delay(1000);
display.clear();
delay(1000);
// Mostra o número em posições diferentes duas vezes:
int j;
for (j = 0; j < 2; j++) {
for (i = 0; i < 4; i++) {
display.showNumberDec(i, false, 1, i);
delay(500);
display.clear();
}
}
delay(1000);
display.clear();
delay(1000);
// Define brilho (0-7):
int k;
for (k = 0; k < 8; k++) {
display.setBrightness(k);
display.setSegments(data);
delay(500);
}
delay(1000);
display.clear();
delay(1000);
// Mostra 1234 com o ponto de separação:
display.showNumberDecEx(1234, 0b11100000, false, 4, 0);
delay(1000);
display.clear();
delay(1000);
int temperature = 24;
display.showNumberDec(temperature, false, 2, 0);
display.setSegments(celsius, 2, 2);
delay(1000);
display.clear();
delay(1000);
display.setSegments(done);
while(1);
}
Este exemplo pode facilmente ser adaptado para o código com o ds18b20
No final do código apenas temos de modificar a última rotina
void loop() {
if (sensors.getDS18Count() != 0) {
sensors.requestTemperatures();
double temp = sensors.getTempCByIndex(0);
display.showNumberDecEx(temp * 100, 0b01000000, false);
}
delay(1000);
}
Os digitos são definidos por
Para o display com "." PONTO de separação:
0b10000000 - 0.000
0b01000000 - 00.00
0b00100000 - 000.0
0b11100000 - 0.0.0.0
Com ":" DOIS PONTOS:
0b01000000 - 00:00
Com "." PONTO e ":" DOIS PONTOS:
0b11100000 - 0.0:0.0
Para e temos de definir a variável Celsiu que coloca a letra C no final
void loop() {
if (sensors.getDS18Count() != 0) {
sensors.requestTemperatures();
double temp = sensors.getTempCByIndex(0);
display.showNumberDecEx(temp * 100, 0b01000000, 3, 0);
display.setSegments(celsiu, 3, 1);
}
delay(1000);
}
Definição do display é dado por:
setSegments(segments[ ], length, position)
Definição dos valores
showNumberDec(number, leading_zeros, length, position)
Assim, apenas temos de definir a letra C "Celsiu" e alterar a saída do display