деление показаний температуры для max7219
- Войдите на сайт для отправки комментариев
здравствуйте.
сильно не пинайте ток начинаю разбираться в программинге.
подскажите как загнать показания температуры на 7 сегментный индикатор max7219
задумка такая на первые 4 разряда выводится время (часы минуты) на 5,6 температуры с первого ds18b20 , на 7,8 температура со второго ds18b20
нашол на просторах проект попытался допилить под свои цели результатом вышло что , время выводит нормально температуру не выводит вовсе . как я понимаю это изза того что показания температуры не целое число и обрабатывается неправильно . попытался использовать float не проходит проверку изза невозможности деления . как преобразовать float в int не понял от слова совсем :(
при выводе все этого на lcd проблем не возникает все выводится как и задуманно.
ещё хотелось бы помощи с функцией if задача зажигать светодиод с любой ноги когда показания термометра уходят в отрицательное значение ( изза нехватки разрядов на max)
#include "LedControl.h"
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Подключение дисплея
LedControl lc=LedControl(12,11,10,1);
// LedControl(dataPin, clkPin, csPin, numDevices=1);
void setup() {
lc.shutdown(0,false); // Иниц дисплей
lc.setIntensity(0,0); // яркость дисплея
lc.clearDisplay(0); // очистить дисплей
Wire.begin();
RTC.begin();
sensors.begin();
// Установка текущего времени PC в модуль RTC
// после установки закоментировать и зашить скетч в контроллер
// RTC.adjust(DateTime(__DATE__, __TIME__));
Serial.begin(9600);
// Serial.println(__DATE__);
// Serial.println(__TIME__);
DateTime now = RTC.now();
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.print(now.second());
Serial.println();
}
void clock_hours(int ch) {
// Разобьем число на 2 разряда
int ch1=ch/10; // Первая цифра числа
int ch2=ch%10; // Вторая цифра числа
lc.setDigit(0,7,ch1,false);
lc.setDigit(0,6,ch2,false);
}
void clock_minutes(int cm) {
int cm1=cm/10; // Первая цифра числа
int cm2=cm%10; // Вторая цифра числа
lc.setDigit(0,5,cm1,false);
lc.setDigit(0,4,cm2,false);
}
void temp_t1(int tone) {
int tone1=tone/10; // Первая цифра числа
int tone2=tone%10; // Вторая цифра числа
lc.setDigit(0,3,tone1,false);
lc.setDigit(0,2,tone2,false);
}
void temp_t2(int ttwo) {
int ttwo1=ttwo/10; // Первая цифра числа
int ttwo2=ttwo%10; // Вторая цифра числа
lc.setDigit(0,1,ttwo1,false);
lc.setDigit(0,0,ttwo2,false);
}
void loop() {
sensors.requestTemperatures();// запрос к датчику температуры
DateTime now = RTC.now();
int THour=now.hour();
int TMinutes=now.minute();
int T1=sensors.getTempCByIndex(0);
int T2=sensors.getTempCByIndex(1);
clock_hours(THour);
clock_minutes(TMinutes);
temp_t1(T1);
temp_t2(T2);
}
Мда ...
как преобразовать float в int не понял от слова совсем :(
ещё хотелось бы помощи с функцией if
зато ...
начинаю разбираться в программинге.
нарявятся мне такие люди зайдут поцитируют , обольют гуаном и свалят , зачем вапще заходили непонятно ......
нарявятся мне такие люди зайдут поцитируют , обольют гуаном и свалят , зачем вапще заходили непонятно ......
Мне тоже нравятся такие, которые рядом с профессией не стояли, об операции присваивания ничего не знают, функцию от оператора не отличают, зато подворотный слэнг тип "программинг", "кодинг", "прога", "сервак" и т.п. изо всех щелей хлещет.
молодец сходи купи шеколадку и раз не хочеш ни чего дельного скать не заходи сюда, может найдется тот кто подскажет объяснит , а не какашками кидаться будет.
не заходи сюда
С Вашего позволения (или без оного) я сам буду решать куда мне заходить, а куда - нет.
может найдется тот кто подскажет объяснит
Может и найдётся. Даже, наверняка.
Удачи!