Ви не увійшли.
Ну і прекрасно, раз розібрався. Про яку суму була річ, якщо не секрет? Бо, як на мій погляд, підказка, щоб розібратись, не вартує нічого. А уточнення ТЗ це вже робота.
Дякую, розібрався.
Жаль, що не цікаво.
Тема закрита
khalimon пише:Якщо можна, напишіть це на с++ з урахуванням синтаксису. Якщо запрацює, я віддячу
Вибачте, мені це не цікаво. Тут я не заради заробітку, принаймні не зараз. Задача тривіальна, може хтось зацікавиться, у кого є час та натхнення. Успіхів у пошуку.
Є chatgpt.
Лабати код без чіткого ТЗ, зайняття на любителя. Це насправді займе х3 часу. І писати під залізо, якого немає на столі, це теж потребує х3. Потім при розрахунках обом сторонам буде незручно. Одному буде здаватись, що переробив, іншому що переплатив .
Якщо можна, напишіть це на с++ з урахуванням синтаксису. Якщо запрацює, я віддячу
Вибачте, мені це не цікаво. Тут я не заради заробітку, принаймні не зараз. Задача тривіальна, може хтось зацікавиться, у кого є час та натхнення. Успіхів у пошуку.
Планую змодулювати на ардуіно нано в ардуіно IDE . Якщо можна, напишіть це на с++ з урахуванням синтаксису. Якщо запрацює, я віддячу
Нехай у вас є масив бітового зображення:
uint8_t M[8] = { ... };
Лінію даних назвем DS, пін тактування/защолки - CLK, пін OE - OE.
Алгоритм керування:
1. Конфігуруєте піни DS, CLK та OE в output.
2. Ініціалізуєте лічильник секцій: uint8_t section=0
3. Ініціалізуєте маску секцій: uint8_t mask = 0x80Планую змодулювати на ардуіні нано в ардуіно ІIDE. Якщо можна, напишіть цей приклад на с++, щоб я міг вставити та перевірити. Якщо запрацює, я відлячу
Приблизно раз на мілісекунду, можна і частіше:
1. OE = High
2. Виводите 16 біт на лінію даних з тактуванням. Ці 16 біт складаються з байта масиву зображення та інвертованої маски секції. Значення, що виводиться (LSB first):uint16_t val = (~mask << 8) | M[section]
for i від 0 до 15 {
CLK = High
DS = val & 1;
CLK = Low;
val >>= 1;
}
CLK=High3. OE = Low
4. section = (section + 1) % 8
5. mask >>= 1; if (mask==0) mask = 0x80;
За ті гроші, що ви заплатите виконавцю, дешевше буде поїхати на радіоринок і купити готовий виріб. Упарюватись в самостійну розробку має смисл або коли планується серія виробів, або як хоббі.
.
Напишіть, як з вами зв'язатись.
Та навіщо? Пишіть тут, якщо будуть якісь питання. Звісно, є ймовірність, що міг щось не врахувати чи переплутати.
Напишіть, як з вами зв'язатись. Сьогодні або завтра перевірю.
Є готова промислова індикація, яку змінювати, перепаювати не можна. З самого початку це я обізначив.
Питання ж було поставлене так, наче ви вже знаєте як керувати схемою, де "Зазвичай задіяні піни 14 ( данні ), 11 та 12 ( защьолка та тактування )."
Те що є в інтернеті є, не працює повинним чином, тому що там апаратно по іншому реалізовано.
Тобто проблема виникла з тим, що лінія тактування інвертована транзистором, і замість Low її потрібно ставити в High, а замість High - в Low?
я хочу отримати алгоритм керування.
Нехай у вас є масив бітового зображення:
uint8_t M[8] = { ... };
Лінію даних назвем DS, пін тактування/защолки - CLK, пін OE - OE.
Алгоритм керування:
1. Конфігуруєте піни DS, CLK та OE в output.
2. Ініціалізуєте лічильник секцій: uint8_t section=0
3. Ініціалізуєте маску секцій: uint8_t mask = 0x80
Приблизно раз на мілісекунду, можна і частіше:
1. OE = High
2. Виводите 16 біт на лінію даних з тактуванням. Ці 16 біт складаються з байта масиву зображення та інвертованої маски секції. Значення, що виводиться (LSB first):
uint16_t val = (~mask << 8) | M[section]
for i від 0 до 15 {
CLK = High
DS = val & 1;
CLK = Low;
val >>= 1;
}
CLK=High
3. OE = Low
4. section = (section + 1) % 8
5. mask >>= 1; if (mask==0) mask = 0x80;
Є готова промислова індикація, яку змінювати, перепаювати не можна. З самого початку це я обізначив. На прикладі засвітити один світлодіод, або зробити бігучу стрічку або ще щось подібне, я хочу отримати алгоритм керування. Те що є в інтернеті є, не працює повинним чином, тому що там апаратно по іншому реалізовано.
до речі, так. Воно, звичайно, ці транзистори коштують майже нічого, але ж і готовий модуль на пром.юа 56 грн коштує.
Хіба що вподобання дивні і незвичайні.
Може замість матриці - шматриці в процесі обдумування перейдете на rgb стрічку.
Якщо задача - індикація полем світлодіодів, чому б тоді не взяти MAX7219 чи MAX7221, замість того щоб городити город з транзисторів та 74HC595.
Без чіткого ТЗ - результати хз. А коли сформулюєте що саме ви хочете отримати і чим не влаштовує існуюче рішення - ви і самі напишете ту програму. Може замість матриці - шматриці в процесі обдумування перейдете на rgb стрічку.
Щоб увімкнути світлодіод треба на першому чіпі ( де транзистори) подати лог одиницю на відповідний пін ( щоб увімкнувся транзистор та подався плюс живлення )
Щоб увімкнувся PNP транзистор, струм має потекти з емітера в базу, тобто на базу потрібно подати нуль. Коли на емітері високий рівень (плюс живлення) і на базі високий рівень, то струм емітер-база не тече, транзистор закритий.
З цим ясно, питання в керуванні - тоб то алгоритм ( код програми/ скетч )
Ну ви навіть не сказали, що саме ви хочете відображати, звідки програма має брати це зображення і які функції виконувати ще.
Якщо просто показати яку небудь картинку 8x8, то можна обійтись і чисто ардуінівськими digitalWrite() та delay().
Якщо програма має виконувати ще щось паралельно, можна реалізувати конечний автомат на millis(). Можна задіяти апаратний SPI контролер, щоб не тіліпати піни бітбенгом. Можна задіяти другий апаратний таймер, прямий запис в GPIO, якщо критичні таймінги. Варіантів реалізації тут безліч.
Алгоритм уже описаний вище. Код програми/скетч - це реалізація алгоритма. За основу можете взяти будь-який скетч для "arduino LED matrix 8x8 74HC595" і адаптувати для свєї схеми.
Готов віддячити грошима за рішення..
То ви просто шукаєте виконавця? Так зразу б і написали, може когось зацікавить.
Щоб увімкнути світлодіод треба на першому чіпі ( де транзистори) подати лог одиницю на відповідний пін ( щоб увімкнувся транзистор та подався плюс живлення ), а на другому чіпі ( де резістори ) подати лог нуль, щоб подався мінус.
З цим ясно, питання в керуванні - тоб то алгоритм ( код програми/ скетч )
Готов віддячити грошима за рішення..