Страница 1 из 1

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

Добавлено: 05.04.2019{, 22:01}
Di100
Доброго дня господа!!!
Вопрос от новичка, как к дисплею TM1637, одновременно подключить часы реального времени и датчик температуры ds18b20?
Допустим, 5 сек показывалось время, ну и 5 сек температура.
Подобие скейтча прилагаю!
Заранее благодарен!!!

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

Добавлено: 05.04.2019{, 22:20}
dizzyy
выт для вемос делал ,меняйте контролер, датчик и блок часов на свои
WeMos.flp
(817.97 КБ) 182 скачивания

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

Добавлено: 05.04.2019{, 22:24}
Di100
Огромное Вам Спасибо!!!

Отправлено спустя 7 минут 28 секунд:
Черт))) был уверен, что надо добавить один "волшебный" блок)) у Вас же целая схемища!!
Еще раз благодарю, хоть Ваша схема пока и весьма сложна для меня, слишком мало пока знаний((
Пошол изучать

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

Добавлено: 06.04.2019{, 13:12}
dizzyy
почему сложная? датчик у меня меряет температуру и влажность(поэтому у меня 3 индикации а не 2)
время берет с сервера точного времени(редактировать пояс и есче что то можно через веб) , у вас с часов реального времени
ну и там всякое типа тушение нуля это там тоже у меня есть - не люблю когда показывает 01 час ночи

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

Добавлено: 06.04.2019{, 21:17}
hatul
Если надо именно в FLProg ,можно примерно так:
Clock_Temp.flp
(159.99 КБ) 146 скачиваний
Это получение темп. с часов DS3231. Вместо блока "получение темп.с часов" можешь вставить свой датчик.
А если не принципиально,то вот неплохой скетч:
zclock2.ino
(3.6 КБ) 92 скачивания
Правда надо подправить библиотеку :"Чтобы добавить значек "градус" надо редактировать массив в файле С./Документы / Arduino /libraries / DigitalTube / TM1637.cpp
В строку 23-26 надо или добавить еще один символ,или исправить какой-либо из существующих. Затем в скетче, в строке 127 указать порядковый номер символа."

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

Добавлено: 07.04.2019{, 19:45}
Di100
Друзья - ОГРОМНОЕ спасибо Вам!!!
dizzyy - я благодарен Вам!!, но уровень моих познаний лет на несколько отстает от Ваших! Пример Ваш отличный и нужный, но пойму я его чуть позже!
hatul - Благодарю Вас!!!

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

Добавлено: 16.01.2020{, 21:57}
Notturno
Ребят, всем привет. Подскажите, как можно изменить пользовательский блок.
Использую Wemos D1 Mini c TM1637.
Суть в том, что я хочу, что бы часы чередовались каждые три секунды и выводились на индикатор с температурой, ну хотелось бы еще конечно с влажностью считанные с DHT11.
Схему в Flprog накидал, и столкнулся с такой не большой проблемкой. Я перепробовал разные ПБ что до TM1637, и остановился на одном блоке, который был в примере, почему именно его, потому-что с этим блоком остальной код не тормозит, то-есть остальные функции wemos выполняет без задержек, так же некоторые блоки не хотели выводить, библиотеки подкидывал разные, пробовал ...
Не большой эстетический косяк, нужно убрать обозначение градуса Цельсия, не саму "С" а предположенный "°" так как он отображается как фигня какая-то :) ну или каким то образом заставить его отображать.
Еще хотелось-бы добавить вход для влажности в блок.
Библиотеку использую "Grove_4-Digit_Display"
Файлы прилагаю:
flprog-meteo.png
IMG_20200116_155909.jpg
Дисплей_на_TM1637_(часы_и_t°C_1_(CODE).ubi
(61.86 КБ) 72 скачивания
Отправлено спустя 31 минуту 57 секунд:
Еще хочу спросить, почему периодически вместо данных температуры, загораются "левые" сегменты?
Вместо температуры в 25, что попало .... Не попадает в цикл опроса датчика?
IMG_20200116_212554.jpg
IMG_20200116_212549.jpg

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

Добавлено: 16.01.2020{, 22:33}
dizzyy
Notturno, во втором посте и время с NTP сервера, влажность и температура.. подогнать под себя длительность, если надо изменть часы.. а так все работает

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

Добавлено: 16.01.2020{, 22:41}
Notturno
dizzyy, Я Вашу схему пробовал, не запустилась. Не выводиться на индикатор ничего.
Я полагаю дело в назначении пинов, но я менял на свои выводы. у меня G5,G4. Вашу схему не удается запустить, только что еще попробовал.

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

Добавлено: 17.01.2020{, 23:30}
dizzyy
индикатор другой , у меня 4 точки снизу .. скетч точно рабочий, у детей в комнате работает..
возьмите все блоки что найдете , пропишите на входах стринги и получите цифры на сигментах..тогда вставите в мой проект этот блок

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

Добавлено: 18.01.2020{, 23:06}
Notturno
Этот индикатор валялся у меня, я заказ на али "056 размер, больше и у него есть четыре точки, когда придет попробую...
:smile9:

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

Добавлено: 21.01.2020{, 02:17}
Labu559
Notturno,
Давайте без обид и по-порядку. Где Ваш проект, Вы выложили блок- будем его обсуждать?
Notturno писал(а):
16.01.2020{, 22:29}
почему именно его, потому-что с этим блоком остальной код не тормозит
Как-то не верится - сужу по коду в блоке. Данный блок выполняется в каждом цикле ф-и Loop(), т.е. в каждом цикле он обрабатывает данные со входов, и вгоняет их по медленной шине I2C в ТМ1637, даже если эти данные не менялись. Кроме того, уважаемый неизвестный автор этого блока выводит мигание точек и данные со входа Hours даже в режиме отображения температуры и потом "затирает" их данными со входа Mins (где уже температура). Так-же применяет тип данных integer(2 байта), для записи данных времени (которые байтовые) и яркости (которая имеет всего 7-мь градаций).
Теперь из рисунка проекта: а что происходит с
минусовой температуройПоказать
Int_cut_Byte.png
как-то так это выглядит в памяти МК
знак которой находится в MSB старшего байта float и запишется в следующую ячейку(адресное пространство) памяти из-за переполнения переменной integer испортив какие-то данные в SRAM, а младшие 2байта будут инвертированы? Будем надеяться , что компилятор исправит такие косяки? Так, что его (блока) преимущество не использования, как у других блоков на форуме, класса данных String выглядит IMHO слишком сомнительно. Некоторые мелкие ошибки блока Дисплей на TM1637 (часы и t°C_2, впрочем, можно немного "подшаманить", если его работа Вас удовлетворяет

Код: Выделить всё

//TimeDisp[0] = Hours / 10; // переносим ниже, выполняется если выключена инд. температуры
//TimeDisp[1] = Hours % 10; // переносим ниже, выполняется если выключена инд. температуры
//if ( Sec ) tm1637.point(HIGH); // зачем сравнивать, всё равно перезаписываем?
// else tm1637.point(LOW);  // эти два безполезных условия(сравнения) заменяем tm1637.point( Sec ); там где это должно выполняться
if (temp) {
	// TimeDisp[0] = Mins / 10; // Данные со входа минут десятки (уже температура) выводим в крайний левый разряд
	// TimeDisp[1] = Mins % 10; // Данные со входа минут единицы (уже температура) выводим в левый разряд
	TimeDisp[2] = Mins / 100; // Почему/100, сюда нужно записать символ градуса -константа 0х63
	TimeDisp[3] = Mins % 100; //Почему%100, сюда нужно записать символ С (Celsium) -константа 0х39
}else{
	TimeDisp[0] = Hours / 10;
	TimeDisp[1] = Hours % 10;
	TimeDisp[2] = Mins / 10;
	TimeDisp[3] = Mins % 10;
	tm1637.point( Sec );
	}
tm1637.display(TimeDisp);
tm1637.set(Brightness);
перестановкой строк кода.
Notturno писал(а):
16.01.2020{, 22:29}
так как он отображается как фигня какая-то
Я бы сказал, что он отображает ту фигню (ссылка), которая у Вас получилась после записи данных типа Float (с датчика DHT) в переменную типа integer. Вы же не станете наливать в 100-граммовый стакан пол-литра (просто как пример), но пишете 32-х битовый Float в 16-ти битовый Integer. Странно, что это позволяет сделать FLProg.
Или же, вторая причина:
блок "Дисплей на TM1637 (часы и t°C_1", более подходящий для Вашей задачи, но "с этими же яйцами в профиль", с добавлением доп.символов (модификацией библиотеки) которую, ес-но, нужно установить, предварительно удалив оригинальную с ГитХаба-

Код: Выделить всё

TimeDisp[0] = Hours / 10;
TimeDisp[1] = Hours % 10;
if ( Sec ) tm1637.point(HIGH);
 else tm1637.point(LOW); 
tm1637.set(Brightness);
if (temp)
{
TimeDisp[2] = 18; // В авторской библиотеке Grove_4Digital_Display в массиве static int8_t tube_tab[] 
/*только 16-ть элементов , что приводит к выводу чёрт знает чего
 * это-же можно сделать без модернизации оригинальной библиотеки через using namespace char2segments
 * там (namespace { uint8_t char2segments(char c))есть искомый символ:  case '*' : return 0x63; // ° 
 * см. файл TM1637.cpp
  */
TimeDisp[3] = 12;
}
else
{
TimeDisp[2] = Mins / 10;
TimeDisp[3] = Mins % 10;
}
tm1637.display(TimeDisp);
Боюсь что отличить её от оригинальной по внешним признакам будет проблематично. :)
Что имел, то сказал, извините непрограммиста если что. Удачи!