Вывод чисел в несколько разрядов на семисегментный индикатор
- Войдите на сайт для отправки комментариев
Втр, 15/11/2016 - 21:24
Вопрос следующий: хочу брать значения с датчиков типа DHT11 и DHT22 и выводить их на дисплей. Моя мысль реализции заключается в получении значения типа "+12" или "-8", разбиение их на разряды (соответственно знак температуры, десятки, единицы) и вывод их через два сдвиговых регистра 74hc595n на два семисегментника. Однако, самостоятельно понять как разбить такое число на несколько разрядов не получется. Если знак температуры еще можно задать через простое if (с условием if (x<0)) и выводить или не выводить сигнал на конечный вывод семисегментника, то мысли как разбить десятки и единицы нет.
Если знак температуры еще можно задать через простое if (с условием if (x<0)) и выводить или не выводить сигнал на конечный вывод семисегментника, то мысли как разбить десятки и единицы нет.
С числами-то как раз нет проблем. Если есть целое число А, то количество десятков в нём - это просто А поделённое на 10, а количество единиц - остаток от деления А на 10. Всего-то и делов.
А вот со знаками, как раз наборот, засада. С минусом поблем нет, а вот с плюсом ... как Вы его собрались на семисегментнике показывать?
Плюс - никак. по-умолчанию если число больше нуля к нему можно ничего не писать. В описании проблемы указал, лишь для лучшего указания этого "разряда". За идею с делением - спасибо! Вот только теперь не совсем понятно как извлечь этот самый остаток.
ЗЫ: ответ прочитаю не раньше чем через 12-20 часов, сам буду искать ответ =)
не совсем понятно как извлечь этот самый остаток.
Тьфу, блин!
ostatok = A % 10;
Но если надо и частное и остаток одновременно, то лучше воспользоваться функцией div. Она одним махом посчитает и то, и другое.
ЗЗЫ: если я правильно понял, то должно получится следющее в плане определения десятков и чисел
Нет, конечно. Вы же на семисегментник не число выводе а его код для семисегментника. У него там 8 сегментов (смеь на цифру и один на точку) и ему надо сказать какие сегменты показывать, а какие - нет. Это не число нужно выводить и именно код.
Безусловно. Для чисел есть подготовленная таблица кодов, которые я запишу впоследствие в программу. А тут я привел способ как я буду расчитывать и получать значения переменных после записи значения температуры в переменную "t". Собственно и для минуса будет код включающий только сегмент G на семисегментном индикаторе
STeelGear, если вы пользуетесь библиотекой для DHT22, то она скорее всего выдаёт тип данных float, а с ним не всё так гладко будет..
Сами данные пишутся в переменную вот так:
int t = sens.readTemperature(2);
Поэтому, думаю проблем не будет
Хотя не. Пытаюсь использовать оператор char() для перевода переменной из int в char и что-то делаю не так.
Бог знает, что Вы там делаете. Вот, почитайте, станет понятнее.
Спасибо!