Как таки поставить точку на любом индикаторе с TM1637?

Привет народ!
Темы подобные видел, но там обсуждался готовый модуль и решение сводилось к тому, что точек в нем все равно нет, а значит и ставить их не надо. У меня микросхема TM1637 и 3 индикатора с точками. Вот схема всего устройства:


Вот код:

#include "TM1637.h"   // Подключаем библиотеку для работы с модулем
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TickerScheduler.h>

//Определяем пины для подключения к плате Arduino
#define CLK 3
#define DIO 2
//Создаём объект класса TM1637, в качестве параметров
//передаём номера пинов подключения
TM1637 tm1637(CLK, DIO);

// Номер пина Arduino с подключенным датчиком
#define PIN_DS18B20 4
// Создаем объект OneWire
OneWire oneWire(PIN_DS18B20);
// Создаем объект DallasTemperature для работы с сенсорами, передавая ему ссылку на объект для работы с 1-Wire.
DallasTemperature dallasSensors(&oneWire);
// Специальный объект для хранения адреса устройства
DeviceAddress sensorAddress;
TickerScheduler ts(1);

//char temperatureCString[6];
int d0, d1, d3;
bool znak;

void setup() {
  Serial.begin(115200);
  //Инициализация модуля
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);
  dallasSensors.begin();
  ts.add(0, 1000, [&](void*) {
    GettOut();
    if (znak == 0) tm1637.point(POINT_OFF);
    tm1637.point(POINT_ON);
    tm1637.display(0,d0); 
    tm1637.point(POINT_ON);
    tm1637.display(1,d1);
    tm1637.point(POINT_OFF);
    tm1637.display(2,d3);

    //Serial.print("Temperature is: ");
    //Serial.print(d0);
    //Serial.print(d1);
    //Serial.println(d3);
  }, nullptr, true);
}

void loop() {  
  ts.update();
}

void ds18b20_init() {
  dallasSensors.begin();
  GettOut();
}

char* GettOut() {
  float tempC;
  int tempCI, d1t;
  dallasSensors.requestTemperatures(); 
  tempC = dallasSensors.getTempCByIndex(0) - 28;
  if (tempC < 0) znak = true;
  else znak = false;
  tempCI = tempC * 10;
  Serial.println(znak);
  Serial.println(tempC);
  Serial.println(tempCI);
  d0 = abs(tempCI) / 100;
  d1t = abs(tempCI) % 100;
  d1 = d1t / 10;
  d3 = d1t % 10;
}

Собственно мне надо получить значение температуры с двумя знаками до и одним знаком после запятой. И вывести его. Стабильную точку на втором разряде получается поставить и все хорошо. Но я хочу, что бы в случае отрицательной температуры, ставилась еще и точка в первом разряде. Тот код, что я указал точку ставит, но не реагирует на изменение знака температуры. Т.е. переменная, которая смотрит какой знак у температуры отрабатывает, а точка не меняется.

ссылку на библиотеку дайте

С точкой вы какую-то фигню написали…

В первой строке видимо пропущено else:

if (znak == 0) tm1637.point(POINT_OFF);
else  tm1637.point(POINT_ON);

но все равно это неправильно

Нич-чего не понятно.
Как известно, программа работает в точности так, как написана, но нередко - совсем не так, как ее хотели написать.
Во-первых, если ставит точку, значит тем самым реагирует на изменение знака. И что значит “точка не меняется”?
Подробно опишите, что хотите и что на самом деле происходит.
Ну и в коде укажите, какие именно строки кода должны ставить точку.

Действительно ELSE пропустил! Вот олух! А с элзом все заработало. Хотя действительно не должно было работать. Это уже крик отчаяния был. Но теперь работает. Спасибо!