Нужно много выводов GPIO на Arduino Mega — какие ограничения?
Я хотел бы использовать как можно больше выводов GPIO на Arduino Mega, особенно с (неправильным) использованием pinMode(x,INPUT); и pinMode(x,INPUT_PULLUP); для достижения двух целей одновременно — слабого нажатия на что-либо еще с помощью вывода и измерения там логического уровня с помощью digitalRead(x), чтобы определить, является ли это «что-либо еще» входом или выходом какого-либо логического уровня.
Также мне нужен I2C, последовательный порт через USB и ничего больше.
На Arduino UNO/nano/micro/pro всё работает отлично с цифровыми выводами (кроме D0/D1 (RX/TX), D13 (светодиод как сильный подтягивающий), A4/A5 (I2C) и A6/A7, которые не являются цифровыми портами ввода-вывода). Проблема в ограниченном количестве выводов, поэтому я купил ArduinoMega.
Вопрос - какие пины можно использовать таким образом? На данный момент мне известны D0/D1 (RX/TX), D20/D21 (I2C) и D13 (LED). Остальные (D2-D12, D14-D19, D22-D52 и A0-A15) кажутся приемлемыми и пригодными к использованию. Или я что-то еще упускаю?
Есть ли какие-то библиотеки/объекты, которые следует отключить, чтобы они не мешали моему скрипту?
Спасибо.
@gilhad, 👍0
Обсуждение1 ответ
Все эти выводы должны быть доступны. Но если вы хотите использовать прерывания по изменению состояния выводов, необходимо проверить, какие выводы доступны.
Не более 2 прерываний на выводах, и в любом случае это не так уж и нужно (только чтение кнопок, digitalRead может работать так же хорошо, так как есть много точек, которые я могу регулярно проверять), @gilhad
- Использование RFID-RC522 с другими контактами
- Почему мой код прерывания не работает?
- Выход 3,3 В при установке вывода на высокий уровень
- Использование модуля JYETech 2.4 Inch LCD Display Screen Module с Arduino?
- Регистр ATmega 32A и 2560 R3 для сопоставления контактов
- Использование одних и тех же выводов GPIO для управления несколькими шаговыми приводами
- Подключение 2-контактного разъема JST PH к Arduino Mega
- Можете ли вы использовать 128-контактный ЖК-дисплей на atMega?
"D13 (светодиод как сильный подтягивающий резистор)". Вас здесь дезинформируют. D13 также подключен к входу компаратора (LM358), который затем управляет светодиодом. Светодиод не обеспечивает сильного подтягивания резистора. Если вы не используете I2C или SPI, эти выводы также доступны., @CrossRoads
Я смотрел, но это зависит от версии. https://store.arduino.cc/arduino-uno-smd-rev3 всё ещё показывает прямое подключение светодиода и резистора к D13. https://store.arduino.cc/arduino-uno-rev3 есть компаратор, мой старый UNO (с DIP-корпусом) тоже имеет резистор и светодиод, у Nano тоже есть светодиод и резистор, но нет компаратора. Так что компаратор есть только в некоторых версиях некоторых типов., @gilhad
В моем последнем проекте были проблемы именно по этой причине, и мне пришлось перераспределить использование выводов, чтобы избежать D13 именно по этой причине (неподключенный D13 с INPUT_PULLUP показывал на вольтметре около 1,3 В, в то время как все остальные показывали более 4,5 В), так что это не просто вопрос какой-то PDF-информации, но и реальные физические единицы измерения, которые это доказывают., @gilhad