Коротко: точную комбинацию светодиодов и пинов без таблицы назвать нельзя — пришлите скриншот таблицы. Но принцип решения такой.
- Рассчитайте резистор для каждого светодиода
На резисторе падает: \[ U_R=U_{\text{пит}}-U_{\text{св}}=5-3=2\ \text{В} \] \[ R=\frac{U_R}{I} \]
Обычно берут ток светодиода 10–20 мА:
| Ток | Сопротивление |
|---|---|
| 5 мА | 400 Ом |
| 10 мА | 200 Ом |
| 15 мА | 133 Ом |
| 20 мА | 100 Ом |
Если в задании не указан ток, чаще используют около 10 мА и резистор 220 Ом — он безопаснее. Для 20 мА подойдёт 100–120 Ом. Напрямую к 5 В светодиод на 3 В не подключайте.
- Подключение
Вывод приёмника → резистор → анод светодиода, катод → GND.
Если светодиодный модуль активного низкого уровня, логика будет обратной: гореть он будет при LOW.
- Как запрограммировать
Таблицу удобно превратить в двоичную маску:1 — светодиод должен гореть, 0 — нет.
Например, если LED1 — младший бит, то маска:
\[
M=\sum 2^{i-1}
\]
для номеров горящих светодиодов.
В передатчике формируется и отправляется эта маска, а на приёмнике по каждому биту выставляется нужный выход:
const uint8_t ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9}; // заменить по схеме
const uint8_t mask = 0b00000000; // вставить маску из таблицы
void setup() {
for (int i = 0; i < 8; i++) pinMode(ledPin[i], OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPin[i], bitRead(mask, i));
}
}
Проверка: если горит не тот светодиод — проверьте соответствие «номер LED → номер пина» и порядок битов. Если не горит совсем — полярность светодиода, резистор или общий GND.
Пришлите таблицу с номерами светодиодов и выводами — тогда дам точную маску, номиналы резисторов и готовый код.
