Неверно. Оно приводить и к тому и к другому. И тут "искать баланс". Чем дольше вы держите строку включенной тем он светит ярче, но при этом тем дольше выключенными являеются другие строки (и это в том числе "когда мы светим другими").
Если у вас задержка, для каждой строки XXX микросекунд, то выходит что мы XXX времени светим и 7*XXX не светим (занимаемся другими строками). Когда 7*XXX становится слишком большим, то инерция зрения не справляется и картинка распадается на "мигания".
Это я понимаю(строки в таком случае будут по очереди мигать, а тут мигают все вместе). Непонятно почему с IF'ами(которые дают не явную задержку), или с прямым указанием задержки delayMicroseconds(1); все работает нормально, а если задержку извлекать из массива, или умножатьSV на 10, то начинает мигать.
Так это дело не в коде, а в вас, а точнее в вашем зрении, у разных людей это воспринимается по разному, кто видит это мерцание, а кто-то нет. И когда взгляд отводите получаются шлейфы, да? Тут выход один - увеличивать частоту кадров, отказавшись от digitalWrite и pinMode и напрямую управлять регистрами портов.
Согласен. Но у ULN это по "by design", но ведь это не означает что это "обязательно нужен Z". С digitalWrite работать будет?
P.S. Я понимаю что проблема не в этом, просто "режет глаз" :)
Можно и с digitalWrite, но логика другая будет, в моем случае если поставить ULN, то нужно будет просто заменить pinMode на digitalWrite, поэтому этим способом и пользуюсь - он более логичен. А тот что описан здесь по-моему называется через ж..пу.
Согласен. Но у ULN это по "by design", но ведь это не означает что это "обязательно нужен Z". С digitalWrite работать будет?
P.S. Я понимаю что проблема не в этом, просто "режет глаз" :)
Можно и с digitalWrite, но логика другая будет, в моем случае если поставить ULN, то нужно будет просто заменить pinMode на digitalWrite, поэтому этим способом и пользуюсь - он более логичен. А тот что описан здесь по-моему называется через ж..пу.
А в чем это "другая логика" будет проявлятся? В том что HIGH/LOW будет инвертирован? Или еще что-то что я не углядел? Если "да", то чем замена pinMode->digitalWrite легче чем замена HIGH->LOW? (на крайняк можно и digitalWrite(!HIGH) сделать, обойтись вставкой одного симола. На крайняк, дефайн объявить и его менять (имхо самое "то", выносить такие вещи в конфиг).
Не, конечно "дело привычки". Лично мне что-то включать с помощью pinMode кажется намного более алогичным, чем использовать для этого digitalWrite (пусть и инвертированный). Но "доказать" это логически я, конечно, не смогу. Хотя.... вот если смотреть на код с точки зрения "требуемый уровень подготовки для понимания", то pinMode не каждый новичек поймет. а "Z-состояние" вообще в коматоз может вогнать (а если вспомнить страшное слово ВЫСОКОИМПЕДАНСНОЕ, то ваще... ;) . Воспримут это как "магия".
Дело в том что этот способ возможен только потому, что диод имеет полярность и при обратной полюсации имеет высокое сопротивление, иначе бы получилась ж.. вот поэтому он более алогичен. В общем это дело вкуса.
Так это дело не в коде, а в вас, а точнее в вашем зрении, у разных людей это воспринимается по разному, кто видит это мерцание, а кто-то нет. И когда взгляд отводите получаются шлейфы, да? Тут выход один - увеличивать частоту кадров, отказавшись от digitalWrite и pinMode и напрямую управлять регистрами портов.
Так почему во мне? Я ж говорю, что с IF'ами-то не мигает, а тут такое мигание как будто в скетче есть такой код
Так а вы посмотрите на TEST, первая строка и должна вся светиться, подредактируйте как надо, а равномерное свечение можете только вы сделать, просто изменяйте расчет задержек SV*2+1, 18-(SV*2+1) так как нам матрицу не видно. То есть вам нужно сделать такой расчет, что бы 1 светодиод в линии светился с такой же яркостью как и 8. А то что 8 светодиодов в одной линии светятся тускло это нормально, это и есть та самая плата за отказ от ULN.
Ну это ладно, у меня через IF нормально работает. У меня другой вопрос назрел: на компьютере из программы, в отдельном потоке, в дуиду передаются строковые данные типа "0001100000111000011110000001100000011000000110000111111001111110" для отрисовки таймера на матрице. Так вот, как мне отправить другую строку, но так, чтобы эта строка не спуталась со строкой таймера? Т.е. как разграничить строки?
аноды и катоды в такой матрице симетричны по нагрузке. В чем смысл катоды подключать к дарлингтонам в то время как аноды подключены к МК напрямую? Если ток через одну линейку предполагается более 20ма то и аноды надо ключами подключать
Вы бредите - они не симеричны по нагрузке. Это динамическая индикация. А почему вы бредите разберитесь сами. Мне время на это тратить не хочется.
если у вас нет времени - не отвечайте, кто то другой развеет мои заблуждения
динамическая суть индикации никак не влияет на необходимость соблюдать ограничения по току на выходах МК
возьмем для упрощения ситуацию когда включен один светодиод (или когда включены все) - ток будет протекать от минуса через uln и далее к плюсу через выход мк. Ток протекающий через uln будет равнятся току через МК
смысл усиливать нижнее плечо, если верхнее имеет тот же ток?
В даташите на Мк нет различия по максимальному току на плюс или минус.
в вашей схеме вы предполагаете, что ток на минус МК не потянет, а на плюс потянет - ошибка
Вы видимо скопировали uln из схемы включения семисегиентного индикатора с общим катодом - там есть ассиметрия - например три цифры будет три провода на минус и 7 на плюс и такое включение имеет смысл. С матрицей ассиметрии нет - 8 на 8
Прежде чем делать такие безапелляционные щзаявления, иногда невредно включить головной мозг -)
Так ведь головной мозг, мы тоже включаем, обычно, в режиме динамической индикации :) Частично :)
На самом деле, тоже регулярно попадая глазами на эту картинку хочу завопить про "попалим выходы", но славо богу пока успевел перепроверить и вверх тему покрутить почитать. А через месяцок забывается и опять ловлю себя на порыве "предупредить" :) pattern matching срабатывает
Сначала прочитав сообщение поставил интонацию сообщения именно как заявление и ответил резко и наверно даже грубо, извиняюсь, потом перечитал и вроде сообщение похоже больше на вопрос, поэтому цитата разнится с моим постом.
Так ведь головной мозг, мы тоже включаем, обычно, в режиме динамической индикации :) Частично :)
На самом деле, тоже регулярно попадая глазами на эту картинку хочу завопить про "попалим выходы", но славо богу пока успевел перепроверить и вверх тему покрутить почитать. А через месяцок забывается и опять ловлю себя на порыве "предупредить" :) pattern matching срабатывает
спасибо за поддержку) вот и меня немного переклинило)
как прочитал про столбцы все понял - слово столбцы стало ключем доступа к основной части головного мозга)
аноды и катоды в такой матрице симетричны по нагрузке. В чем смысл катоды подключать к дарлингтонам в то время как аноды подключены к МК напрямую? Если ток через одну линейку предполагается более 20ма то и аноды надо ключами подключать
А в чём смысл подключать к дарлингтонам, если можно подключить к MAX72хх?
и не надо заморачиваться динамической индикацией с кучей выводов.
Когда я там писал последний комментарий, то ещё не вникал в скетч, а потом понял, что там каждая точка добавляется обновлением всего кадра, хотя её можно добавлять обновлением строки:
Неверно. Оно приводить и к тому и к другому. И тут "искать баланс". Чем дольше вы держите строку включенной тем он светит ярче, но при этом тем дольше выключенными являеются другие строки (и это в том числе "когда мы светим другими").
Если у вас задержка, для каждой строки XXX микросекунд, то выходит что мы XXX времени светим и 7*XXX не светим (занимаемся другими строками). Когда 7*XXX становится слишком большим, то инерция зрения не справляется и картинка распадается на "мигания".
Это я понимаю(строки в таком случае будут по очереди мигать, а тут мигают все вместе). Непонятно почему с IF'ами(которые дают не явную задержку), или с прямым указанием задержки delayMicroseconds(1); все работает нормально, а если задержку извлекать из массива, или умножать
SV на 10, то начинает мигать.
Как-то так:
Тоже мигает:(
2Максим: и все-таки муляет мне это pinMode в display. Там реально нужно Z-состояние или можно, все-таки на digitalWrite заменить?
Ну вот смотрите, как работает ULN? точно так же - или GND или Z-состояние, согласны? так вот и здесь тоже самое.
Ну а так что-нибудь изменилось?
вы код прям отсюда копируете?
2Максим: и все-таки муляет мне это pinMode в display. Там реально нужно Z-состояние или можно, все-таки на digitalWrite заменить?
Ну вот смотрите, как работает ULN? точно так же - или GND или Z-состояние, согласны? так вот и здесь тоже самое.
Согласен. Но у ULN это по "by design", но ведь это не означает что это "обязательно нужен Z". С digitalWrite работать будет?
P.S. Я понимаю что проблема не в этом, просто "режет глаз" :)
Ну а так что-нибудь изменилось?
Вот теперь не мигает:) Да, код копирую прямо от сюда через кнопку справа.
Так это дело не в коде, а в вас, а точнее в вашем зрении, у разных людей это воспринимается по разному, кто видит это мерцание, а кто-то нет. И когда взгляд отводите получаются шлейфы, да? Тут выход один - увеличивать частоту кадров, отказавшись от digitalWrite и pinMode и напрямую управлять регистрами портов.
Согласен. Но у ULN это по "by design", но ведь это не означает что это "обязательно нужен Z". С digitalWrite работать будет?
P.S. Я понимаю что проблема не в этом, просто "режет глаз" :)
Можно и с digitalWrite, но логика другая будет, в моем случае если поставить ULN, то нужно будет просто заменить pinMode на digitalWrite, поэтому этим способом и пользуюсь - он более логичен. А тот что описан здесь по-моему называется через ж..пу.
Согласен. Но у ULN это по "by design", но ведь это не означает что это "обязательно нужен Z". С digitalWrite работать будет?
P.S. Я понимаю что проблема не в этом, просто "режет глаз" :)
Можно и с digitalWrite, но логика другая будет, в моем случае если поставить ULN, то нужно будет просто заменить pinMode на digitalWrite, поэтому этим способом и пользуюсь - он более логичен. А тот что описан здесь по-моему называется через ж..пу.
А в чем это "другая логика" будет проявлятся? В том что HIGH/LOW будет инвертирован? Или еще что-то что я не углядел? Если "да", то чем замена pinMode->digitalWrite легче чем замена HIGH->LOW? (на крайняк можно и digitalWrite(!HIGH) сделать, обойтись вставкой одного симола. На крайняк, дефайн объявить и его менять (имхо самое "то", выносить такие вещи в конфиг).
Не, конечно "дело привычки". Лично мне что-то включать с помощью pinMode кажется намного более алогичным, чем использовать для этого digitalWrite (пусть и инвертированный). Но "доказать" это логически я, конечно, не смогу. Хотя.... вот если смотреть на код с точки зрения "требуемый уровень подготовки для понимания", то pinMode не каждый новичек поймет. а "Z-состояние" вообще в коматоз может вогнать (а если вспомнить страшное слово ВЫСОКОИМПЕДАНСНОЕ, то ваще... ;) . Воспримут это как "магия".
Дело в том что этот способ возможен только потому, что диод имеет полярность и при обратной полюсации имеет высокое сопротивление, иначе бы получилась ж.. вот поэтому он более алогичен. В общем это дело вкуса.
Напрямую в лоб, так думаю должно и ярко светить и не мигать.
Так это дело не в коде, а в вас, а точнее в вашем зрении, у разных людей это воспринимается по разному, кто видит это мерцание, а кто-то нет. И когда взгляд отводите получаются шлейфы, да? Тут выход один - увеличивать частоту кадров, отказавшись от digitalWrite и pinMode и напрямую управлять регистрами портов.
Так почему во мне? Я ж говорю, что с IF'ами-то не мигает, а тут такое мигание как будто в скетче есть такой код
Напрямую в лоб, так думаю должно и ярко светить и не мигать.
А так верхняя строчка светит тускло, нижние угловые светодиоды светят ярко, а диоды между ними чуть по тусклее.
Так а вы посмотрите на TEST, первая строка и должна вся светиться, подредактируйте как надо, а равномерное свечение можете только вы сделать, просто изменяйте расчет задержек SV*2+1, 18-(SV*2+1) так как нам матрицу не видно. То есть вам нужно сделать такой расчет, что бы 1 светодиод в линии светился с такой же яркостью как и 8. А то что 8 светодиодов в одной линии светятся тускло это нормально, это и есть та самая плата за отказ от ULN.
Ну да, на TEST смотрела. Верхняя строчка вопросов не вызывает, а вот c нижней не понятно:
>нижние угловые светодиоды светят ярко, а диоды между ними чуть по тусклее
Ну а если тест таким сделать, то что происходит?
А так нижние ярко горят, а остальные тускло.
А так нижние ярко горят, а остальные тускло.
Тут напрашиваются варианты:
Ну это ладно, у меня через IF нормально работает. У меня другой вопрос назрел: на компьютере из программы, в отдельном потоке, в дуиду передаются строковые данные типа "0001100000111000011110000001100000011000000110000111111001111110" для отрисовки таймера на матрице. Так вот, как мне отправить другую строку, но так, чтобы эта строка не спуталась со строкой таймера? Т.е. как разграничить строки?
Попытка подключить матрицу. http://arduino.ru/forum/obshchii/led-matrix-8x8-zazhech-opredelennye-svetodiody
Библиотека загружена
Загрузка кода
при проверке выдет:
Ошибка один - не надо напрямую подключать системные заголовочные файлы, если только точно не известно зачем именно это делается и что вызовет.
В данном случае неплохо бы прописать #include <arduino.h>
Ошибка два - английским по белому написано, что в последней строке не хватает закрывающей фигурной скобки.
Читать, что именно пишет компилятор - оно иногда полезно бывает -)
Правильно подключить.
аноды и катоды в такой матрице симетричны по нагрузке. В чем смысл катоды подключать к дарлингтонам в то время как аноды подключены к МК напрямую? Если ток через одну линейку предполагается более 20ма то и аноды надо ключами подключать
Они не симеричны по нагрузке. Это динамическая индикация. А почему разберитесь сами. Гугл в помощь.
Вы бредите - они не симеричны по нагрузке. Это динамическая индикация. А почему вы бредите разберитесь сами. Мне время на это тратить не хочется.
если у вас нет времени - не отвечайте, кто то другой развеет мои заблуждения
динамическая суть индикации никак не влияет на необходимость соблюдать ограничения по току на выходах МК
возьмем для упрощения ситуацию когда включен один светодиод (или когда включены все) - ток будет протекать от минуса через uln и далее к плюсу через выход мк. Ток протекающий через uln будет равнятся току через МК
смысл усиливать нижнее плечо, если верхнее имеет тот же ток?
В даташите на Мк нет различия по максимальному току на плюс или минус.
в вашей схеме вы предполагаете, что ток на минус МК не потянет, а на плюс потянет - ошибка
Вы видимо скопировали uln из схемы включения семисегиентного индикатора с общим катодом - там есть ассиметрия - например три цифры будет три провода на минус и 7 на плюс и такое включение имеет смысл. С матрицей ассиметрии нет - 8 на 8
Прежде чем делать такие безапелляционные щзаявления, иногда невредно включить головной мозг -)
hint: Динамическая индикация по столбцам. Какие, откуда и куда текут токи, когда включен столбец целиком?
Прежде чем делать такие безапелляционные щзаявления, иногда невредно включить головной мозг -)
hint: Динамическая индикация по столбцам. Какие, откуда и куда текут токи, когда включен столбец целиком?
если по столбцам тогда вы правы, тогда четкая ассиметрия на катоды
Прежде чем делать такие безапелляционные щзаявления, иногда невредно включить головной мозг -)
Так ведь головной мозг, мы тоже включаем, обычно, в режиме динамической индикации :) Частично :)
На самом деле, тоже регулярно попадая глазами на эту картинку хочу завопить про "попалим выходы", но славо богу пока успевел перепроверить и вверх тему покрутить почитать. А через месяцок забывается и опять ловлю себя на порыве "предупредить" :) pattern matching срабатывает
Сначала прочитав сообщение поставил интонацию сообщения именно как заявление и ответил резко и наверно даже грубо, извиняюсь, потом перечитал и вроде сообщение похоже больше на вопрос, поэтому цитата разнится с моим постом.
Так ведь головной мозг, мы тоже включаем, обычно, в режиме динамической индикации :) Частично :)
На самом деле, тоже регулярно попадая глазами на эту картинку хочу завопить про "попалим выходы", но славо богу пока успевел перепроверить и вверх тему покрутить почитать. А через месяцок забывается и опять ловлю себя на порыве "предупредить" :) pattern matching срабатывает
спасибо за поддержку) вот и меня немного переклинило)
как прочитал про столбцы все понял - слово столбцы стало ключем доступа к основной части головного мозга)
А как сделать чтобы матрицы менялись?
Правильно подключить.
аноды и катоды в такой матрице симетричны по нагрузке. В чем смысл катоды подключать к дарлингтонам в то время как аноды подключены к МК напрямую? Если ток через одну линейку предполагается более 20ма то и аноды надо ключами подключать
А в чём смысл подключать к дарлингтонам, если можно подключить к MAX72хх?
http://2150692.ru/faq/114-led-matrix-8x8
и не надо заморачиваться динамической индикацией с кучей выводов.
Когда я там писал последний комментарий, то ещё не вникал в скетч, а потом понял, что там каждая точка добавляется обновлением всего кадра, хотя её можно добавлять обновлением строки:
unsigned char disp2[16][2] = {
0x05, 0x40, // рисунок сердца по строкам (адрес строки, данные)
0x04, 0x40,
0x03, 0x80,
0x02, 0x80,
0x01, 0x40,
0x01, 0x60,
0x02, 0x90,
0x03, 0x88,
0x04, 0x44,
0x05, 0x44,
0x06, 0x08,
0x07, 0x10,
0x08, 0x20,
0x08, 0x60,
0x07, 0x90,
0x06, 0x88, // рисунок сердца по строкам (адрес строки, данные)
};