Перейти к содержимому

Тм1637 как проверить работоспособность

  • автор:

Подключаем к Arduino дисплей TM1637

Всем привет.
Сегодня для тестирования, подключаем к Arduino Nano, четырех значный, 7 х 4 сегментный, I2C дисплей TM1637.

Еще несколько лет назад подключить такой дисплей было не так просто и приходилось использовать все выводы платы Ардуино. Но сейчас благодаря микросхеме TM1637, преобразующей данные с шины I2C, в параллельные сигналы, эти дисплеи стало очень просто подключать к контроллерам. Так как для подключения этого дисплея нужно всего 4 провода, мама-мама или если использовать макетную плату, то 4 провода папа-папа. Из них 2 повода это питание +5 В, GND и оставшиеся 2 провода это шина I2C.
Вкратце расскажу про характеристики дисплея:
Микросхема драйвера дисплея TM1637
Логические уровни толерантные как к уровням напряжения 5 В и 3.3 В.
Четыре семи сегментные цифры плюс разделительные точки.
Сам дисплей с общим анодом.
Яркость дисплея можно регулировать и имеет 3 уровня.
Цвета свечения сегментов бывают разные красный, синий, желтый, белый и зеленый. Но самый популярный цвет красный. Я бы для себя предпочел бы белый, но как мне кажется белый при ярком дневном освещении будет плохо читаем. Наверно с этим и связана популярность красного.

И так, перейдем к подключению сегментного экрана к Arduino nano. Подключение занимает всего несколько секунд.

Схема подключения

Принципиальная схема

Для того что бы на экране индикатора появилась какая либо информация, нужно скачать и установить библиотеку TM1637, потом запустить Arduino IDE и выбрать “Файлы – примеры – TM1637” и после чего нажать кнопочку “Загрузка в контроллер”, кнопку обозначил на изображении

Если все прошло успешно , то Ваш дисплей начнет демонстрировать свои возможности.
В выше приведенной библиотеке есть много разных эффектов, такие как бегущая строка, скроллинг, вращение, управление яркостью и пр.

Что бы создать и загрузить в дисплей свой символ, для его расчета нужно воспользоваться инструкций на изображении ниже. Если в двух словах, то значение каждого включенного сегмента нужно суммировать

Например нам нужно на экране получить цифру 4. Для этого нужно суммировать следующие значения 2 + 4 + 32 + 64 = 102. Переводим в шестнадцатеричную систему исчисления и получаем 0x66.

Ну вот как бы и все, что я хотел Вам рассказать про этот замечательный I2C экранчик. Надеюсь ничего не упустил. Если будут вопросы. Не стесняйтесь задавайте. Я отвечаю всегда, но может не всегда быстро как многим хотелось бы.

Урок 23. Подключение сегментного дисплея TM1637 к Arduino.

.Урок 23. Подключение сегментного дисплея TM1637 к Arduino.

Сегодня в уроке подключим семисегментный индикатор TM1637 к Arduino. Установим библиотеку TM1637.h и научимся выводить на дисплей цифры и некоторые символы.

Как устроен и из чего состоит модуль TM1637.

Характеристики Индикатора на TM1637:
• Напряжение питание: 5,5В
• Потребляемый ток 0.2 — 80мА (в зависимости от горящих сегментов)
• Градаций яркости индикаторов — 8
• Размеры платы: 42×24мм
• Двух проводной последовательный интерфейс (CLK, DIO).

Фото модуля от магазина RobotDyn фронтальный вид.

Фото модуля от магазина RobotDyn, фронтальный вид

Фото модуля от магазина RobotDyn вид с тыльной стороны.

Фото модуля от магазина RobotDyn вид с тыльной стороны.

Этот модуль собран на драйвере TM1637.
• Есть модули красного, синего, зелёного, белого цвета.
• Размеры 0,36” и 0,56”

В уроке будем использовать модуль TM1637 0,56”, зеленого цвета.

Возможности модуля TM1637:
• Зажигать сразу все знаки или по одному сегменту или символу,
• Выводить цифры от 0 до 9 и некоторые буквы. Смотри ниже.
• Цифры могут выводиться как с нулями слева, так и без них,
• 8 градаций изменения яркости.
• Вывод символа в определённую позицию (ячейку).

Отличие модуля индикатора на TM1637 от других – это его компактность, он не дорогой, и управление всего по двум проводам.

Отличие модуля индикатора на TM1637 от других – это его компактность, он не дорогой, и управление всего по двум проводам.

Для урока понадодиться:

  • ARDUINO NANO. Купить можно на AliExpress или в России.
  • Семисегментный индикатор TM1637. Купить можно на AliExpress или в России.
  • Провод DuPont. Купить можно на AliExpress или в России.
  • Плата макетная беспаечная 55х82х8.5 мм. Купить можно на AliExpress или в России.

Подключение дисплея TM1637 к Arduino

Подключить дисплей можно к любым цифровым пинам Ардуино. В нашем случае будем подключать к Arduino NANO по схеме.

Подключение дисплея TM1637 к Arduino

Arduino Nano [PIN 5V] — TM1637 Module[PIN 5V]

Arduino Nano [PIN GND] — TM1637 Module[PIN GND]

Arduino Nano [PIN 2] — TM1637 Module[PIN DIO]

Arduino Nano [PIN 3] — TM1637 Module[PIN CLK]

Подключение дисплея TM1637 к Arduino UNO

Установка и настройка библиотеки TM1637.h.

Установить библиотеку TM1637.h можно из менеджера библиотек. Для этого откроем Arduino IDE, перейдем в раздел Скетч-> Подключить библиотеку -> Управление библиотеками.

Установить библиотеку TM1637.h

Затем в строке поиска наберем TM1637. И установим библиотеку Grove 4-Digit Display.

 Затем в строке поиска наберем TM1637. И установим библиотеку Grove 4-Digit Display.

Вы также можете скачать библиотеку TM1637 внизу урока, в разделе «материалы для скачивания».

Настройка библиотеки TM1637 для вывода дополнительных символов.

Библиотека позволяет вывести цифры и некоторые символы на дисплей.

Библиотека позволяет вывести цифры и некоторые символы на дисплей.

Для реализации простых проектов, таких как часы, индикаторы и счетчики, этого набора символов достаточно. Я реализовывал часы с выводом температуры и влажности: Arduino часы. Видео 2. Подключаем к Arduino TM1637 и датчик DHT11.

Для отображения температуры использовал символ «С» номер для вывода на индикатор 12и для отображения влажности использовал символ «F» номер для вывода на дисплей 15.

Но для некоторых проектов на Arduino не достаточно

Но для некоторых проектов на Arduino не достаточно данного набора символов. Расширить его достаточно легко, для этого в файле TM1637.cpp библиотеки находим массив TubeTab[] и добавляем нужные коды символов.

TM1637.cpp библиотеки

Список добавленных символов в файле TM1637.cpp, библиотеки TM1637.

Список добавленных символов в файле TM1637.cpp, библиотеки TM1637.

После чего данные символы можно использовать в своих проектах.

После чего данные символы можно использовать в своих проектах.

После чего данные символы можно использовать в своих проектах.

Если захочется закодировать свой символ, то можно использовать следующую таблицу:

После кодирования сегментов, установив нужные биты в байте,

После кодирования сегментов, установив нужные биты в байте, для сокращения записи можно перевести байт из двоичного в шестнадцатиричный формат, как — b00011110 -> 0x1E.

Пример кода для вывода информации на семисегментный индикатор с драйвером TM1637.

Пример 1. Вывод времени с мигающим двоеточием.

Пример 1. Вывод времени с мигающим двоеточием.

В данном примере выведем 4 цифры на индикатор TM1637, и научимся мигать двоеточием каждую секунду. Данный пример поможет вывести любую цифровую информацию: время, счётчики, показания с датчиков.

В данном примере выведем 4 цифры на индикатор TM1637,

Пример 2. Вывод слов на модуль TM1637.

Пример 2. Вывод слов на модуль TM1637.

Дополнительные символы добавили в библиотеку, сейчас осталось научиться их выводить. Создадим массивы необходимых слов, после чего по очереди выведем их на дисплей. Данные слова можно использовать при выводе статуса работы устройств. Это пример слов. Вы можете составлять свои слова в соответствии с вашей задачей.

Дополнительные символы добавили в библиотеку, сейчас осталось научиться их выводить.

Пример 3. Выводданных с датчиком с символами.

Пример 3. Выводданных с датчиком с символами.

Мы научились выводить цифры и слова на дисплей. Как же сделать динамическое изменение значений на дисплее. При этом добавлять символы для индикации различных данных.

Тут поможет нам посимвольный вывод данных на дисплей. Например, запись tm1637.display(0, 5) выводит первый символ на дисплей 5. Аналогично выводятся остальные 3 символа.

Тут поможет нам посимвольный вывод данных на дисплей. Например, запись tm1637.display(0, 5)

Для разделения числа на десятки и единицы, для нахождения единиц нужно найти остаток от деления на 10, и для получения десяток нужно число делить на 10.

Для разделения числа на десятки и единицы

И после числового значения выведем символ, например, для температуры символ «С».

И после числового значения выведем символ, например, для температуры символ «С».

Пример применим при выводе даты, времени и показаний с датчиков.

Появились вопросы или предложения не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке

Понравилась статья? Поделитесь ею с друзьями:

Светодиодный индикатор на базе ТМ1637

Почитал китайское описание с английского перевода… это что-то с чем-то… худшего описания ещё не встречал… и вот протанцевав с бубном почти весь день всё же нашёл проблемную часть у данной микросхемы… в общим она настолько тормознутая, что стандартные тайминги пауз как у шины I2C не подходят… методом проб и ошибок выявил уверенный рабочий вариант, оказалось необходимы паузы в пределах 100 мкс при родных резисторах (10 кОм) на шине… заменив резисторы на номинал 4,7 кОм удалось значительно снизить время пауз (до 40 мкс)…

В архиве исходник на АВ (Algorithm Builder)… МК тактируется на заводских установках (1,2 МГц)… алгоритм написан в виде часов… естественно о точности отсчёта времени не идёт и речи, ведь это просто демонстрационный вариант работы с индикатором…

Test TM1637 tiny13.zip (18.13 KiB) Скачиваний: 93
TM1637.hex (1.72 KiB) Скачиваний: 52
2.png (14.71 KiB) Скачиваний: 93

Хоть управление индикатором и затянуто в сравнении со стандартным I2C, но всё же возможность управлять светодиодным индикатором по двум проводам привлекает. К тому же есть возможность управлять ещё и яркостью свечения… данная микросхема поддерживает до шести разрядов… у китайцев нашёл и шестиразрядные дисплеи – заказал для попробовать.

  • musor
  • Сообщений: 39199
  • Зарегистрирован: Сб сен 13, 2014 16:27:32
  • Откуда: СпиртоГонск созвездия Омега
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 12:25:32

тикрухи ТМ16хх Titan Micro Electronics и их аналоги в других брендах являются драйверами матриц +некотрые сканеры клавы.
очень удобны для организации выносных табло и пултоф сказать что они медленые это като. заявлено до 450к по шине. хотя поболшому щету болшая скорость обмена там не особо и нужна. для вывода LED вполне комфортнво для ввода ваше не критично все равно глас замедления не заметит.

  • Starichok51
  • Сообщений: 17925
  • Зарегистрирован: Сб авг 14, 2010 15:05:51
  • Откуда: г. Озерск, Челябинская обл.

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 12:36:34

дело не в сопротивлении резисторов подтяжки (10 кОм), а дело в конденсаторах (100 пФ) на входах, после резисторов.
это фильтр от помех, и он имеет постоянную времени 1 мкс. поэтому достаточно 3 мкс для установление уровня, и теоретически период следования импульсов может быть 6 мкс.
просто нужно в некоторых местах вставить одну-две пустых операции nop.
и никаких специальных пауз 40 мкс, и тем более 100 мкс совсем не нужно.
у меня есть 2 таких модуля. в одном я удалил оба этих конденсатора, и он работает идеально со стандартными временами из даташита.

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 12:41:44

заявлено до 450к по шине.

Не скажу за все экземпляры, но тот который стоит на моём индикаторе работает с таймингами выше указанными… она даже не может работать на 100 кГц_х не говоря уже о 450 кГц.

Придут другие индикаторы, проверю их на быстродействие, но этот пока работает так как работает… работала бы она на стандартной частоте I2C не было бы танцев с бубном.

  • veso74
  • Сообщений: 1159
  • Зарегистрирован: Сб май 05, 2012 20:24:52
  • Откуда: KN34PC, Болгария
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 12:49:00

Не вижу код, который прикрепили, но давно использую ТМ1637. К Arduino и к PIC. Никаких проблем, с задержками и т.н. нет, устройства продолжают работать, некоторые круглосуточно. Проверьте шины Attiny (тайминги, желательно с логическим анализатором). Продолжаю иметь проблемы с этим с Attiny13A. С некоторыми МК от поставщиков «на востоке» даже дополнительные проблемы. Также проверьте калибровочный коэффициент, при необходимости пишите в OSCCAL.

Последний раз редактировалось veso74 Чт янв 26, 2023 12:57:35, всего редактировалось 1 раз.

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 12:56:11

и он имеет постоянную времени 1 мкс. поэтому достаточно 3 мкс для установление уровня, и теоретически период следования импульсов может быть 6 мкс.

Теория это теория, а на практике с резисторами 10 кОм ни о каких 6 мкс не может быть и речи… не отвечает микросхема подтверждением (ACK) о принятом байте хоть тресни (по крайней мере мой так точно)… пока не затянешь уровни… без кондёров не пробовал… я о стандартном варианте для индикатора написал как есть… что там при других вариантах схем не знаю.

  • Starichok51
  • Сообщений: 17925
  • Зарегистрирован: Сб авг 14, 2010 15:05:51
  • Откуда: г. Озерск, Челябинская обл.

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 13:06:38

вот мой код (подпрограммы) для этой микросхемы:
Код: ;— —
start:
sbi ddr_TM1637, pin_data
nop
nop
cbi port_TM1637, pin_clk
ret

;— —
stop:
sbi port_TM1637, pin_clk
nop
nop
cbi ddr_TM1637, pin_data
ret

;— —
write_byte:
ldi count_bits, 8

cycle_write_byte:
cbi port_TM1637, pin_clk
lsr R26
brcc set_0
cbi ddr_TM1637, pin_data
rjmp yes_1
set_0:
sbi ddr_TM1637, pin_data
nop
yes_1:
nop
nop
sbi port_TM1637, pin_clk
dec count_bits
brne cycle_write_byte

cbi port_TM1637, pin_clk
nop
nop
cbi ddr_TM1637, pin_data
sbi port_TM1637, pin_clk
nop
nop
cbi port_TM1637, pin_clk
sbi ddr_TM1637, pin_data
ret

у меня pin_clk — порт работает выходом, а pin_data как в 1-wire.
этот код работает даже без удаления фильтрующих конденсаторов на входах микры.
как можешь видеть, никаких специальных длинных пауз у меня нет.
можешь проверить ан своем билдере.

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 13:06:59

Не вижу код, который прикрепили

Если у Вас не установлен Algorithm Builder то вы код и не увидите…

  • musor
  • Сообщений: 39199
  • Зарегистрирован: Сб сен 13, 2014 16:27:32
  • Откуда: СпиртоГонск созвездия Омега
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 13:12:53

к сожалени некондиция последне время на Алехе стала обычным делом
видимо за время свирепства в Поднебесной Ковида все запасы нормалных чипоф выбрали ии продали по предзаказам и осталось толка выбракофка и некондиция -их проверяют на частичную работоспособность и пихают в поделки и продажу.
ну а особо наглые проды -1днефки вполне могут и откровеным браком(совсем нерабочим) барыжить особено учитывая что щас болшинстве случаеф претензии из РФ или не принимают или решают в ползу прода
VNS , кстати да удали те капы(хотяб для пробы) -хто знает шо туда впаял китаюза может по 2.2н кстатти по даташиту там емкости на землю на шине быть не должно. это китайское ноу хау непонятно зачем оно может быть и надо если шлейф метр и болеечтоб не ловит помехи по эфиру внутри корпуса где проводки 50мм нах не здадось

  • veso74
  • Сообщений: 1159
  • Зарегистрирован: Сб май 05, 2012 20:24:52
  • Откуда: KN34PC, Болгария
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 14:18:41

Даже не заметил, что в информационных шинах дисплея на ТМ1637 стоят конденсаторы (100 pF). Спасибо.

А с китайским ATtini13A, который на раб. стол (надпись Tiny13A) по другой проекте обнаружил, что выходы не имеют нагрузочной способности (на 5V). При низкоомной нагрузке программа просто «сходит с ума»! На 3V проблем меньше (или вообще нет). (Из-за этих конденсаторов) может ли что-то подобное происходить с вашим МК? Есть МК-оригинал для пробы?

. никаких специальных длинных пауз у меня нет.

Starichok51 , да, у меня тоже нет дополнительного паузы. МК на 16 MHz (и на 25 MHz есть) -> CLK: LOW, DATA: LOW . DATA: HIGH, CLK: HIGH и tm1637 в start. (не рассчитал, сколько времени для изменение состояние пина).

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 16:06:03

можешь проверить ан своем билдере.

Дело не в коде, а в кондеях.

Убрал конденсаторы… померил их ёмкость… оказалось стояли не 100 пФ как в даташите, а 0,01 мкФ… ну и конечно сразу всё заработало на стандартных задержках… Всем спасибо за настойчивость.

Как выглядели уровни при 6 мкс с кондеями и резисторы 4,7 кОм… не дотягивали и до одного вольта.

И как стало убрав кондеи и вернул резисторы 10 кОм…

Тайминги поменял. исходник АВ.

Test TM1637 tiny13.zip (17.8 KiB) Скачиваний: 63
Последний раз редактировалось VNS Чт янв 26, 2023 17:03:58, всего редактировалось 1 раз.

  • veso74
  • Сообщений: 1159
  • Зарегистрирован: Сб май 05, 2012 20:24:52
  • Откуда: KN34PC, Болгария
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 16:47:30

Спасибо, что поделились результатом .
Вероятно скоро куплю экран/и с десятичной точкой. Выглядят красиво, с малым потреблением тока, простое управление, невысокая цена. Будем иметь вариант в виду для возможные причины неработоспособности дисплея. Доверяю китайским товарам, но вероятно что-то работает, что-то нет.

  • Starichok51
  • Сообщений: 17925
  • Зарегистрирован: Сб авг 14, 2010 15:05:51
  • Откуда: г. Озерск, Челябинская обл.

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 17:13:46

я тоже хотел бы приобрести с о всеми точками, но модули с такими индикаторами почему-то примерно в 3 раза дороже, чем с часовым индикатором.
я купил пару штук с двоеточием, у меня есть индикаторы с точками и я пока в одном модуле перепаял индикатор на индикатор с точками.

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 17:19:03

Ещё такой заказал…
2.png (226.72 KiB) Скачиваний: 83

Буду посмотреть как такой будет работать…

Добавлено after 4 minutes:

я тоже хотел бы приобрести с о всеми точками, но модули с такими индикаторами почему-то примерно в 3 раза дороже, чем с часовым индикатором.

Мне показалось разницы особой нет.
тырц

  • Eddy_Em
  • Сообщений: 2525
  • Зарегистрирован: Пт июл 12, 2019 22:52:01
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 17:34:08

У меня нормально все получилось на обычном I2C. Писать — ОК, это с чтением проблема (но экранчик к счастью читать не нужно; а вот реализовать клавиатуру на этом чипе невозможно будет без уродования с таймерами и DMA).

  • Alex_641
  • Сообщений: 2323
  • Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 18:33:22

А есть тм1640 она на 16 знаков !

  • musor
  • Сообщений: 39199
  • Зарегистрирован: Сб сен 13, 2014 16:27:32
  • Откуда: СпиртоГонск созвездия Омега
  • Сайт

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 19:48:27

Alex_641 , А ТО!!правда она клаву не сканит

  • Starichok51
  • Сообщений: 17925
  • Зарегистрирован: Сб авг 14, 2010 15:05:51
  • Откуда: г. Озерск, Челябинская обл.

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 21:38:19

VNS , на твоем тырц есть еще стоимость доставки — в сумме 125,93 руб.
а я «часовые» покупал меньше 40 руб.
вот тебе и примерно в 3 раза, как я сказал.

  • BOB51
  • Сообщений: 13874
  • Зарегистрирован: Вт мар 16, 2010 22:02:27
  • Откуда: ДОНЕЦК

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 22:18:33

Работал с таким железком.
Не сильно понравилось — может матрица зеленая, может документация.
То, что удалось на сей «дровер» нашкарябать (на основе сих даташитов делал программный I2C0:

Datasheet_TM1637.pdf (688.08 KiB) Скачиваний: 55
TM1637_урезанная.pdf (712.75 KiB) Скачиваний: 61

  • VNS
  • Сообщений: 1326
  • Зарегистрирован: Пт дек 10, 2021 12:48:46
  • Откуда: Тюмень

Re: Светодиодный индикатор на базе ТМ1637

Чт янв 26, 2023 22:44:51

а я «часовые» покупал меньше 40 руб.

Раньше они наверно и были по такой цене, теперь цена другая, что те, что те – одинаково.

Добавлено after 7 minutes 55 seconds:

Не сильно понравилось

А мне наоборот понравились… что касается программного I2C, так я его в основном и использую и даже в мегах, так как ИМХО не особо выигрывает аппаратный TWI…

Powered by phpBB © phpBB Group.

phpBB Mobile / SEO by Artodia.

7 сегментный индикатор, модуль на TM1637

Драйвер TM1637 берет на себя всю работу с динамической индикацией, По всей видимости, микросхема была разработана для использования в DVD плеерах, для отображения времени, модули также больше подходят для сборки часов.

Характеристики микросхемы:

  • Напряжение питание: 5V ±10%
  • Индикаторы, 6 разрядов и 8 элементов, поддержка индикаторов с общим анодом.
  • Возможность регулировки яркости.
  • Двух проводной последовательный интерфейс (CLK, DIO).

Подключение к Arduino:

Модуль можно подключать на любые свободные выходы arduino, питание у модуля 5 вольт.

Софт:

Библиотеку для работы с модулем можно взять тут или тут

После установки открываем пример, NumberFlow.ino,

#define CLK 6//pins definitions for TM1637 and can be changed to other ports #define DIO 7 

в директивах (16,17 строка), указываем к каким контактам подключены выводы CLK и DIO модуля. В нашем случаи это 6 и 7.

После загрузки скетча в arduino видим на экране следующее.

Часы:

Модуль для часов, поэтому пример с часами. Как оно работает можно посмотреть на видео ниже.

код из видео

#include Wire.h> #include "TM1637.h" #define DS1307_I2C_ADDRESS 0x68 #define CLK 6 #define DIO 7 TM1637 tm1637(CLK,DIO); ///// часы .. byte decToBcd(byte val)< return ( (val/10*16) + (val%10) ); > byte bcdToDec(byte val)< return ( (val/16*10) + (val%16) ); > void setDateDs1307(byte second, // 0-59 byte minute, // 0-59 byte hour, // 1-23 byte dayOfWeek, // 1-7 byte dayOfMonth, // 1-28/29/30/31 byte month, // 1-12 byte year) // 0-99 < Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.endTransmission(); > void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) < Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); > void setup() < Wire.begin(); tm1637.init(); tm1637.set(1); // яркость, от 0 до 7 tm1637.point(POINT_ON); // включаем точки /* // установка часов byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; second = 30; minute = 0; hour = 14; dayOfWeek = 3; // день недели dayOfMonth = 1; // день month = 4; year = 14; setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year); */ > void loop()< byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); int8_t TimeDisp[4]; TimeDisp[0] = hour / 10; TimeDisp[1] = hour % 10; TimeDisp[2] = minute / 10; TimeDisp[3] = minute % 10; tm1637.display(TimeDisp); >

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *