знаете я сейчас на стадии медведь на велосепеде который в страшных снах и видеть не мог это бесово колесо с едушкой , есть у меня товарщь , чтоб его черти на свороде жарили без масла , подсул мне эту штуковину типа ардуино две недели назад , паскуда , я все это время по два часа сплю , так что извените за мою тупость , я даже не совсем понимаю в данный момент последовательности вот усилино пытаюсь разобраться , а при мысли что еще и цыфры вывести еще в оморк падаю , да так бьюсь головой что клавиши с клавиатуры разлетаються , да еще и кот паскуда зактывает их под холодильник пока обморчном состоянии , и вот как тут сосредочиться , ведь нормальные же мужики водку пью и по бабам ходят , да нет ардуино сцуко
Может тогда стоило сначала помигать светодиодом, почитать что-нибудь, хотя бы справочник по языку http://arduino.ru/Reference . Он тут правда немного урезан, больше инфо есть тут https://www.arduino.cc/reference/en/ (на английском) или на русском, например, тут:
2) Зачем нужен массив dataarr[]? Вы туда пытаетесь (пока безуспешно) сохранять значения со входа. Вы планируете пользоваться этими значениями в будущем?
3) Замечания относительно constrain и map вы почему-то упорно игнорируете.
[code]
#define EN 3
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define SIG A0
#include "LedControl.h"
LedControl LC = LedControl(12, 11, 10, 4);
void setup(){
Serial.begin(9600);
LC.shutdown(0, false); //Активируем 0ю матрицу
LC.shutdown(1, false); //Активируем 1ю матрицу
LC.shutdown(2, false); //Активируем 2ю матрицу
LC.shutdown(3, false); //Активируем 3ю матрицу
LC.setIntensity(0, 8);
LC.setIntensity(1, 8);
LC.setIntensity(2, 8);
LC.setIntensity(3, 8);
LC.clearDisplay(0);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
pinMode(EN, OUTPUT);
digitalWrite(EN, LOW);
}
int pos = 0; // массив обнуляеться
void loop(){
for(int i = 0; i < 16; i ++){
LC.setColumn(i / 8, i % 8, 255 >> (8 - readMux(i)));
//LC.setColumn(int address, int column, byte value);
//LC - объект класса LedControl
//int address - адрес устройства на базе драйвера MAX72xx
//int column - номер столбца(нумерация столбцов, как и строк, начинается с 0, заканчивается 7)
//byte value - переменная(тип данных byte), значение которой будет включать определённые светодиоды
// в столбце LED матрицы 8x8. Эта переменная может быть проинициализирована значением следующего формата,
// к примеру - B00000111, означающего, что B - это формат записи для двоичного представления числа и
//8 значений состояния, для столбца из 8-ми светодиодов. Если какое-либо значение равно 1 то включить
//светодиод, если же 0 то выключить. В данном примере, включатся 5-й, 6-й и 7-й светодиоды в столбце,
//остальные останутся выключенными.
}
}
int readMux(int channel){
int controlPin[] = {S0, S1, S2, S3};
int muxChannel[16][4]={
{0,0,0,0}, //channel 0
{1,0,0,0}, //channel 1
{0,1,0,0}, //channel 2
{1,1,0,0}, //channel 3
{0,0,1,0}, //channel 4
{1,0,1,0}, //channel 5
{0,1,1,0}, //channel 6
{1,1,1,0}, //channel 7
{0,0,0,1}, //channel 8
{1,0,0,1}, //channel 9
{0,1,0,1}, //channel 10
{1,1,0,1}, //channel 11
{0,0,1,1}, //channel 12
{1,0,1,1}, //channel 13
{0,1,1,1}, //channel 14
{1,1,1,1} //channel 15
};
//loop through the 4 sig
for(int i = 0; i < 4; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
int val = analogRead(SIG);
return val;
}
[/code]
2) Зачем нужен массив dataarr[]? Вы туда пытаетесь (пока безуспешно) сохранять значения со входа. Вы планируете пользоваться этими значениями в будущем?
3) Замечания относительно constrain и map вы почему-то упорно игнорируете.
Продолжение следует...
кстати мап и констреин как то привязоны я еще не разобрался но без них светомузыка начинаеться
Ребят тлко не бейте , но что с ними не так то , мап это диапозон а констреин чтоб за пределы не выходили значения , я не прав? или с чем их поменя , я не могу понять то, извините
Ребят тлко не бейте , но что с ними не так то , мап это диапозон а констреин чтоб за пределы не выходили значения , я не прав? или с чем их поменя , я не могу понять то, извините
вы просто запутались в последовательности выполнения действий в коде - и это уже не однократно
вы всё время пытаетесь вначале съесть яблоко, а потом только сорвать или еще хуже, вынуть огрызок из несуществующего яблока и удивляетесь, что он какойто странный :)
просто не спешити, используёте комментариев больше для наглядности
ну и выделяйте содержимое блоков отступами - это тоже помогает в наглядности
Вы правильно понимаете, constrain - это чтобы ограничить значения переменной, а map - это преобразование переменной из одного диапазона в другой. Только в вашем случае изначальный диапазон значительно шире получаемого. Поэтому, правильней сначала разобраться со считанным со входа значением, а потом уже переводить его в нужный диапазон.
Не надо запутывать Jenek_Anapa окончательно, пускай будет как есть, так ему будет проще понять. Ведь строки 46-49 тоже можно в одну слепить. Но код от этого читабельней не станет.
ладно не судите строго , я как то привык знания добывать с помощь заобрать готовое ипонять как оно работет , вот это меня и подводит очень часто , Подскажите следующее , вот допустим я хочу теперь к каждому столбику привязать цыфру , тоесть номер , кторый будет высвечиваться на третей и четвертой матрице а если столбиков будет больше чтобы номера чередовались по кругу , раскожите мне последовательность дествей , верне как разумней делать порядок действий , и я вам очень благодарен за то что возитесь со мной
номер пина мультика или же ноамер столбика матрици , но номер будет появляться только тогда если хоть одна точка из столбика зажгеться , если загутся два столбика (сигнал придет с двух пинов ) то цыфры чередуються тех номеров которым соответствуют столбики
смысл есть , в первую очередь научиться , я делаю себе помогайку , занимаюсь я автоэлектроникой большегрузов и спец техникой , в основном автобусами , очень часто приходиться вызванивать пучки проводов , а так упрощаеться , я тоже думал просто оставить столбики но они очень мелкие подписывать и приглядываться как то не с руки , да и к тому же , это ж луче чем дурака валять )
идеальны вариант конечно же сделать дублирующее табло по ради каналу , но мне к этому очень долго идти придеться , но тем немение , опыт не помешает такой да и много где приготься еще
Понятно. Врядли будет информативно. А если сигналов будет не один-два, а пять, десять,... все шестнадцать? А если сигнал будет коротким, прошел импульс и все?
а помоему очень информативно , допустим из практики обычно из пучка 16 проводом допустим натыкаешься один два , а на чет того что ипульс пришол и все я тоже думал и решил что можно пришить писщалку которая будет голосить с первых точек столбиков , я думаю это то что надо будет , а цыфры с 12 метров разглядеть думаю можно будет , автобусы примерно такой длины )
Все-таки я не до конца понял. Устройство нужно для того, чтобы найти соответствующий конец кабеля или вам надо ловить и анализировать какие-то сигналы, которые уже бегают по этим кабелям (генерируются устройствами автомобиля)?
можно и так , надо подумать , мыслишка итересная , к сожалению у меня пока нет таких модулей , будем исходить из того что есть , и вывести цифру я думаю не сложно у меня гдето есть даже массив 16ти ричный для матрицы
#include "LedControl.h"
//Синтаксис создания класса LedControl(dataPin,clockPin,csPin,numDevices)
//Где LedControl - объект класса
//dataPin - пин на плате Arduino к которому будет подключен пин DIN
//clockPin - пин на плате Arduino к которому будет подключен пин CLK
//csPin - пин на плате Arduino к которому будет подключен пин CS
//numDevices - количество устройств на шине
//Создать объект класса matrix в нашем случае с одним подключенным устройством
LedControl matrix = LedControl(12, 11, 10, 4);
void setup()
{
//Устройству с адресом 0 по SPI интерфейсу выйти из спящего режима по умолчанию
matrix.shutdown(0, false);
//Установить яркость Led матрицы на 8 из 15
matrix.setIntensity(0, 1);
//Очистить дисплей
matrix.clearDisplay(0);
}
//Объявляем массив из 10-ти символов
//Каждый символ включает в себя массив из 8-ти байт
//закодированных числом в шестнадцатиричном коде
byte CountDigits[10][8] =
{
{0xe, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0xe, 0x0}, //0
{0x2, 0x6, 0xe, 0x6, 0x6, 0x6, 0x6, 0x0}, //1
{0xe, 0x1b, 0x3, 0x6, 0xc, 0x18, 0x1f,0x0}, //2
{0xe, 0x1b, 0x3, 0xe, 0x3, 0x1b, 0xe, 0x0}, //3
{0x3, 0x7, 0xf, 0x1b, 0x1f, 0x3, 0x3, 0x0}, //4
{0x1f,0x18, 0x1e, 0x3, 0x3, 0x1b, 0xe, 0x0}, //5
{0xe, 0x1b, 0x18, 0x1e, 0x1b, 0x1b, 0xe, 0x0}, //6
{0x1f,0x3, 0x6, 0xc, 0xc, 0xc, 0xc, 0x0}, //7
{0xe, 0x1b, 0x1b, 0xe, 0x1b, 0x1b, 0xe, 0x0}, //8
{0xe, 0x1b, 0x1b, 0xf, 0x3, 0x1b, 0xe, 0x0} //9
void loop()
{
for(int j = 0; j < 10; j ++) // листает символы
{
for(int i = 0; i < 8; i ++) //листает строки
{
//0 - адрес, либо номер устройства на шине SPI
//j - индекс массива байт с символом
//i - текущий ряд на матрице
//CountDigits[i] - значение(byte) которым заполнится ряд
matrix.setRow(0, i, CountDigits[j][i]); // команда вывода массива
}
delay(1000);
}
}
Покрутил я в голове, как это можно было бы сделать... и что-то ничего не придумал.. Думал наклеить светофильтры на на матрицу, но как-то это на 12 метрах нечитаемо.
Я бы всё же сделал бы на управляемых светодиодах WS2812 - они разноцветные и большие, полоски можно нарезать любой длины. Опять же для начинающего это красиво и наглядно.
Тогда зачем вам отображать сигнал в виде столбика с зависимостью от напряжения? Загорелся светодиод - "есть сигнал", не горит - "нет сигнала", мне кажется, так проще.
Тогда зачем вам отображать сигнал в виде столбика с зависимостью от напряжения? Загорелся светодиод - "есть сигнал", не горит - "нет сигнала", мне кажется, так проще.
именно
а надо видно и далеко - вместо матрицы поставить 7 сигментное тобло высотой 10см - видно будет очень далеко
ааааа а тут есть еще один итересный опыт , на вход мултика вешаем оптопару на вход опто пары вешаем диоднай мостик на диодный мотик лампочку от галогенки в итоге имеем нагрузку 5 ампер , а 5 ампер в случае если попаду на плюс разгрузит и не будет кз а если на проводе висит моторчик или реле по длине столбика узна что там что тоесть ) , заморочился скажете вы , но поверьте очень хорошая помогайка ,
так у меня в планах сделать дуликат матрици только по радио каналу , но мне одо этого рости придеться , идеи надо реализовывать , темболее это инструмент ) , ребят вы мне преложили кучу вариантов , что есть какаято трудность вывода циферек ?
а я почему то думал что столбики это какойто ад будет ) для меня это два дня назад было что то сверх естественное , как бы и сейчас не все понятно но разобраться и последовательность действи разберу точно ,
радиоканал - это пара приёмник и передатчик и родная библиотека VirtualWire - с одной стороны передаём полтора байта (адрес столбца и значение) - 5-10 строчек, с другой - парсить текст и выводить в матрицу (тоже десяток- строк). Правда, это не самый лучший радиоканал за 70 рублей - критичен к расположению антенн и обилию железа.
пок не понятно как првязать столбики хотя их массив то уже есть , я думаю что нужно обращаться одновременно ко обоим или же отделить первые точки столбиков а кним привязатся ,
Первая и вторая матрицы у вас используются для вывода столбиков. Используйте третью матрицу для вывода десятков (т.е. выводим на ней 1, если число >9, иначе - пусто), а четвертую - для единиц.
Что касается синхронности... Я пока туманно себе предствавляю, как оно должно в итоге выглядеть в реальности, если каналов 16, одновременно сигнал может быть на нескольких и, тут самое главное, эти несколько номеров каналов надо как-то показывать.
заменить их на числовые индикаторы - 2 по 8 знаков также на мах7219
код вообще не изменится! - но у вас будет крупная четкая картинка с номерами!! которую будет четко видно за 5-10 и более метров (цифру то можно сделать любого размера)
при этом даже код почти не надо будет менять! заменить только вывод столбца на вывод символа ПРОФИТ!
И как вы предлагаете отображать все эти 16 чисел? По-очереди? Но тогда, чтобы хоть что-то разглядеть в этой карусели смены чисел, надо после каждого числа делать хотя бы секундную паузу. А, пока будет длиться пауза, то даже на том канале, номер которого отображается в данный момент, сигнал может исчезнуть.
Конечно, программно это все реализуемо, но воспринимать такую информацию будет проблематично.
Самый простой и эффективный вариант, сделать табло хоть метр в длину, поделить его на 16 ячеек (ячейки при этом будут не такими уж и большими, как может показаться - всего около 6 см шириной), в каждой ячейке лампочка или более менее мощный светодиод (или несколько обычных). Накрывается все это хозяйство оргстеклом с нанесенными числами, соответствующими номерам каналов. За 12 метров будет и видно хорошо, и не будет мешанины из цифр.
Там много чего не так.
46 строку нужно писать так:
LC.setColumn(i / 8, i % 8, 255 >> (8 - readMux(i)));
Если же считаете, что LC.setColumn более уместна в функции readMux() (как в коде из сообщения #141), то тогда уж ее там стоит записать так:
LC.setColumn(channel / 8, channel % 8, 255 >> (8 - val));
знаете я сейчас на стадии медведь на велосепеде который в страшных снах и видеть не мог это бесово колесо с едушкой , есть у меня товарщь , чтоб его черти на свороде жарили без масла , подсул мне эту штуковину типа ардуино две недели назад , паскуда , я все это время по два часа сплю , так что извените за мою тупость , я даже не совсем понимаю в данный момент последовательности вот усилино пытаюсь разобраться , а при мысли что еще и цыфры вывести еще в оморк падаю , да так бьюсь головой что клавиши с клавиатуры разлетаються , да еще и кот паскуда зактывает их под холодильник пока обморчном состоянии , и вот как тут сосредочиться , ведь нормальные же мужики водку пью и по бабам ходят , да нет ардуино сцуко
Может тогда стоило сначала помигать светодиодом, почитать что-нибудь, хотя бы справочник по языку http://arduino.ru/Reference . Он тут правда немного урезан, больше инфо есть тут https://www.arduino.cc/reference/en/ (на английском) или на русском, например, тут:
http://arduino.su/Reference
https://doc.arduino.ua/ru/prog/
http://wikihandbk.com/wiki/Arduino:%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%...
а вот так нормально?
а в 49 строчке
if
(pos == 8) pos = 0; разве
if
(pos == 16)
должно быть ?а вот так нормально?
Нет. Куча лишнего и непонятного.
1) Строк 10, 11 не надо.
2) Зачем нужен массив dataarr[]? Вы туда пытаетесь (пока безуспешно) сохранять значения со входа. Вы планируете пользоваться этими значениями в будущем?
3) Замечания относительно constrain и map вы почему-то упорно игнорируете.
Продолжение следует...
что еще не так ?
а вот так нормально?
Нет. Куча лишнего и непонятного.
1) Строк 10, 11 не надо.
2) Зачем нужен массив dataarr[]? Вы туда пытаетесь (пока безуспешно) сохранять значения со входа. Вы планируете пользоваться этими значениями в будущем?
3) Замечания относительно constrain и map вы почему-то упорно игнорируете.
Продолжение следует...
вы и дальше будете читать через строчку?
http://arduino.ru/forum/programmirovanie/led-matritsa-max7219-maxmatrixl...
http://arduino.ru/forum/programmirovanie/led-matritsa-max7219-maxmatrixl...
вы это намеренно проигнорили?
и весь код себе переломали
толку от строк от 68 до 93 нет никакого - это просто незадействованный баласт
а на выход вы даете вообще с пина на прямую значение
Попробуйте так:
upd. Исправил опечатку в коде.
Ребят тлко не бейте , но что с ними не так то , мап это диапозон а констреин чтоб за пределы не выходили значения , я не прав? или с чем их поменя , я не могу понять то, извините
я бы еще заменил
LC.setColumn(channel / 8, channel % 8, 255 >> (8 - val));
channel++
на
LC.setColumn(channel / 8, ++channel % 8, 255 >> (8 - val));
//поправил
Ребят тлко не бейте , но что с ними не так то , мап это диапозон а констреин чтоб за пределы не выходили значения , я не прав? или с чем их поменя , я не могу понять то, извините
вы просто запутались в последовательности выполнения действий в коде - и это уже не однократно
вы всё время пытаетесь вначале съесть яблоко, а потом только сорвать или еще хуже, вынуть огрызок из несуществующего яблока и удивляетесь, что он какойто странный :)
просто не спешити, используёте комментариев больше для наглядности
ну и выделяйте содержимое блоков отступами - это тоже помогает в наглядности
Пробуйте мой код.
Вы правильно понимаете, constrain - это чтобы ограничить значения переменной, а map - это преобразование переменной из одного диапазона в другой. Только в вашем случае изначальный диапазон значительно шире получаемого. Поэтому, правильней сначала разобраться со считанным со входа значением, а потом уже переводить его в нужный диапазон.
я бы еще заменил
LC.setColumn(channel / 8, channel % 8, 255 >> (8 - val));
channel++
на
LC.setColumn(channel / 8, ++channel % 8, 255 >> (8 - val));
//поправил
Не надо запутывать Jenek_Anapa окончательно, пускай будет как есть, так ему будет проще понять. Ведь строки 46-49 тоже можно в одну слепить. Но код от этого читабельней не станет.
ДА ЛАДНО , ВсЕ так просто и работает? да как так то ? у вас ученые степени чтоль? Да вы кто вы там таки то вообще? Я в шоке если честно
ладно не судите строго , я как то привык знания добывать с помощь заобрать готовое ипонять как оно работет , вот это меня и подводит очень часто , Подскажите следующее , вот допустим я хочу теперь к каждому столбику привязать цыфру , тоесть номер , кторый будет высвечиваться на третей и четвертой матрице а если столбиков будет больше чтобы номера чередовались по кругу , раскожите мне последовательность дествей , верне как разумней делать порядок действий , и я вам очень благодарен за то что возитесь со мной
Что этот номер будет значить?
номер пина мультика или же ноамер столбика матрици , но номер будет появляться только тогда если хоть одна точка из столбика зажгеться , если загутся два столбика (сигнал придет с двух пинов ) то цыфры чередуються тех номеров которым соответствуют столбики
А смысл в этом есть? Ведь каждый столбик имеет фиксированное положение. Проще на лицевой панеле под каждым из них нарисовать его номер.
смысл есть , в первую очередь научиться , я делаю себе помогайку , занимаюсь я автоэлектроникой большегрузов и спец техникой , в основном автобусами , очень часто приходиться вызванивать пучки проводов , а так упрощаеться , я тоже думал просто оставить столбики но они очень мелкие подписывать и приглядываться как то не с руки , да и к тому же , это ж луче чем дурака валять )
идеальны вариант конечно же сделать дублирующее табло по ради каналу , но мне к этому очень долго идти придеться , но тем немение , опыт не помешает такой да и много где приготься еще
Понятно. Врядли будет информативно. А если сигналов будет не один-два, а пять, десять,... все шестнадцать? А если сигнал будет коротким, прошел импульс и все?
И почему матрицы? Я бы делал на отдельных светодиодах. Их разнести по панели можно и подписать нормально.
а помоему очень информативно , допустим из практики обычно из пучка 16 проводом допустим натыкаешься один два , а на чет того что ипульс пришол и все я тоже думал и решил что можно пришить писщалку которая будет голосить с первых точек столбиков , я думаю это то что надо будет , а цыфры с 12 метров разглядеть думаю можно будет , автобусы примерно такой длины )
тогда лучше вам под каждой матрицец поставить 8 разрядный 7 сигментный индикатор также на мах7219
и каждая цифра будет соответствовать столбику матрицы
при этом весь код программы увеличится на 4 строчки
при этом эти табло можно поставить удаленно - соединение всего 4 провода
ну если просто светодиоды можно было бы и не замрачиваться с ардуинкой , а так вроде как компактно получаетьс я , мне нравиться )
Все-таки я не до конца понял. Устройство нужно для того, чтобы найти соответствующий конец кабеля или вам надо ловить и анализировать какие-то сигналы, которые уже бегают по этим кабелям (генерируются устройствами автомобиля)?
можно и так , надо подумать , мыслишка итересная , к сожалению у меня пока нет таких модулей , будем исходить из того что есть , и вывести цифру я думаю не сложно у меня гдето есть даже массив 16ти ричный для матрицы
просто ловить провода , у автобуса жгуты бывают проводов по 60 , на с пец технике коробки гидравлические с соленойдами по десятку инногда
Покрутил я в голове, как это можно было бы сделать... и что-то ничего не придумал.. Думал наклеить светофильтры на на матрицу, но как-то это на 12 метрах нечитаемо.
Я бы всё же сделал бы на управляемых светодиодах WS2812 - они разноцветные и большие, полоски можно нарезать любой длины. Опять же для начинающего это красиво и наглядно.
https://www.youtube.com/watch?time_continue=3&v=jbNSa695bVo
Тогда зачем вам отображать сигнал в виде столбика с зависимостью от напряжения? Загорелся светодиод - "есть сигнал", не горит - "нет сигнала", мне кажется, так проще.
Тогда зачем вам отображать сигнал в виде столбика с зависимостью от напряжения? Загорелся светодиод - "есть сигнал", не горит - "нет сигнала", мне кажется, так проще.
именно
а надо видно и далеко - вместо матрицы поставить 7 сигментное тобло высотой 10см - видно будет очень далеко
и просто выводить номер сканируемого пина
0-9 или 0-99 если 2 символа
ааааа а тут есть еще один итересный опыт , на вход мултика вешаем оптопару на вход опто пары вешаем диоднай мостик на диодный мотик лампочку от галогенки в итоге имеем нагрузку 5 ампер , а 5 ампер в случае если попаду на плюс разгрузит и не будет кз а если на проводе висит моторчик или реле по длине столбика узна что там что тоесть ) , заморочился скажете вы , но поверьте очень хорошая помогайка ,
так у меня в планах сделать дуликат матрици только по радио каналу , но мне одо этого рости придеться , идеи надо реализовывать , темболее это инструмент ) , ребят вы мне преложили кучу вариантов , что есть какаято трудность вывода циферек ?
а я почему то думал что столбики это какойто ад будет ) для меня это два дня назад было что то сверх естественное , как бы и сейчас не все понятно но разобраться и последовательность действи разберу точно ,
есть какаято трудность вывода циферек ?
Смотря для кого, но вообще-то нет. Пример, как выводить цифры, у вас есть. Надо будет всего-лишь скрестить ежа и ужа.
радиоканал - это пара приёмник и передатчик и родная библиотека VirtualWire - с одной стороны передаём полтора байта (адрес столбца и значение) - 5-10 строчек, с другой - парсить текст и выводить в матрицу (тоже десяток- строк). Правда, это не самый лучший радиоканал за 70 рублей - критичен к расположению антенн и обилию железа.
http://zelectro.cc/arduino-radio-transmitter-receiver
я попробую разобраться , сначало надо разобраться с тем что есть там принцип почти такой же
пок не понятно как првязать столбики хотя их массив то уже есть , я думаю что нужно обращаться одновременно ко обоим или же отделить первые точки столбиков а кним привязатся ,
Ничего не понял.
мне нужно с начало синхронизировать два буфера , что бы циыфры и столбики крутились синхронно
Первая и вторая матрицы у вас используются для вывода столбиков. Используйте третью матрицу для вывода десятков (т.е. выводим на ней 1, если число >9, иначе - пусто), а четвертую - для единиц.
Что касается синхронности... Я пока туманно себе предствавляю, как оно должно в итоге выглядеть в реальности, если каналов 16, одновременно сигнал может быть на нескольких и, тут самое главное, эти несколько номеров каналов надо как-то показывать.
На скольки каналах могут быть одновременно сигналы?
а это важно ? а если на всех 16ти ?
я вообще не понимаю зачем матрицы!!
заменить их на числовые индикаторы - 2 по 8 знаков также на мах7219
код вообще не изменится! - но у вас будет крупная четкая картинка с номерами!! которую будет четко видно за 5-10 и более метров (цифру то можно сделать любого размера)
при этом даже код почти не надо будет менять! заменить только вывод столбца на вывод символа ПРОФИТ!
компактность и радио канал в перспективе с такойже матрицей
а это важно ? а если на всех 16ти ?
И как вы предлагаете отображать все эти 16 чисел? По-очереди? Но тогда, чтобы хоть что-то разглядеть в этой карусели смены чисел, надо после каждого числа делать хотя бы секундную паузу. А, пока будет длиться пауза, то даже на том канале, номер которого отображается в данный момент, сигнал может исчезнуть.
Конечно, программно это все реализуемо, но воспринимать такую информацию будет проблематично.
Самый простой и эффективный вариант, сделать табло хоть метр в длину, поделить его на 16 ячеек (ячейки при этом будут не такими уж и большими, как может показаться - всего около 6 см шириной), в каждой ячейке лампочка или более менее мощный светодиод (или несколько обычных). Накрывается все это хозяйство оргстеклом с нанесенными числами, соответствующими номерам каналов. За 12 метров будет и видно хорошо, и не будет мешанины из цифр.