Почему некоторые контакты Arduino Nano (D3, D4, A3, A4, A6, A7) не могут быть установлены на высокий уровень?
Я сделал набросок для включения всех цифровых и аналоговых контактов и обнаружил, что некоторые контакты не работают должным образом. Примечание. Я вручную устанавливал перемычки с каждого цифрового и аналогового контактов (по одному) на резистор, светодиод и контакт GND.
Я заметил, что некоторые контакты не работали (D3, D4, A4, A6 и A7), а контакт A3 светился только наполовину. Я пробовал два разных Nano, и они работали одинаково (также контакт A3 с половинной интенсивностью).
Я также попробовал проволочные перемычки, непосредственно соприкасающиеся с контактами (без макетной платы между ними, чтобы исключить проблему с макетной платой). Такое же поведение (так что макетная плата в порядке).
Мои вопросы:
- Почему на контакты D3, D4, A4, A6 и A7 не подается напряжение VCC (3,3 В)?
- Как включить эти контакты?
- По какой причине контакт A3 мигает с половинной интенсивностью?
- Как полностью включить этот контакт?
- Дополнительный вопрос: я использовал числа, почему имена контактов A0..A7 и D0..D12 не определены в Arduino IDE?
Тестовый скетч:
const int NR_OF_PINS = 22;
int pins[NR_OF_PINS] =
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 A0 A1 A2 A3 A4 A5 A6 A7
{ 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26 };
void setup()
{
for (int n = 0; n < NR_OF_PINS; n++)
{
pinMode(pins[n], OUTPUT);
digitalWrite(pins[n], HIGH);
}
}
void loop()
{
}
@Michel Keijzers, 👍-1
Обсуждение1 ответ
Лучший ответ:
Вам не нужен массив, и ваш "базовый" вывод неправильный - вы начинаете с контакта 1, а не с контакта 0. Также контакты A6 и A7 могут быть только аналоговыми входами, а не цифровыми выходами.
Проще написать:
void setup() {
for (uint8_t i = 0; i < NUM_DIGITAL_PINS; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
}
}
void loop() {
}
Это будет корректно работать на всех платах Arduino независимо от количества контактов, поскольку определение платы определяет количество контактов, а контакты всегда последовательно нумеруются, начиная с 0.
Спасибо за ответ (кстати, в качестве побочного вопроса я заметил, что не объявлен NUM_ANALOG_PINS). Почему нет? (а также я думал, что аналоговые выводы можно использовать как цифровые, но не наоборот)., @Michel Keijzers
Он определяется как NUM_ANALOG_INPUTS
, а не NUM_ANALOG_PINS
., @Majenko
И NUM_DIGITAL_PINS
включает в себя все аналоговые выводы, которые могут быть цифровыми входами и выходами., @Majenko
спасибо (честно говоря, довольно запутанно, но, по крайней мере, теперь это более понятно). Однако у меня скорее так... сначала я думал, что мои паяльные работы - это бардак ;-), @Michel Keijzers
https://arduinoprosto.ru/q/36683/37523, @VE7JRO
@MichelKeijzers Ну, аналоговый вход может не быть физическим контактом. Существуют микросхемы со встроенными датчиками температуры (например), которые подключаются к ADC MUX, поэтому существует аналоговый вход, который подключается к этому датчику, но у него нет «контакта» как такового, поэтому их называют аналоговыми контактами. это неправильное название., @Majenko
@Majenko хорошо ясно (и звучит логично), у меня есть только Arduino и STM ;-) ... Кстати, только что протестировано, и в NUM_DIGITAL_PINS все цифровые контакты и аналоговые контакты [A0..A5] Контакты A6 и A7 только аналоговые ( или, по крайней мере, не в диапазоне NUM_DIGITAL_PINS)., @Michel Keijzers
- Питание светодиодной ленты - Сколько ампер?
- Миграция проекта Arduino Uno R3 в Wemos D1 R2 — проблемы с распиновкой
- Почему номера выводов диаграмм и кода отличаются друг от друга?
- Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?
- Arduino Nano (клон) не распознается
- Что произойдет с ардуино, если не использовать резистор со светодиодом?
- Есть ли функция Adafruit для инвертирования цветов моего экрана для языка Arduino?
- Arduino Nano использует контакты SPI в качестве контактов ввода-вывода? а еще можно сделать ISP?
А6 и А7 аналог только на классическом Nano. 3,3 В на Нано?, @Juraj
Также D0 - это контакт 0, а не контакт 1. Почему вы возитесь с массивом?, @Majenko
@Juraj Хорошо, спасибо, но другие аналоговые контакты работают (частично кроме A3)., @Michel Keijzers
ваш массив неверен. А0 это 13, @Juraj
@Majenko Да, я случайно поменял местами D0 и D1, мне нужен массив, потому что я хочу использовать их в цикле (не для моей тестовой программы, а в моей реальной программе)., @Michel Keijzers
вы используете номера контактов, недопустимые для Nano, вы пропускаете D3 и D4, @Juraj
@Juraj Да, теперь я заметил, что нумерация уже встроена в функции pinMode и digitalWrite., @Michel Keijzers
@Juraj Я использовал эту таблицу: http://www.circuitstoday.com/arduino-nano-tutorial-pinout-schematics, там A0 равно 19., @Michel Keijzers
это контакты печатной платы. извините, A0 равен 14., @Juraj
@Juraj Спасибо (приятно, что у встроенного светодиода есть отдельный «контакт»), @Michel Keijzers
@MichelKeijzers, с какой платой Arduino вы работали до сих пор? Потому что Нано на самом деле всего лишь маленький Уно., @Juraj