Авторизация
Зарегистрироваться

DIY часы на DS3231 - расширяем функционал

  1. Цена: 761,84 руб.
  2. Перейти в магазин

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

Данные часы уже несколько раз обозревались:
Набор для самостоятельной сборки матричных часов на DS3231,
Часы – конструктор на высокоточном (extremely accurate I2C) чипе DS3231.



Основой часов является микроконтроллер stc15w1k24s и микросхема rtc ds3231. Сменив прошивку микроконтроллера и подключив дополнительные модули мы можем увеличить функционал часов.

В модернизации принимали участие или тестировались:
Модуль bmp180 GY-68 — $1.97
Модуль si7021 GY-21 — $2.87
Модуль bme280 GYBMEP — $4.07
usb — uart конвертер на CH340G — $2.55

Модули bmp180 и si7021 были между собой спаяны.

Расстояние между отверстиями модулей 5 мм.
Изначально для изготовления П-образных контактов пытался изогнуть штырьки от гребенок PLS, но почему-то при изгибании они лопались. Пришлось применить жилу от провода ПВ-1/ПУВ 1х0,5 мм( диаметр жилы примерно 0.7мм ).

и подпаяны к часам.

Точки подключения модулей.

Перепрошиты и собраны.


Отличия прошивки от стандартной(заводской):
1. При подключенном модуле si7021 — вывод влажности.
2. При подключенном модуле bmp180 — вывод давления.
3. При подключенном модуле bme280 — вывод давления и влажности.
4. Будильник с выбором дней недели.
5. 6 уровней яркости.
6. Наши праздники.
7. Возможность корректировки хода ds3231.
8. Пока отсутствуют анимация/эффекты.

GitHub Repository с проектом под Keil, поддержку STC15 в Keil можно добавить через STC-ISP.
Архив с HEX файлом.
STC-ISP v6.86D

Перепрошивал часы с помощью STC-ISP и USB-UART адаптера на CH340G. С напряжением 3.3v.
Input IRC frequency: 18.432 MHz

При перепрошивке просто прислонял шлейф к контактным площадкам.


Планирую купить +22 Добавить в избранное +25 +49
свернуть развернуть
Комментарии (91)
RSS
+
avatar
  • Setjet
  • 29 августа 2017, 20:25
+8
Мне вот почему то думается, что давление и влажность как таковые не столь важны, сколь интересно знать тенденцию их изменения. Т.е. если бы при выводе их значений где-то рядом отображалась бы стрелочка вверх или вниз (куда это самое значение двигается скажем за последние несколько часов). А если бы при сильном изменении она ещё бы и зловеще мигала — было бы вообще шикарно))
+
avatar
  • dimkin
  • 29 августа 2017, 21:48
0
Данные за неделю :) Толку от них? :)
+
avatar
  • Setjet
  • 29 августа 2017, 21:56
+3
За неделю не нужно.
А вот на основании изменения давления за последние 6-12 часов вполне можно принять решение брать ли с собой зонт или отправиться куда-то налегке.
+
avatar
  • dimkin
  • 29 августа 2017, 22:00
+3
ну вот на картинке выше много данных и немного подсказок — когда стоило брать зонт? :)
+
avatar
0
Когда падает давление — берем зонт, будет пасмурно, возможны осадки.
+
avatar
  • dimkin
  • 30 августа 2017, 08:57
0
за всю картинку давление падало 4 раза. дождь был только 25го да и то не везде.
Мне до работы 25 км — по пути погода может радикально переменится раза 2.
Вот такая маленькая и гордая страна с грустными синоптиками :D
Хотя именно осадки в ближайщие пару дней они угадывают очень точно
+
avatar
  • Onibi
  • 29 августа 2017, 22:13
0
Осталось к ним счётчик гейгера прикрутить :)
+
avatar
  • VahaC
  • 29 августа 2017, 22:13
+2
А можеш поделиться исходниками етой прошивки? Спасибо.
ПС
хочу прошить свои часики под bme280
и добавить дни рождения своего семейства
+
avatar
  • v0tang
  • 30 августа 2017, 01:24
0
Поддержку bmp280 и bme280 я и сам собираюсь сделать, тк модуль уже пришел.
+
avatar
  • v0tang
  • 31 августа 2017, 11:48
+1
bme280 — работает.
В теории и bmp280 должен.
Сначала ищется по адресу 0x76, потом по 0x77, при удачной проверке 0x76, 0x77 не проверяется.
По chipid определяется модель датчика, и его возможности.

проверялось на:
bmp180 — I2C address 0x77 chipid 0x55
bme280 — I2C address 0x76 chipid 0x60
+
avatar
0
Давно ждал когда можно избавится от этих Китайских праздников. Хорошая работа!.. Супер..! Тож хочу так прошить…
Только вот несколько вопросиков…
Можно ссылочку на саму програмку-прошивальщик, где её скачать можно? Если не подключать дополнительные модули, а только пролить. Будут работать часики?
Если с одним модулем BMP180, без si7021, будут работать?
+
avatar
  • v0tang
  • 30 августа 2017, 01:27
+1
STC-ISP v6.86D
Будут.
Будут.
+
avatar
0
А вот это Firmware for STC15W1K24S microcontroller on DIY LED Matrix Clock with DS3231 Это и есть исодник?
Интересно, в заводской прошивке почасовой сигнал был только один раз, при смене часа… А в той прошивке исправлено?
+
avatar
  • v0tang
  • 30 августа 2017, 10:25
+1
Да, это и есть исходник.
А сколько раз нужно при смене часа?
+
avatar
  • VahaC
  • 30 августа 2017, 10:38
0
а в какой среде собирали бинарник под етот проц?
+
avatar
  • v0tang
  • 30 августа 2017, 10:42
+1
Keil v9.56
+
avatar
0
Почасовой сигнал, конечно традиционно один раз в час — достаточно. Но именно на прошивке с «завода» вот такая странность есть… Допустим подали питание на часики в 10:20, они в 11:00 как и положено пикнули… И далее в 12 часов, в 13 часов и так далее — молчат… И в меню непонятно как этот почасовой сигнал включается…
Подскажите вот ещё что… Можно как то прошивку с часов «списать», чтоб потом можно было «откат» сделать...?
+
avatar
  • v0tang
  • 30 августа 2017, 14:01
0
Я такого способа не знаю.
У меня двое часов на новой прошивке, нормально себя чувствуют.
+
avatar
0
На новой прошивке, вы О этой которая есть здесь..?
А как вы включает и Отключаете почасовой сигнал..?
А анимация часов тоже есть?
+
avatar
  • v0tang
  • 30 августа 2017, 16:16
0
Да. Новая — это та которая не заводская.
В меню — on/off.
Анимации/эффектов нет, в меню пункт disp есть, но он ни на что не влияет.
+
avatar
  • Orloff
  • 31 августа 2017, 01:28
0
А температуру с какого датчика берет? Встроенный в DS3231 не очень точный.
+
avatar
  • v0tang
  • 31 августа 2017, 10:24
0
Температуру берет с ds3231.
Про точность, жаль что единственную si7021 впаял в часы она тоже что то свое показывала. Все трое воткнуты в одну бредбоард, после 15 минутного прогрева:

bme280 Temperature = 23.09 *C
bme280 Pressure = 744.45 mm
bme280 Humidity = 50.24 %

bmp180 Temperature = 22.30 `C
bmp180 Pressure = 743.8 mm

ds3231 Temperature = 21.25 `C
+
avatar
  • mishael
  • 11 марта 2018, 18:50
0
в вашей прошивке есть коррекция температуры?
+
avatar
  • v0tang
  • 12 марта 2018, 00:49
0
Что подразумевается под коррекцией?
Да можно в меню подстроить отображаемую температуру в диапазоне -9 +9 градусов.
+
avatar
  • mishael
  • 12 марта 2018, 11:29
0
да, это и имел ввиду, спасибо.
+
avatar
0
Пробовал прошивать, но что то даже MCU не удалось прочитать… Первая попытка в жизни… и появились вопросики… Можно подробней для несильно продвинутых… На часы питание с БП перед соединением программатора и компа надо подавать...? Перед запуском прошивки на программаторе кнопку Ресет нужно нажимать? Или я програматор не правильный использовал..? Или сигнал готовности проводулькой нужно подавать… я фото программатора позже выложу, но он точно но CH340 сделан, но может он не UART...? И у моего ноги на так расположены как у вас на фото…
+
avatar
0
+
avatar
  • v0tang
  • 31 августа 2017, 11:32
0
UART-адаптер у меня точно такой же как верхний, только я его в термоусадку загнал.


+
avatar
  • v0tang
  • 31 августа 2017, 10:43
0
Для любых операций из STC-ISP( «Download» / «Check MCU» ) нужно чтобы STC15 вошел в bootloader, то есть его нужно перезапустить. На верхнем UART-адаптере нажатие на кнопку обесточивает вывод VCC, что приводит к сбросу и входу в bootloader.

1. часы выключены.
2. нажимаем «Download» или «Check MCU»
3. если на часы припаяны контакты и подсоединен шлейф, то нажимаем кнопку на UART или вручную отключаем и подключаем вывод VCC.
если не припаяны то просто начиная с GND прислоняем гребенку, VCC должен податься последним и не отпускаем до радостного писка часов.

Опыты лучше начать с кнопки «Check MCU»
Checking target MCU ... 
  MCU type: STC15W1K24S
  F/W version: 7.2.5T

Current H/W Option:
  . Current system clock source is internal IRC oscillator
  . IRC frequency: 18.425MHz
  . Wakeup Timer frequency: 36.896KHz
  . Do not detect the level of P3.2 and P3.3 next download
  . Power-on reset, use the extra power-on delay
  . RESET pin behaves as I/O pin
  . Reset while detect a Low-Voltage
  . Thresh voltage level of the built-in LVD : 2.62 V
  . Inhibit EEPROM operation under Low-Voltage
  . CPU-Core supply level : 2.81 V
  . Hardware do not enable Watch-Dog-Timer
  . Watch-Dog-Timer pre-scalar : 256
  . Watch-Dog-Timer stop count in idle mode
  . Program can modify the Watch-Dog-Timer scalar
  . Do not erase user EEPROM area at next download
  . Do not control 485 at next download
  . Do not check user password next download
  . TXD is independent IO
  . TXD pin as quasi-bidirectional mode after reset
  . P2.0 output HIGH level after reset
  . Testing time: 2016-11-17

  . MCU type: STC15W1K24S
  F/W version: 7.2.5T


  Complete !(2017-08-31 10:41:44)
+
avatar
0
Огромное человеческое СПАСИБО… Получилось с подачей питания была хитрость… ;-)
+
avatar
0
Работают нормально дополнительные датчики ещё не подпаивал, праздники на русском пишут… Клёво…
А можно в праздники добавить день энергетика 22 декабря..?
+
avatar
  • v0tang
  • 31 августа 2017, 14:33
0
+
avatar
0
GitHub Repository по этой ссылке прошивка для Ардуино?
+
avatar
  • v0tang
  • 02 сентября 2017, 12:53
0
Причем тут arduino, если там исходники прошивки для часов на stc15w1k24s?
+
avatar
0
Я в архиве увидел файлики похожие на скетч от Ардуино… Но похоже ошибся…
А чтоб этот архив использовать, его нужно ещё как то в Keil v9.56 обработать?
+
avatar
  • v0tang
  • 02 сентября 2017, 15:06
0
В архиве проект. Если его собрать в Keil C51, то получим hex файл годный для заливки в часы.
+
avatar
0
А не будете ли вы так любезны, кинуть ссылочку, так попробовать хочется… Может праздничков добавить днюхи получится…
+
avatar
  • v0tang
  • 03 сентября 2017, 20:28
0
Ссылочку на что?
+
avatar
0
На Keil C51… Пробовал сам найти, но пока не получается… На официальном сайте, какой то, бонус на 14 дней дают, но чтоб воспользоваться нужно свой эл.адрес ввести я все сделал как они хотят, но мой ящик что то оказался неправильным для них… Наверно надо им надо «буржуинский» типа gmail.com…
+
avatar
  • v0tang
  • 04 сентября 2017, 00:41
0
Тут все есть.
+
avatar
+1
Можете исходник прошивки выложить?
+
avatar
  • Viha
  • 30 августа 2017, 06:31
+2
Ну почему люди считают, что их обзоры читают ТОЛЬКО жители России??? Неужели так тяжело указать стоимость в более распространённых тугриках?
И сам обзор малоинформативен. В комментариях и то больше информации почерпнул, чем в обзоре.
+
avatar
0
Ну потому, хотя бы, что расположен он в зоне .ru
+
avatar
  • Viha
  • 30 августа 2017, 07:55
+1
А то, что он расположен в буржуйском интернете? Написан на буржуйском языке? Крутится на буржуйскуом сервере? Не нужно лепить горбатого со своей зоной «ru». На каждый аналогичный глупый аргумент есть десяток грамотных ответов, от которых вы как минимум засмущаетесь и почувствуете себя довольно неловко.
+
avatar
0
Ну давайте, засмущайте же меня скорее :)
+
avatar
  • Offi
  • 30 августа 2017, 12:38
0
Лично мне НЕУДОБНО рубли переводить в доллары, так как я из Израиля и для этого приходится открывать страницу товара.
+
avatar
0
ну, тогда уж в шекели :))
+
avatar
  • Viha
  • 31 августа 2017, 01:45
0
Достаточно уважать других посетителей сайта и предоставлять удобоваримую цену в нормальной валюте, которую в любой стране мира людям удобно пересчитать в свою национальную. Мы же уважаем вас и пишем на русском, а не на своем родном. Почему вы считаете, что все остальные люди на Земле хуже вас и должны прогибаться под вас? Обыкновенное уважение. Тем более тысячу раз просили поступать по человечески.
+
avatar
  • AIS
  • 30 августа 2017, 09:27
0
Это обзор про русскую прошивку для китайских часов. Автор обзора очень мне помог в русификации прошивки для другой модели подобных часов. Свою прошивку он писал с нуля, так как исходников китайской прошивки на эту модель не было. Прошивка из-за используемых в ней российских праздников рассчитана в основном для пользователей из России. Исходники есть можно сделать прошивку с праздниками и днями недели других стран. Можно добавить в прошивку и дни рождения членов семьи, но это уже спец прошивка для отдельной семьи.
+
avatar
0
Случайно не на контроллере STC15F2K16S2? У автора на гитхабе есть прошивка для часов на таком контроллере, но у меня она почему то не заработала, после прошивки все элементы матрицы постоянно горят.
+
avatar
-1
А что на Али, в настройках, нельзя Тугрики поставить и рассчитываться своими Тугриками...?
+
avatar
  • djuscha
  • 30 августа 2017, 08:15
-2
а такие часы можно перепрошить?
+
avatar
  • xxxtaz
  • 30 августа 2017, 11:23
0
А обзор читать не пробовали?
+
avatar
  • v0tang
  • 30 августа 2017, 14:56
0
Можно, но не этой прошивкой.
+
avatar
  • djuscha
  • 31 августа 2017, 07:45
0
а какой? Подскажите пожалуйста где найти.
+
avatar
  • v0tang
  • 31 августа 2017, 10:45
0
Не владею данной информацией.
Таких часов у меня нет.
+
avatar
  • Hyperfly
  • 21 февраля 2018, 01:58
0
Поддержку STC15 в Keil можно добавить через STC-ISP.
Сколько ни пытался добавить поддержку STC15 через STC-ISP так и не понял как это можно сделать.
При открытии проекта в Keil было сообщение о том что «Target device not found», ну или что то в этом роде. В библиотеке девайсов STC контроллеров, конечно же, не оказалось. Пришлось добавить их вручную, взяв за основу стандартный контроллер 8051.

Без добавления поддержки данного контроллера в Keil получаю ошибку: sys.h(4): warning C318: can't open file 'STC15.H'
+
avatar
  • v0tang
  • 21 февраля 2018, 19:34
+1
Не думал что для такого простого действия нужно рисовать мурзилку…
+
avatar
  • varan
  • 14 апреля 2018, 23:44
0
Прошу прощения за беспокойство, но подумалось, что может быть Вам будет интересно, что кто-то вносит дополнения в Вашу программу, и посмотреть на эти дополнения. Подробности и ссылки в комментариях. В любом случае большое спасибо за исходники.
+
avatar
  • Hyperfly
  • 22 февраля 2018, 00:10
0
Спасибо за подсказку! Чем больше кнопка- тем сложнее ее найти…
+
avatar
0
День добрый. Набор DIY 3231 собран на светодиодах(матричный) при прошивке возникла проблема; часы перестали работать. Светодиоды не зажигаются, проц IAP15W413S прошивал через STS-ISP ошибок не выдал прошил нормально.Вопрос прошивка может не подходить к этому процу?
+
avatar
  • v0tang
  • 22 марта 2018, 16:38
0
Не очень понятно что за набор имеется введу, но да прошивка к нему не подходит.
+
avatar
0
Подскажите как исправить ситуацию…
+
avatar
  • v0tang
  • 22 марта 2018, 20:55
0
Зашить прошивку под Ваш набор.
+
avatar
  • varan
  • 04 апреля 2018, 14:32
+1
Подпаяв к часам модули bmp180 и si7021 и впаяв чистый микроконтроллер вместо того, который был в наборе (чтобы не портить заводскую прошивку), я воспользовался предоставленными v0tang исходниками его варианта прошивки, внеся некоторые изменения в программу так, как мне этого хотелось:
Уменьшение частоты мигания двоеточия между часами и минутами в два раза.
Изменение типа дисплея в пункте меню DiSP для отображения только времени с 1 на 5, как в заводской прошивке.
Увеличение интервала, через который отображаются показатели (дата, день недели, температура, давление и влажность), с 5 до 60 сек.
Большое спасибо v0tang за предосталенные исходники его прошивки.
Добавление в показатели года (на первом месте), минут и секунд (после дня недели) — отображаются 5 сек, чтобы можно было посмотреть точность хода часов.
В режиме отображения только времени (тип дисплея 5) нажатие кнопки SET приводит к отображению показателей, начиная с года, и кончая празником, если он есть. Последующие нажатия кнопки SET во время отображения показателей приводят к пропуску показателя. Так можно быстро добраться до интересующих показателей (виджетов).
Добавлен пункт меню EXiT — выход из меню, помимо долгого нажатия на кнопку SET.
Изменены выходы из пунктов меню FONT и MiDP: в исходной версии v0tang (файл OldDIYClock[18.432].hex, 56440 bytes от 10.09.2017), если тип дисплея был не равен 1, т.е. осуществлялся режим отображения показателей через 5 сек, то при выборе пункта меню FONT или MiDP и нажатии кнопки SET, отображения показателей через 5 сек больше не происходило. Чтобы оно возобновлялось, надо было нажимать еще раз кнопку SET. Может так и было задумано, но я это изменил. У меня при выходе из пунктов меню FONT, MiDP и EXiT путем нажатия кнопки SET отображение показателей (когда тип дисплея не равен 5) не останавливается.
Большое спасибо v0tang за предоставленные им исходники его прошивки.
+
avatar
0
А вашу прошивочку тоже можно скачать?
+
avatar
  • varan
  • 06 апреля 2018, 15:15
+2
Да, конечно. Здесь весь проект под KEIL со всеми исходниками. В папке Objects — hex-файл собственно прошивки.
+
avatar
  • varan
  • 14 апреля 2018, 23:39
+1
Добавил еще таймер. Немного изменил отображение температуры, давления и влажности. Исходники и прошивка там же, где и предыдущие.
+
avatar
  • varan
  • 19 апреля 2018, 23:13
+1
Завершил реализацию выбора шрифта и типа двоеточия практически полностью сделанную v0tang в его прошивке. Функции выбора такие же, как и для выбора типа дисплея. Ничего нового и моего тут нет — все было уже написано v0tang. Только подправил несколько цифр. Исходники и прошивка там же, где и предыдущие.
+
avatar
  • varan
  • 23 апреля 2018, 00:23
+1
Добавил вывод строки о празднике через каждый час, независимо от выбора типа дисплея и вывода этой строки вместе с другими показателями (дата, день недели, температура и т.д.). Исходники и прошивка там же, где и предыдущие.
+
avatar
0
Добавил вывод строки о празднике через каждый час
Имеется в виду пункт меню «STRG»? Тоесть, когда STRG=On, то праздник будет отображаться только раз в час, а если STRG=Off — то каждый раз после всех виджетов?
+
avatar
  • varan
  • 26 апреля 2018, 14:33
0
Если disp= 5, то независимо от STRG, виджеты не будут отображаться автоматически, но цикл их отображения, включая и строку праздника, если он имеется в данный день, можно запустить, нажав кнопку SET. При этом disp строка праздника в день праздника будет отображаться раз в час, если STRG=On. Если установить STRG=Off, то строка праздника больше не будет отображаться не при каких условиях. Это можно сделать после того, как вы в праздничный день увидили эту строку пару раз, и больше не хотите ее видеть. В следующий день вы можете опять устаноить STRG=On, чтобы не пропустить следующий праздник. Если disp не равно 5, то происходит автоматическое отображение всех виджетов, включая и строку для празника в праздничный день, через заданный в программе интервал времени — через 60 секунд. При этом disp строка праздников в праздничный день не будет отображаться через час при STRG=On, и виждеты не будут отображаться путем нажатия кнопки SET.
+
avatar
  • varan
  • 26 апреля 2018, 15:16
0
Вы можете поэкспериментировать с этим, установив дату, например, на 1-е мая. У меня DISP=5, STRG=On.
Поскольку значение STRG сохраняется в EEPROM, то также, как и при других изменениях параметров, хранящихся в EEPROM, я делал прошивку с галкой у Erase all EEPROM data next time program… в прошивальщике, для удаления всех данных из EEPROM.
+
avatar
  • varan
  • 25 апреля 2018, 22:48
0
Автономный вывод строки о празднике теперь можно включать и выключать через меню часов. Выдается она только в режиме дисплея отображения только времени.Исходники и прошивка там же, где и предыдущие.
+
avatar
0
В версии прошивки от Varanа у меня не получается установить коррекцию значения температуры.
PS: прошивал без сброса EEPROM.
Баг, или всё-таки нужно прошить со сбросом?
+
avatar
  • varan
  • 26 апреля 2018, 17:30
0
Ошибка. Я ее исправил. С температурой от датчика Si7021 работает. Надо проверить еще, как работает, когда температура считывается с микросхемы RTC DS3231, а не с датчика. С этой коррекцией есть один неудобный момент. Когда вы корректируете температуру, отображается температура, и вы видете, как она увеличивается с каждым нажатием на "+" или уменьшается с каждым нажатием на "-" на один градус. Дальше вы нажимаете SET и температура будет теперь корректироваться на какое-то установленное вами количество градусов от -9 до +9. Трудность заключается в том, чтобы убрать введенную коррекцию. Надо запомнить, на сколько градусов вы скорректировали, или нажимать "+" до тех пор, пока отображаемая температура после очередного нажатия не уменьшится на 18 градусов, и затем нажимать "+" еще 9 раз. Т.е. все это происходит вслепую. Лучше было бы, чтобы при коррекции отображалась бы не результирующая температура, а величина коррекции в градусах. Тогда отказаться от коррекции было бы просто, установив коррекцию в 0 градусов. Я могу это сделать в своей прошивке, если кому-то это надо. Когда я протестирую исправление, то выложу новый вариант там же.
+
avatar
  • varan
  • 26 апреля 2018, 18:20
+1
+
avatar
  • varan
  • 28 апреля 2018, 00:03
+2
Реализовал некоторые замечания v0tang. Выбор шрифта и мигающей точки примерно как у китайцев. Добавил в меню пункт RST — reset — сброс параметров, хранящихся в EEPROM, к значениям по умолчанию (defult). Часть из этих параметров приведена ниже:

	        hourSignal = 0
		dispMode = 5
		dotMode = 0
		fontMode = 0
		bright = 2
		on = 0
		tempcoef = 0
		timecoef = 0
		stringShow = 1

Прошивка здесь.
+
avatar
0
Откорректировал holidays.c в Keil_v5, скомпилировал hex, зашил в контроллер. Отображает строку не полностью, а только 47 символов с учетом пробелов, на 48 обрывается. У меня в строке 54 символа.
Нашел в display.c константы #define DISPLAYSIZE 22 и #define RENDSERBUFFERSIZE 254, изменил 254 на 512 — отображение начинается с 48 символа. Подскажите как увеличить объем буфера экрана.
+
avatar
  • v0tang
  • 30 июля 2018, 22:21
0
Переписать адресацию render_buffer с uint8_t на uint16_t или реализовать динамический рендеринг.
+
avatar
0
В display.c в строке 19 uint8_t xdata render_buffer[RENDSERBUFFERSIZE]; нужно поменять uint8_t на uint16_t?
+
avatar
  • v0tang
  • 30 июля 2018, 23:31
0
Нет. В данной строке uint8_t это размерность одного элемента массива.
Я же имел ввиду адресацию, то есть те переменные что используются в [скобках] и имеют размерность uint8_t

display.c
uint16_t render_buffer_size = 0;
...
disp[i] = render_buffer[(uint16_t)(ind + i)];

display.h
extern uint16_t render_buffer_size;


В теории это решит вашу проблему
рекомендую рассчитать RENDSERBUFFERSIZE = 6 * максимальная строка, у контроллера не так много памяти.
+
avatar
0
Спасибо v0tang, буду разбираться.
+
avatar
  • varan
  • 19 августа 2018, 21:57
0
Только изменение типа переменной с uint8_t на uint16_t не решает проблему. Одновременно с этим нужно увеличить RENDSERBUFFERSIZE. Значения RENDSERBUFFERSIZE = 254 хватает для вывода строки в 46 символов. Для вывода строки в 80 символов хватит значения RENDSERBUFFERSIZE = 432 (6*72). Т.е. формула RENDSERBUFFERSIZE = 6 * (максимальная строка) не совсем верна. Вместо 6 больше подходит 5.5. У меня длинных строк нет, поэтому в своей прошивке я оставил RENDSERBUFFERSIZE = 254.
+
avatar
  • Skorkin
  • 20 августа 2018, 22:29
0
varan, спасибо за советы. Пока руки не доходят, по свободе займусь. :)
+
avatar
  • Lesnik_S
  • 26 августа 2018, 08:05
0
Ожидается ли в новых прошивках анимация виджетов в виде бегущей строки?
+
avatar
0
Привет, добавил Игру Жизнь и стрелочки изменения давления. Если кому-то интересно, можете смержить себе нужные изменения: src
+
avatar
0
У автора на гитхаб есть прошивка для часов на контроллере STC15F2K16S2 У меня как раз такие часы. После прошивки просто горят все символы матриц постоянно. При этом при нажатии кнопок есть звук. Не понимаю где косяк?
+
avatar
  • mishael
  • 19 сентября 2024, 12:02
0
Где сейчас можно купить такой набор?

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.