Использование Ws2812b как семи сегментные индикаторы

kesha47
Offline
Зарегистрирован: 26.05.2020

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

Появилась идея сделать часы-термометр-гигрометр (а в идеале еще и радиометр). По советам в интернете для минимизации проводов была куплена адресная светодиодная лента и нарезана и собрана в виде семи сегментных индикаторов.
В интернете есть несколько готовых скетчей под ардуино надо, но к сожалению у меня другой модуль часов реального времени и лента собрана не в том порядке и не с такми количетвом дидов на сегмент. Поэтому ничего не работае. На данный момент мне необходимо найти библиотеку для работы с индикацией цифр на часах. Пока хотя бы заставить работать как часы. Я не совсем понимаю логику вывода информации на экран. Может кто-то знает простые библиотеки? Или статьи для обучения?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Информация на адресную светодиодную ленту выводится последовательно светодиод за светодиодом. В библиотеке Adafruit Neo Pixel, например, это организовано последовательным заполнением  значений цветов и яркости светодиодов. Затем подается команда show. А далее - что передали, то и отобразит :)

Почитайте

b707
Offline
Зарегистрирован: 26.05.2017

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

не важно, в каком порядке там собрано - главное понять принцип работы. Поэтому считаю, что подобные проекты - все что нужно для старта. Могу подкинуть вам еще ссылку на вариант подобных часов на нашем форуме.

http://arduino.ru/forum/programmirovanie/bolshie-nastennye-chasy-na-arduino

А вот на библиотеки тут рассчитывать не стоит, нет для этого готовых библиотек. Да и не нужны они. один раз разберитесь - и все станет просто

kesha47
Offline
Зарегистрирован: 26.05.2020

b707 пишет:

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

не важно, в каком порядке там собрано - главное понять принцип работы. Поэтому считаю, что подобные проекты - все что нужно для старта. Могу подкинуть вам еще ссылку на вариант подобных часов на нашем форуме.

http://arduino.ru/forum/programmirovanie/bolshie-nastennye-chasy-na-arduino

А вот на библиотеки тут рассчитывать не стоит, нет для этого готовых библиотек. Да и не нужны они. один раз разберитесь - и все станет просто

 

Меня вот эта таблица вводит в ступор

#define NUM_LEDS 108 // 5 by segment + 6 in the middle
#define LED_TYPE WS2812
#define COLOR_ORDER GRB // Define color order for your strip
#define BRIGHTNESS 150
#define LED_PIN 5 // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip

byte digits[10][26] = {
{
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 0
{
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 1
{
1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0 }
, // Digit 2
{
1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1 }
, // Digit 3
{
1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 4
{
1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1 }
, // Digit 5
{
1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 6
{
0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 7
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 8
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1 }
}; // Digit 9 | 2D Array for numbers on 7 segment

byte firstdigit[2][10] = {
{
0,0,0,0,0,0,0,0,0,0 }
, // Digit 0 first number

{
1,1,1,1,1,1,1,1,1,1 }
}; // Digit 1 first number | 2D Array for numbers on 7 segment

В моем случае NUM LEDS - это общее кл-во светодиодов?

И что значат последовательности цифр в таблице, желательно подробно. И как потом эту таблицу применить для  команд вывода на табло?

b707
Offline
Зарегистрирован: 26.05.2017

kesha47 пишет:

И что значат последовательности цифр в таблице, желательно подробно. И как потом эту таблицу применить для  команд вывода на табло?

откуда эта таблица?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

ТС может тебе почитать что нибудь для начала про эти светодиоды ?
Потом описание библиотеки почитать.
Ну нет же понимания никакого у тебя, как это работает.
На ощупь, методом перебора будешь запускать ?
Однажды же должно совпасть...

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Kakmyc пишет:
ТС может тебе почитать что нибудь для начала про эти светодиоды ? Потом описание библиотеки почитать. Ну нет же понимания никакого у тебя, как это работает. На ощупь, методом перебора будешь запускать ? Однажды же должно совпасть...

Типа 1млн макак на печатной машинке могут напечатать "Войну и мiръ"? 

kesha47
Offline
Зарегистрирован: 26.05.2020

b707 пишет:

kesha47 пишет:

И что значат последовательности цифр в таблице, желательно подробно. И как потом эту таблицу применить для  команд вывода на табло?

откуда эта таблица?

Странный вопрос, вы мне сами скинули на нее ссылку.

b707
Offline
Зарегистрирован: 26.05.2017

В той ветке, что я вам указал - десятка полтора вариантов кода. Вы можете указать номер сообщения, откуда вы взяли этот код?

kesha47
Offline
Зарегистрирован: 26.05.2020

b707 пишет:
В той ветке, что я вам указал - десятка полтора вариантов кода. Вы можете указать номер сообщения, откуда вы взяли этот код?

Сообщение номер 1,

b707
Offline
Зарегистрирован: 26.05.2017

kesha47 пишет:

b707 пишет:
В той ветке, что я вам указал - десятка полтора вариантов кода. Вы можете указать номер сообщения, откуда вы взяли этот код?

Сообщение номер 1,

в этой таблице в каждой строчке указано, какие из диодов надо зажечь, чтобы получить нужную цифру


byte digits[10][26] = {
{
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 0
{
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 1
{
1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0 }
, // Digit 2
{
1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1 }
, // Digit 3
{
1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 4
{
1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1 }
, // Digit 5
{
1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 6
{
0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1 }
, // Digit 7
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
, // Digit 8
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1 }
}; // Digit 9 | 2D Array for numbers on 7 segment

всего цифр, как известно. десять - 0-9 - соответственно в этой таблице 10 строк.

Например для вывода цифры "0" - первая строчка - первые 4 диода погашены (стоит 0), а все остальные зажжены.

Не вполне понятно, правда, почему выбрано такое странное число диодов - 26. Судя по табличке, у автора в двух левых вертикальных сегментах цифры по три диода, а в остальных - по четыре. Итого 3+ 3+ 5 * 4 = 26

Как использовать эту таблицу для вывода - смотрите дальше в коде.

Но вообще я не советую вам код из первого поста ветки. Этот код автор нашел где-то в инете, он кривой и глючный. Дальше на протяжении нескольких страниц этот код улушали и переписывали несколько авторов. Советую, например. код из сообщения #303 - его качество не в пример выше. И , кстати, табличка там выглядит по-другому... хотя суть та же

kesha47
Offline
Зарегистрирован: 26.05.2020

Спасибо. А что значат цифры в квадратных скобках? 10 и 26? Ну допустим мы разобрались с табличкой. А как тогда вывести допустим 4 цифры одновременно, да ещё и через мигающее двоеточие?

b707
Offline
Зарегистрирован: 26.05.2017

kesha47 пишет:
Спасибо. А что значат цифры в квадратных скобках? 10 и 26?

а вы Си совсем не знаете? Понятие массив вам не знакомо? Это размерности двумерного массива

Цитата:
Ну допустим мы разобрались с табличкой.

не "допустим", а давайте вы сначала разберетесь. Потому что если вы реально разберетесь - то часть вопросов отпадет сама, а если не разберетесь - то к чему мне время тратить.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

kesha47 пишет:
А что значат цифры в квадратных скобках?

Вот книжка для новичков с кратким описанием. Ответ на 16 странице. Там вообще много полезного, читайте.