Официальный сайт компании Arduino по адресу arduino.cc
Часы DS1307 + MAX7219 7-сегментный индикатор
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 20/02/2018 - 12:32
Ребята, ДОБРОГО всем ДНЯ! Прошу помощи!!! у меня есть -
MAX7219 7-сегментный индикатор;
Часы DS1307;
Датчик Температуры и Влажности DH-22
Есть - скетч для вывода скетча часов в Монитор Порт.
Проблема - не могу понять как вывести данные часов на дисплей!!!
Прошу помочь, заранее спасибо!!!
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include "LedControl.h" #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; LedControl lc1=LedControl(13,12,11,1); // DIN,CLK,CS void setup () { Serial.begin(9600); Wire.begin(); RTC.begin(); lc1.shutdown(0,false); lc1.setIntensity(0,1); lc1.clearDisplay(0); lc1.setDigit(0,6,0,false); lc1.setDigit(0,5,0,false); lc1.setDigit(0,4,0,false); lc1.setDigit(0,2,0,false); lc1.setDigit(0,1,0,false); lc1.setDigit(0,0,0,false); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled RTC.adjust(DateTime(__DATE__, __TIME__)); } } void loop () { DateTime now = RTC.now(); /* Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' ');*/ Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); /* Serial.print(""); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future //DateTime future (now.unixtime() + 7 * 86400L + 30); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); */ Serial.println(); delay(3000); }
Проблема - не могу понять как вывести данные часов на дисплей!!!
Вопрос №1. А просто цифру 2 Вы можете вывести на дисплей? В любую позицию?
Вопрос №2. А значение целой переменной, считая, что оно от 0 до 9, Вы можете вывести на дисплей? В любую позицию?
.
Проблема - не могу понять как вывести данные часов на дисплей!!!
Вопрос №1. А просто цифру 2 Вы можете вывести на дисплей? В любую позицию?
Вопрос №2. А значение целой переменной, считая, что оно от 0 до 9, Вы можете вывести на дисплей? В любую позицию?
по 1 вопросу наверное смогу, а по второму не понимаю тут!
Тогда сделайте скетч в котором нет ни хрена, только вывод на экранчик константых цифирок. Выложите код. Тогда подумаем как переменную вывести.
Тогда сделайте скетч в котором нет ни хрена, только вывод на экранчик константых цифирок. Выложите код. Тогда подумаем как переменную вывести.
Хорошо, к вечеру выложу!!!
Давайте, делайте. а там подскажем, что дальше делать.
Давайте, делайте. а там подскажем, что дальше делать.
Вот сделал!!!
А на остальных, видимо, 0. Но Вы понимаете как на любой сегмент любую цифру вывести, правильно?
Теперь попробуйте завести переменную и высветить её, примерно так
После этого сделайте последний шаг. Вы ведь выводили в монитор порта часы и минуты, так ведь. Ну. а теперь выведите их в правильные знакоместа индикатора также, как мы n выводили.
Для это придётся разбить часы (минуты) на единицы и десятки (выводить же придётся отдельно цифирьку единиц и цифирьку десятков). Знаете как это сделать?
А на остальных, видимо, 0. Но Вы понимаете как на любой сегмент любую цифру вывести, правильно?
Теперь попробуйте завести переменную и высветить её, примерно так
После этого сделайте последний шаг. Вы ведь выводили в монитор порта часы и минуты, так ведь. Ну. а теперь выведите их в правильные знакоместа индикатора также, как мы n выводили.
Для это придётся разбить часы (минуты) на единицы и десятки (выводить же придётся отдельно цифирьку единиц и цифирьку десятков). Знаете как это сделать?
"После этого сделайте последний шаг. Вы ведь выводили в монитор порта часы и минуты, так ведь. Ну. а теперь выведите их в правильные знакоместа индикатора также, как мы n выводили."
Выводить в Setup или Loop надо
Так Вы посмотрите первое сообщение темы. Там же время выводится в мониитор порта. Вот точно также и выводите, только на индикатор (а лучше для начала и в мониитор (как было) и на индикатор - для контроля и отладки).
Так Вы посмотрите первое сооющение темы. Там же время выводится в мониитор порта. Вот точно также и выводите, только на индикатор (а лучше для начала и в мониитор (как было) и на индикатор - для контроля и отладки).
Понял, пробую!!!
Вставьте код как положено, чтобы номера строк были.
извини, не заметил ошибку!!!
Понятно, значит, код из первого сообщения писали не Вы и что там написано Вы не понимаете, так? Хреново.
Из последнего кода убирайте нахрен строки 28-35 (и строку 12 заодно).
После стоки 49 вставляйте.
В позициях 6 и 7 появятся секунды и будут меняться кажду секунду (возможно, они будут задом наперёд, я не знаю где у Вас лево. а где право, если так, то поменяёте в моих строка цифры 6 и 7). Меняться они будут одновременно с выводом в монитор порта.
Дальше по образу и подобию, выводите часы и минуты в те позиции, в какие Вам надо.
Все, класс, супер!!!
Спасибо!!! вопрос еще 1, как точку сделать мигающей?
Все, класс, супер!!!
Спасибо!!! вопрос еще 1, как точку сделать мигающей?
Зажигать и гасить ее, по очереди, с желаемым интервалом. И все.
Я не знаю, что за библиотека "LedControl.h", возможно, там есть что-то готовое на эту тему. Но если нет, то точно также, как в примере блинк без делэй, только зажигать и гасить не светодиод, а точку. Лучше раз в полсекунды, так красивее, чем раз в секунду.
понял, спасибо!
Ребята, есть еще один вопрос...
сделал я свои часы...
подскажите, как мжно переключать часы например через каждые 5 секунд чтобы они показывали то время 5 секунд, то температуру и влажность с датчиком DHT22. датчик сам есть.
Датчик сам есть, но прописывая его, он у меня показывает только 1 число, а в мониторе показывается все в порядке!!!
заранее спасибо!
чустую, без моих таймеров тебе не обойтись...
https://www.youtube.com/watch?v=NmL4b7wAZVg
Ребята, есть еще один вопрос...
сделал я свои часы...
подскажите, как мжно переключать часы например через каждые 5 секунд чтобы они показывали то время 5 секунд, то температуру и влажность с датчиком DHT22. датчик сам есть.
Датчик сам есть, но прописывая его, он у меня показывает только 1 число, а в мониторе показывается все в порядке!!!
А взять и подумать чуть, чуть? Или уже чудесный ЕвгенийП появился, который программы пишет?
Цифирки выводить научились. Теперь пять секунд выводим цифирки времени, пять секунд цифирки давления и т.д. Потом все сначала.
А тебе тяжело подсказать? я всего работаю с Ардухой 3-ий месяц!
Подсказать и написать это две большие разницы, подсказать я уже подсказал. Часы и минуты, обычно двузначное число, температура чаще всего тоже, вот ее старший разряд выводим, а младший куда то потерялся. Ну и дедовы таймеры понадобятся или самому их сочинять.
так я и пишу, что часы заработали! но с термометром не получается!!!
я пишу два числа, а он пишет:
а что дальше делать не пойму!!!!
Нужно перечитать еще раз сообщение #15 и найти различия между двумя строчками (подсказка: в третьем параметре функции)...
Нужно перечитать еще раз сообщение #15 и найти различия между двумя строчками (подсказка: в третьем параметре функции)...
вы имеете символы / и %???
если да, то прописывая их, мне на строке с % он выдает ОШИБКУ!!!
И правильно делает, смотрите какого типа Ваша
event
.temperature
.А тебе тяжело подсказать? я всего работаю с Ардухой 3-ий месяц!
не пробовали упростить задачу? Почему все новички думают, что любая задача в ардуино очень легко и просто решается? для начала напишите программы для каждого датчика отдельно, чтобы они заработали по вашему алгоритму, а не по чьему-то.
И правильно делает, смотрите какого типа Ваша
event
.temperature
.тогда я не понимаю какое надо???
может я ТУПОЙ, не отрицаю...
в 14 строке если пишешь %, то ошибку выдает!!
тогда я не понимаю какое надо???
что делает строка 13? как вы ее понимаете?
вы имеете символы / и %???
если да, то прописывая их, мне на строке с % он выдает ОШИБКУ!!!
Ну, всё понятно. Конечно о том, какую ошибку он выдает, вы не удосужились нам скопировать, полагая, что случай ваш уникален и всем известен... Однако, в честь праздника, я поставил все эти дурацкие библиотеки и откомпилировал скетч.
Проблема в том, что температура и влажность представляют из себя не целое число, а число с плавающей запятой. Т.е. там может быть четыре значащих цифры и запятая. Таким образом вам нужно определиться, что вы делаете - отбрасываете дробную часть или не отбрасываете... если первое, то делаете, например, int(event.temperature) % 10 и int(event.temperature) % 10.
А тебе тяжело подсказать? я всего работаю с Ардухой 3-ий месяц!
не пробовали упростить задачу? Почему все новички думают, что любая задача в ардуино очень легко и просто решается? для начала напишите программы для каждого датчика отдельно, чтобы они заработали по вашему алгоритму, а не по чьему-то.
У меня все эти скетчи есть! просто термометр только ОДНУ цифру пишет!!!
так что не понял, не лезь!
У меня все эти скетчи есть! просто термометр только ОДНУ цифру пишет!!!
так что не понял, не лезь!
чукча не читатель, чукча писатель :)))))))))))))
UPD пост 32
event
.temperature
.У меня все эти скетчи есть! просто термометр только ОДНУ цифру пишет!!!
так что не понял, не лезь!
чукча не читатель, чукча писатель :)))))))))))))
чувствуется что этот ЧУКЧА (Arduino) мне все нервы изматает!!
А вот ошибка!!!
\Только зря Вы так сразу, ТС было бы полезнее самому найти.
Понял. Пойду тогда налью и понаблюдаю за развитием ситуации.
Ну тут же прямо всё и написано! Поправьте тип - делов-то.
мля, не понимаю!
на заре перекроил библиотеку под себя для 1 датчика, и теперь использую только ее, криво и косо, но работает. Много чего удаляю когда пользуюсь...
Чего Вы не понимаете?
В конце концо в последних строчках поста #33 уже просто написано как делать - и понимать ничего не надо. Надо просто написать как там написано. Или Вы не читаете что Вам пишут?
то есть надо прописать в самом начале int прописать ?
то есть надо прописать в самом начале int прописать ?
Преобразование типов данных
Чего Вы не понимаете?
В конце концо в последних строчках поста #33 уже просто написано как делать - и понимать ничего не надо. Надо просто написать как там написано. Или Вы не читаете что Вам пишут?
могу ошибаться, но знак температуры он потеряет при таком преобразовании. т.е будет нормально работать только с плюсом.
гриша, стоп, знак минус мне не нужен!
я вот не могу понять, что мне нужно прописывать к инт???
тут вообще не соображаю...
я вот не могу понять, что мне нужно прописывать к инт???
тут вообще не соображаю...
снова пост 38, нужно поменять Тип вещественного числа с плавающей запятой на Основной тип целого числа со знаком, ну или другой подходящий
я вот не могу понять, что мне нужно прописывать к инт???
тут вообще не соображаю...
снова пост 38, нужно поменять Тип вещественного числа с плавающей запятой на Основной тип целого числа со знаком, ну или другой подходящий
смотри... прописываю int далее просто я не могу понять что дальше прописать? event?
я вот не могу понять, что мне нужно прописывать к инт???
Блин, но Вы бы за это время уже сто раз попробовали. Ну, посмотрите на свой 25 пост! А теперь вместо "
event
.temperature
" тупо напишите так, как написано в посте №33. В одной строке с "/", а в другой с "%"Давно бы уже попробовали! Делов-то, блин!