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
) — это то, что нужно для решения этой проблемы. И я всегда обращался к схеме для каждого контакта -_-.
Как и в случае с принятым ответом, мне нужно было опустить (или поднять? Все еще не могу понять!) входной контакт с резистором на землю.
Спасибо всем!
@B7th, 👍1
Обсуждение1 ответ
Лучший ответ:
Ваш скетч работает на моем 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
- Чтение частоты ввода в цифровых выводах
- Отправка цифрового сигнала с одного Arduino на другой для запуска события
- DHT11 аналоговый или цифровой?
- Как настроить выходы без использования digitalWrite?
- установка выходного аналогового/цифрового контакта на землю
- Как сканировать сигнал HIGH на digitalRead во время основного цикла, одновременно выполняя другие задачи?
- Невозможно использовать аналоговые контакты в качестве цифровых входов
- Ardunio Mega/ATmega2560: использование порта F или K как для аналоговых входов, так и для цифровых выходов.
Добро пожаловать! Не могли бы вы добавить немного больше информации о вашей настройке. Вы пользуетесь макетной платой? Правильно ли вы подключили GND к внешним компонентам? Когда он перестал работать? Как вы измеряете выход пина? Вы установили выводы на ВЫХОД в setup()?, @StarCat
Спасибо StarCat! Добавил информацию спасибо!, @B7th
У вас есть мультиметр для измерения напряжения на выходных контактах и напряжения питания? В остальном Nano ведет себя нормально?, @StarCat
A6 и A7 являются только аналоговыми входами. Они не могут читать или писать в цифровом виде., @Majenko
Спасибо Маженко и StarCat! У меня нет мультиметра, но показания с AnalogRead начинаются с высоких значений и идут все ниже и ниже., @B7th
Вы установили контакты на ВЫХОД? Покажите весь код., @Delta_G
Добавил исправленный код Спасибо Delta_G!, @B7th