Помогите вставить минус

Ze-pp
Offline
Зарегистрирован: 20.12.2018

Приветствую!

Всех с Новым годом!

Разаработал для своего гаража проект часов с 2- мя термодатчиками и выводом показаний на тм1637.

Помогите "допилить" код, чтобы при отрицательных температурах на первом сегменте отображался минус.

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2  // DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x28, 0xFF, 0xE, 0xFE, 0x63, 0x15, 0x2, 0x60 };
DeviceAddress outsideThermometer = { 0x28, 0xFF, 0x92, 0xC3, 0x63, 0x15, 0x3, 0x7D };
#include "GyverTM1637.h"
#define CLK  3            // номер пина семисегмента TM1637
#define DIO  4            // номер пина семисегмента TM1637
GyverTM1637 disp(CLK, DIO);
#include <Wire.h> // must be included here so that Arduino library object file references work
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1307);

uint8_t disp_mode   = 0;
byte m, h, s;
boolean flag;
uint32_t Now;


void setup () 
{
  Serial.begin(57600);
  sensors.begin();
  time.begin();
  disp.clear();
  disp.brightness(7);  // яркость, 0 - 7 (минимум - максимум)
  delay(50);
  runningText(); // приветственная бегущая строка


  oneWire.reset_search();
  if (!oneWire.search(insideThermometer)) Serial.println("Не найден внутренний датчик");
  if (!oneWire.search(outsideThermometer)) Serial.println("Не найден внешний датчик");   
}

void loop () 
{
  time.gettime();
  Clock();
  TempIn();
  delay(2000);
   TempOut();
  delay(2000);
} 

/*********************** Отображение времени**********************/
    void Clock(){
       h=time.Hours;
       m=time.minutes; 
      uint32_t tmr;
      Now = millis();
      while (millis () - Now < 3000) {   // показываем время 3 секунды
      if (millis() - tmr > 500) {       // каждые полсекунды
      tmr = millis();
      flag = !flag;
      disp.point(flag); }  // выкл/выкл точки        
      disp.displayClock(h, m);}   // выводим время функцией часов
 Serial.print(time.Hours);   Serial.print(":");  // Вывод часов
 Serial.println(time.minutes);   // Вывод минут
    }     
/*************** Отображение температуры внутри******************/
 
    void TempIn(){
        sensors.requestTemperatures();
        int tempIn;
        tempIn = sensors.getTempC(insideThermometer);
              disp.clear();
              disp.point(false);
              byte label_in[] = {_1, _n, _t, _empty, _empty,};
              disp.runningString(label_in, sizeof(label_in), 200);
              disp.display(0,tempIn/10);
              disp.display(1,tempIn%10);
              disp.displayByte(3,0x63);
              Serial.print("temp In: ");
              Serial.println(tempIn);
    }
    
/************* Отображение температуры снаружи************/
void TempOut(){
          sensors.requestTemperatures();
          int tempOut;
          tempOut = sensors.getTempC(outsideThermometer);   
               disp.clear();
               disp.point(false);
               byte label_out[] = {_O, _U, _t, _empty, _empty,};
               disp.runningString(label_out, sizeof(label_out), 200);
               disp.displayByte(0,0x40); // знак минус для проверки
               disp.display(1,tempOut/10);
               disp.display(2,tempOut%10);
               disp.displayByte(3,0x63);
               Serial.print("temp Out: ");
               Serial.println(tempOut);
}
/***************Приветственная бегущая строка***************/
void runningText() {
  byte welcome_banner[] = {_H, _E, _L, _L, _O, _empty,_empty,_S,_A,_S,_H,_A,};
  disp.runningString(welcome_banner, sizeof(welcome_banner), 200);  // 200 это время в миллисекундах!
}

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Используй метод:

void displayInt(int value);	// выводит число от -999 до 9999 (да, со знаком минус)
Ze-pp
Offline
Зарегистрирован: 20.12.2018

asam пишет:

Используй метод:

void displayInt(int value);	// выводит число от -999 до 9999 (да, со знаком минус)

Простите, в каком месте скетча нужно это использовать?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

В том месте где надо вывести значение с "минусом". В вашем случае там, где температура выводится.

Ze-pp
Offline
Зарегистрирован: 20.12.2018

asam пишет:

В том месте где надо вывести значение с "минусом". В вашем случае там, где температура выводится.

Боюсь что с этой библиотекой так не получится.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Ze-pp пишет:

Боюсь что с этой библиотекой так не получится.

А чего бояться-то? Взяли и попробовали! Вам нужно вывести отрицательное число, предложенный метод предназначен в том числе для этого (о чём в комментарии к нему написано!). Нюанс правда есть. У Вас сейчас после цифр выводится что-то обозначающее градусы, displayInt этого значка не нарисует. Но никто не запрещает сделать свой метод, который и то и другое выведет.