деление показаний температуры для 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
зато ...
начинаю разбираться в программинге.
нарявятся мне такие люди зайдут поцитируют , обольют гуаном и свалят , зачем вапще заходили непонятно ......
нарявятся мне такие люди зайдут поцитируют , обольют гуаном и свалят , зачем вапще заходили непонятно ......
Мне тоже нравятся такие, которые рядом с профессией не стояли, об операции присваивания ничего не знают, функцию от оператора не отличают, зато подворотный слэнг тип "программинг", "кодинг", "прога", "сервак" и т.п. изо всех щелей хлещет.
молодец сходи купи шеколадку и раз не хочеш ни чего дельного скать не заходи сюда, может найдется тот кто подскажет объяснит , а не какашками кидаться будет.
не заходи сюда
С Вашего позволения (или без оного) я сам буду решать куда мне заходить, а куда - нет.
может найдется тот кто подскажет объяснит
Может и найдётся. Даже, наверняка.
Удачи!