Увеличьте количество цифровых выводов
Есть много постов, в которых объясняется, как использовать больше, чем просто стандартные выводы на различных arduinos, но ни один из них не объясняет должным образом ограничения и проблемы.
Arduino Uno:
1.Вы можете использовать аналоговые контакты
Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5
digitalWrite(14,HIGH);
or
digitalWrite(A0,HIGH);
2. Вы не можете использовать оба SDA, SCL и A4, A5, так как они в основном одинаковы (18,19).
3.Вы также можете использовать TX / RX.
«Не делай этого, ты нарушаешь последовательную связь ...»
«Никогда не используйте контакты 0 и 1»
«Вы не можете использовать контакты TX / Rx»
Вы можете ... но вы должны принять меры предосторожности. Какие?
Он должен иметь программный серийный номер через USB, верно?
Или я сломаю USB серийник?
Существуют ли внутренние проблемы с чипом, если я использую TX / RX?
Как я использую эти выводы TX / RX в коде, который я, вероятно, не должен использовать Serial.print()
?
Что произойдет, если я забуду удалить Serial.print()
после загрузки кода, который использует контакты 0,1?
Как сделать аппаратный сброс arduino / bootloader, если что-то пойдет не так?
Поскольку существуют различные другие Arduino, в которых используются разные чипы, действительно ли вышеуказанное действительно для всех чипов Atmel?
Итак, что я должен знать, прежде чем использовать эти TX / RX или также, возможно, другие аналоговые контакты?
Существуют дешевые регистраторы сдвига, драйверы pwm, драйверы светодиодов, spi, i2c и многое другое для расширения вашего ввода / вывода
Но если нет больших проблем, это означает, что у Arduino есть 20 выводов ввода / вывода ...
Вы можете теоретически контролировать:
17x3 = 51 = 17 RGB leds (multiplexing, pwm sourcing&sinking);
14x6 = 84 leds (multiplexing, pwm on 6 rows/colums );
10x10 = 100 leds (multiplexing, high low);
20x(20-1) = 380 leds (charlieplexing, high low);
// yes it would flicker
Поправьте меня если я ошибаюсь. Это означает, что вы можете контролировать 380 "что угодно", используя диоды и один Arduino.
источник
Я не могу комментировать из-за недостаточной репутации, но хочу отметить, что в распиновке ОП есть хотя бы один неверный вывод!
PB6 должен быть PB5
Я потратил довольно много времени, пытаясь понять, почему я не вижу SCK в области видимости (шина SPI). Я работал на низком уровне, а не с IDE.
Поскольку это первая картина, которая появляется, когда я гуглюсь, я хотел избежать такой же проблемы для других ...
источник
Во-первых, цифра 380 является правильной для 20 контактов (20 2 - 20), однако контакты 0 и 1 подключены к подтягивающим резисторам на Atmega16U2, поэтому они никогда не имеют напряжения 0 В. Если вы загрузите пустой эскиз, вы будете измерять 5 В на контактах 0 и 1.
Во-вторых, вы не можете управлять 380 "любыми", вы можете управлять 380 светодиодами через Чарлиплексирование. Свойство светодиода, что ток проходит только один путь, важно для его работы.
Смежный вопрос Есть ли способ иметь более 14 выходных контактов на Arduino?
источник