PWM-вывод Arduino Nano не функционирует
Я создаю проект с использованием Arduino Nano. В нем я использую вывод 3 как выход ШИМ. Однако, если я подаю на него значения ниже 255, вывод вообще не выдает никакого напряжения.
Согласно этой схеме, вывод 3 — это ШИМ:
Я проверил его на двух платах, и ни на одной он не работает. Это не мой скетч (я проверил его с помощью простого analogWrite();
).
Вот код:
void setup() {
// поместите сюда ваш код настройки для однократного запуска:
#define E1 3 // Включить пин для двигателя 1
#define E2 10 // Включить пин для двигателя 2
#define I1 4 // Управляющий вывод 1 для двигателя 1
#define I2 2 // Управляющий вывод 2 для двигателя 1
#define I3 A1 // Управляющий вывод 1 для двигателя 2
#define I4 A0 // Управляющий вывод 2 для двигателя 2
}
void loop() {
// поместите сюда свой основной код для многократного выполнения:
// Я использую дифференциальное рулевое управление, скорость важна
analogWrite(E1, 100); // Запустить на полной скорости
analogWrite(E2, 100); // Запустить на полной скорости
// всегда идти вперед
digitalWrite(I1, LOW);
digitalWrite(I2, HIGH);
digitalWrite(I3, LOW);
digitalWrite(I4, HIGH);
}
Что может быть причиной этого?
@Mu3, 👍1
Обсуждение4 ответа
Лучший ответ:
Попробуйте заменить #define E1 3
на #define E1 PD3
и посмотрите, поможет ли это.
Обозначения PBx
, PCx
и PDx
недвусмысленны, поэтому их использование — вполне безопасный вариант.
Это абсолютно неправильный совет. Функции Arduino принимают номера выводов Arduino. В этом случае это просто сработало, потому что PD3
#define
d как 3, а номер вывода Arduino также равен 3. Попробуйте использовать PB2
вместо номера вывода Arduino 10, если вы мне не верите. Они даже не однозначны. Эти обозначения просто определены как номера бит (например, PB3
также равен 3)., @per1234
Заменить digitalWrite на analogWrite(pin, value)
Я не уверен, почему вы думаете, что это сработает. Вы читали принятый ответ выше или комментарии под вопросом?, @sempaiscuba
Использовать pinMode(NNN, OUTPUT)
при setup()
?
Привет, Денис, и добро пожаловать на Stack Exchange! Хотя вы можете быть правы, пожалуйста, расширьте свой ответ, потому что в его нынешнем виде он больше подходит для комментария. Пожалуйста, прочтите [Как написать хороший ответ?](https://arduino.stackexchange.com/help/how-to-answer), @Greenonline
Это хороший ответ, PIN-РЕЖИМ отсутствует., @JB. With Monica.
Третий контакт (контакт 3) не является контактом ШИМ, это контакт RESET
.
Выводы ШИМ: 6, 8, 9, 12, 13 и 14 (для Arduino Nano).
Посмотрите это изображение:
Сокращенный URL-адрес перенаправляет на https://images.google.co.in/imgres?imgurl=http%3A%2F%2Fwww.ifuturetech.org%2Fifuture%2Fuploads%2F2014%2F03%2FArduino-nano-Pinout.png&imgrefurl=http%3A%2F%2Fwww.ifuturetech.org%2Fproduct%2Farduino-nano-v3-0%2F&docid=domJNeoO6sP-cM&tbnid=jRej863j-6l5rM%3A&vet=1&w=642&h=377&source=sh%2Fx%2Fim, поэтому нет особого смысла его заменять., @tripleee
@Carolene, согласно схеме, предоставленной автором, вывод 3 означает цифровой вывод 3 = PORTD 3. Часть вашего ответа «Выводы ШИМ — это 6, 8, 9, 12, 13 и 14 (для Arduino Nano)» полностью вводит в заблуждение., @MichaelT
- Установите частоту ШИМ на 25 кГц.
- Какова частота PWM-выхода на Arduino
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Генерация частоты ШИМ выше 125 кГц с помощью Arduino Uno
- Увеличить разрядность PWM
- Как вывести истинное аналоговое напряжение на выходной контакт
- Частота PWM Arduino Nano
Попросите перенести это на arduino stackexchange, @Joren Vaes
@JorenVaes как мне это сделать?, @Mu3
Код не показан. О чем же тогда нам рассуждать?, @Bort
@Bort извините, добавил код., @Mu3
Попробуйте заменить #define E1 3 на #define E1 PD3 и посмотрите, поможет ли это., @Dampmaskin
@Dampmaskin, это сработало! Не знаю почему, так как я использую пин 10, просто объявляя его как "10". Не могли бы вы опубликовать это как ответ, чтобы я мог закрыть вопрос?, @Mu3