Два TM1637 в одном скетче.
- Войдите на сайт для отправки комментариев
Приветствую. Прошу помочь со скетчем. Саму разобраться не получается. Если новичок=первоклассник, то я ближе к детсаду в С++. С ардуиной общался только через программы визуального программирования. То, что понадобилось сейчас, это термометр с "-" , часы и вывод на два индикатора. В этих прогах полностью реализовать не удалось. По этому взял два кода сделанных в проге визуального программирования и соединил их в ардуино иде. Один код- термометр на DS18B20, TM1637 и Nano. Второй код- часы на DS3231, TM1637, две сенсорных кнопки и Nano. Некоторые строки добавил, другие поправил и вроде заработало. Часы работают хорошо, но обнаружился косяк, индикатор на который выводится температура меняет индикацию. Показывает температуру примерно 0,3-0,5 сек., потом меняет индикацию на нули во всех знакоместах на тоже время и так по кругу.
Знатоков С+ прошу, подскажите чего поправить в коде, что бы нули не выводились на индикатор с температурой.
Ты издеваешься ?
В смысле?
:-)
И после этого if (_D0_9C_D0_B5_D0_BD_D1_8E == 2) мне будут писать, что я радистка "КЭТ".
Код прогнали через исправитель от кодирования)))
За Кет ни чего сказать не могу.
А с этим if (_D0_9C_D0_B5_D0_BD_D1_8E == 2) чего делать?
Выбросить этот кошмар и написать нормально.
За Кет ни чего сказать не могу.
А с этим if (_D0_9C_D0_B5_D0_BD_D1_8E == 2) чего делать?
Пойти на форум "визуального пронраммирования" и спрашивать там, здесь в этом говне никто копаться не будет
За Кет ни чего сказать не могу.
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/delay-millis-k...
сообщение №22
А вам наверное код надо вставить согласно правилам этого форума. Ну и стиль его писания совсем не ясен мне, может здешние спецы помогут.
Как отредактировать первое сообщение не нашел.
Блин, ну сказали же - не издевайся! Или заменяй на человеческие имена или никто с этим ковыряться не будет
И после этого if (_D0_9C_D0_B5_D0_BD_D1_8E == 2) мне будут писать, что я радистка "КЭТ".
Так это ж не он писал - это генератор кода из его картинок/кубиков. Вот пример, чуть получше:
Так это ж не он писал - это генератор кода из его картинок/кубиков. Вот пример, чуть получше:
Это понятно. Но если человек хочет помощи - пусть немного нарпряжется и приведет код в удобочитаемый вид. Каких-то особых познаний для этого не требуется. Просто потратить немного времени.
Выжпрограммисты. Что там сложного - дел на пять минут. Вот ТС всегда помогает тем, кто к нему с просьбой приходит. Правда, в 70 лет уже сложно учится.
Из разряда: Тыж ремонтник - почини адронный коллайдер))))
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
ну CTRL+F можно было сделать...
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
Ты на форуме 7 лет. Хрен с ним, что не понимаешь как «запрограммировать», но что тролить тебя будет как ты мог не знать?!)))
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
Ты на форуме 7 лет. Хрен с ним, что не понимаешь как «запрограммировать», но что тролить тебя будет как ты мог не знать?!)))
Администраторы форума - добавьте кнопку «темы пользователя», так на много проще будет.
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
Ты на форуме 7 лет. Хрен с ним, что не понимаешь как «запрограммировать», но что тролить тебя будет как ты мог не знать?!)))
Администраторы форума - добавьте кнопку «темы пользователя», так на много проще будет.
Знал, они ныньче в каждой бочке затычки. Чхать на них.
Я тебе подскажу, что форумчане хотят - есть такая функция «автозамена». Так вот замени свои «36443 и тд» на понятное тебе слова (если это переменная), а если за столько лет не понял этого - только на форуме с подобными (уже привычными им) кракозябрами обращаться нужно.
ЗЫ: Ты же «хлеб» называешь не «533789643468954689», так?)
Если бы я в С++ разбирался и знал, что там закодировано, я б наверное за помощью не обращался.
По отдельности оба кода работают корректно. Я их соединил в С++ и один индикатор стал промаргивать нулями.
ну CTRL+F можно было сделать...
Вопрос по коду. Это исправленный код? Если да, то с ним тоже самое происходит.
Я тебе подскажу, что форумчане хотят - есть такая функция «автозамена». Так вот замени свои «36443 и тд» на понятное тебе слова (если это переменная), а если за столько лет не понял этого - только на форуме с подобными (уже привычными им) кракозябрами обращаться нужно.
ЗЫ: Ты же «хлеб» называешь не «533789643468954689», так?)
Ти по того?
ну CTRL+F можно было сделать...
а смысл?
Код после автогенерации нормальным от этого не станет
Доброго времени. Да простит меня ТС - не стал создавать новую тему, т.к. тоже имеется(небольшая) проблема с выводом на 2 дисплея ТМ1637. На втором дисплее, при температуре меньше -9,9 (т.е -10 и ниже) не выводится первая единица у показаний влажности. Такое ощущение, что не срабатывает условие в 40 строке. Но по радиоканалу передается все как нужно, hHum = 100. Так, что проблема именно здесь. Хоть и не великая, но все же хочу понять из-за чего.
На пальцах:
******
* -9,9*
******
*100%* (в данный момент влажность датчик показывает больше 100%, как не знаю)
******
******
*-10.0*
******
* 00%*
******
как то так отображает.
Всю голову уже сломал, не могу понять в чем дело.
mir0tv0rec, показывай весь код
библиотеку другую возьмите, и не надо будет по цифиркам вывод разбивать
библиотеку другую возьмите, и не надо будет по цифиркам вывод разбивать
Для удобства работы можно форкнуть и далее сделать новый branch )))
Для удобства работы можно форкнуть и далее сделать новый branch )))
похоже кто-то осваиваем гитхаб :)))
Вот весь код:
DetSimen, в принципе мне твоя библиотека, думаю, подходит. Просто изначально выводил градусы, проценты. По этому вывод так и сделан.
не знаю, явных ошибок не вижу.
Я бы начал с того, чтоб упростил код. Вместо написания кучи методов вывода на дисплей отдельно для температуры. отдельно для влажности более 99, менее 99, менее 10 и тд - все это можно записать единым образом в виде деления на разряды, как это сделано например для напряжения. Код сократится строк на сто и разбираться в нем станет легче.
Зачем, например, вы задаете вывод числа "100" явно через сегменты?
Это же неправильно, поменяете сегменты - придется полкода переписывать. У вас же есть метод через цифры, пользуйтесь им, это же нагляднее:
У меня так и было до этого, но когда увидел, что пропала единица, указал явно посегментно вывод, но это не помогло. Причем, чтобы я там не указывал, как только температура опускается ниже -10 градусов, такое чувство, что условие hHum > 100 перестает выполняться. Ладно попробую через серийник отладить, вручную проимулирую отрицательную температуру, т.к. датчик с улицы снять затруднительно.
Вывел значения в порт:
Почему-то при температуре меньше -9,9 в функции WriteToDisplay() влажность выше 99 обнуляется.
а вот тут уже все, как и должно быть:
похоже на порчу значения в памяти из-за выхода за границу массива.
mir0tv0rec - не имейте плохой привычки выкладывать куски кода.
Давайте вот этот код, с отладочными выводами в Сериал - но целиком.
Полный код выше, здесь выложил только изменения, для понимания, где беру данные для вывода в .serial.
mir0tv0rec - поясните, откуда в этом отладочном скетче берется величина realHum. Насколько я вижу, датчик вы закомментировали и в setup() задаете realHum =0 .
А дальше откуда она вдруг станет более 100?
Строка 411.
Еще вопросы
mir0tv0rec - какая ардуина у вас?
И еще - попробуйте самой первой строчкой в процедуру WriteToDisplay() вставить вот это
Ок, Pro Mini 8МНz.
Если считываю влажность в функции, то все нормально.
при компиляции что пишет ардуино иде на тему размера кода и памяти?
запостите прямо сюда вывод компилятора в виде текста
Ок, Pro Mini 8МНz
контроллер какой? промини бывают с атмега328, а бывают атмега168.
Посмотрите, что написано на чипе или выложите сюда фото платы в хоршем качестве
После этих сточек она равна 0, если больше 99. Почему такое?
на фото видно плохо, но вроде 328-ая
Но все равно, после того как вы ответили, что при переносе обработки влажности внутрь процедуры дисплея ошибка уходит - у меня практически уверенность, что дело в памяти.
=== удалил неверное предположение ===
ну вот. я похоже угадал.
Почему - попытался обьяснить выше. Возможно более опытные поправят
Конкретно после этой строки:
Конкретно после этой строки:
величину strMsg.length() выведите в Сериал, что покажет?
В ней и была проблема, не хватило длины массива, т.к. я раньше выводил влажность до 99. Длина была 20, нужно было 21, т.к "/0" уже не помещался.
ага, см сообщение #33:
похоже на порчу значения в памяти из-за выхода за границу массива.
только не сумел отыскать, где именно.
Поздравляю с победой