Nano: все цифровые контакты ничего не выводят

Новый пользователь здесь. Используя примеры, представленные в программном обеспечении Arduino IDE, я мог воспроизводить мелодии с помощью пьезоизлучателя или мигающего светодиода.

Больше нет. Никакой цифровой пин ничего не дает. Я вижу, как встроенный светодиод мигает, если я программирую контакт 13, но не за его пределами.

Поэтому я попытался подключить выходной цифровой контакт (13) к аналоговому входному контакту или любой другой, который можно поставить в качестве входа (A7, D5 и т. д.) (с резистором, чтобы не повредить штучку).

const char out=13;
const char  in=8;
char         i=0;
void setup() {
  Serial.begin(9600);
  pinMode(out, OUTPUT);
  pinMode(in,  INPUT);
  digitalWrite(out, LOW);
}
void loop() {
  if(i&1){
    digitalWrite(out,i&2?HIGH:LOW);
  }else{
    Serial.println(analogRead(in));
  }
  i++;
  delay(50);
}

На выходе был 0, независимо от того, к какому цифровому выводу он подключен.

Как я могу на самом деле узнать, случайно ли я успешно (!) повредил все свои цифровые контакты?

  • В настоящее время я использую макетную плату
  • Земля подключена правильно (к GND)
  • Он перестал работать между использованиями, в прошлый раз, когда я пробовал мелодию Tone(out,val)
  • Я измеряю значение выходного контакта, подключая его к аналоговому входному контакту с последовательным резистором
  • Я установил выходной контакт во время установки. (pinMode(out, OUTPUT);)

Итак! Похоже, я не понял коды цифровых контактов. Я думал, что нам нужно использовать номер контакта, но цифровой номер контакта (скажем, 10 для D10) — это то, что нужно для решения этой проблемы. И я всегда обращался к схеме для каждого контакта -_-.

Как и в случае с принятым ответом, мне нужно было опустить (или поднять? Все еще не могу понять!) входной контакт с резистором на землю.

Спасибо всем!

, 👍1

Обсуждение

Добро пожаловать! Не могли бы вы добавить немного больше информации о вашей настройке. Вы пользуетесь макетной платой? Правильно ли вы подключили GND к внешним компонентам? Когда он перестал работать? Как вы измеряете выход пина? Вы установили выводы на ВЫХОД в setup()?, @StarCat

Спасибо StarCat! Добавил информацию спасибо!, @B7th

У вас есть мультиметр для измерения напряжения на выходных контактах и напряжения питания? В остальном Nano ведет себя нормально?, @StarCat

A6 и A7 являются только аналоговыми входами. Они не могут читать или писать в цифровом виде., @Majenko

Спасибо Маженко и StarCat! У меня нет мультиметра, но показания с AnalogRead начинаются с высоких значений и идут все ниже и ниже., @B7th

Вы установили контакты на ВЫХОД? Покажите весь код., @Delta_G

Добавил исправленный код Спасибо Delta_G!, @B7th


1 ответ


Лучший ответ:

2

Ваш скетч работает на моем Nano (клоне)

Нано со светодиодом

Я использую белый светодиод высокой яркости с резистором 10 кОм, чтобы снизить яркость до приемлемого уровня, поэтому потребляемый ток составляет около (5–2,2 В)/10 кОм = 0,28 мА. Это низкий уровень тока, и с ним безопасно ковыряться.

Я вижу, как встроенный светодиод мигает, если я программирую вывод 13, но не за его пределами.

Это говорит о том, что ATmega328P практически не поврежден и что, по крайней мере, ветвь микросхемы, подключенная к D13, работает должным образом.

Как я могу на самом деле узнать, случайно ли я успешно (!) повредил все свои цифровые контакты?

Без мультиметра или других инструментов я бы взял светодиод и резистор, которые потребляют менее 5 мА, проверил их между VCC и GND, чтобы убедиться, что они работают

Затем я бы использовал резистор и светодиод, чтобы проверить выход каждого из выходов D2–D13, используя ваш существующий скетч.

Когда встроенный светодиод мигает, я могу подключить светодиод и последовательный резистор к контакту D13 и заставить его мигать.


Я не был уверен, что вы намеревались установить для in в 8, поэтому позже я изменил вашу программу следующим образом:

const char  in=A1;

и я получил этот вывод на последовательном мониторе после подключения соединительного провода от D13 к A1

0
1010
0
1009
0
1009
0
1009
0
1009
0
1009
0
1009
0
1009
0
1008

Если я отверну светодиод от контакта D13, я могу использовать соединительный провод в качестве тестового щупа

использование поводка в качестве зонда

Основные моменты:

  • выберите высокое значение резистора, которое минимизирует потребляемый ток, но все еще хорошо видно.
  • проверьте, работает ли светодиод! (правильно и т. д.)
  • используйте поводок в качестве щупа.

Существуют более сложные тестовые схемы, которые можно построить с помощью полевого транзистора и т. д., но этого обычно достаточно, чтобы определить, повреждены ли выходы Arduino.


Выдержка из таблицы данных ATmega328 — обратите внимание, что максимальный ток, потребляемый на контакт, составляет 40 мА. Превышение этого значения, вероятно, является самым простым способом повредить микросхему, но если встроенный светодиод с маркировкой «L» не загорится. (и подключен к D13) работает, значит часть ИС не повреждена.

,

Я впечатлен тем, какие хорошие люди уже есть, спасибо! Это исчерпывающий ответ, который показывает, что вы действительно потратили время на решение моей проблемы. Я проверю это и сообщу вам , каковы результаты!, @B7th