PWM-вывод Arduino Nano не функционирует

pwm

Я создаю проект с использованием Arduino Nano. В нем я использую вывод 3 как выход ШИМ. Однако, если я подаю на него значения ниже 255, вывод вообще не выдает никакого напряжения.

Согласно этой схеме, вывод 3 — это ШИМ:

NANO распиновка

Я проверил его на двух платах, и ни на одной он не работает. Это не мой скетч (я проверил его с помощью простого 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);
}

Что может быть причиной этого?

, 👍1

Обсуждение

Попросите перенести это на arduino stackexchange, @Joren Vaes

@JorenVaes как мне это сделать?, @Mu3

Код не показан. О чем же тогда нам рассуждать?, @Bort

@Bort извините, добавил код., @Mu3

Попробуйте заменить #define E1 3 на #define E1 PD3 и посмотрите, поможет ли это., @Dampmaskin

@Dampmaskin, это сработало! Не знаю почему, так как я использую пин 10, просто объявляя его как "10". Не могли бы вы опубликовать это как ответ, чтобы я мог закрыть вопрос?, @Mu3


4 ответа


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

1

Попробуйте заменить #define E1 3 на #define E1 PD3 и посмотрите, поможет ли это.

Обозначения PBx, PCx и PDx недвусмысленны, поэтому их использование — вполне безопасный вариант.

,

Это абсолютно неправильный совет. Функции Arduino принимают номера выводов Arduino. В этом случае это просто сработало, потому что PD3 #defined как 3, а номер вывода Arduino также равен 3. Попробуйте использовать PB2 вместо номера вывода Arduino 10, если вы мне не верите. Они даже не однозначны. Эти обозначения просто определены как номера бит (например, PB3 также равен 3)., @per1234


-1

Заменить digitalWrite на analogWrite(pin, value)

,

Я не уверен, почему вы думаете, что это сработает. Вы читали принятый ответ выше или комментарии под вопросом?, @sempaiscuba


-1

Использовать pinMode(NNN, OUTPUT) при setup()?

,

Привет, Денис, и добро пожаловать на Stack Exchange! Хотя вы можете быть правы, пожалуйста, расширьте свой ответ, потому что в его нынешнем виде он больше подходит для комментария. Пожалуйста, прочтите [Как написать хороший ответ?](https://arduino.stackexchange.com/help/how-to-answer), @Greenonline

Это хороший ответ, PIN-РЕЖИМ отсутствует., @JB. With Monica.


0

Третий контакт (контакт 3) не является контактом ШИМ, это контакт RESET.

Выводы ШИМ: 6, 8, 9, 12, 13 и 14 (для Arduino Nano).

Посмотрите это изображение:

Распиновка 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