Uno и nano. Различия в работе одной схемы

Имеется схема, собранная по аналогии с картинкой (картинка из интернета).

У меня есть Arduino UNO и несколько Arduino NANO (китайская реплика).

использую следующий код и на UNO и на NANO.


Servo myservo;  // создадим объект сервопривода

int potpin = 0;  // аналоговый выход A0 для потенциометра
int val;    // значение, получаемое от аналогового выхода

void setup() {
  myservo.attach(2);  // сервопривод на выводе 2
}

void loop() {
  val = analogRead(potpin);            // считываем данные с потенциометра (от 0 до 1023)
  val = map(val, 0, 1023, 0, 180);     // Преобразуем в интервал от 0 до 180
  myservo.write(val);                  // устанавливаем позицию сервопривода
  delay(15);                           // небольшое ожидание, чтобы сервопривод успел выполнить команду
}

Проблема заключается в том, что этот код работает по-разному на UNO и NANO:
На UNO потенциометр позволяет задавать скорость вращения, но на NANO потенциометр вообще игнорируется. Крути, не крути, ничего не происходит.

Объясните пожалуйста, в чем принципиальная разница в работе между платами? схему я точно не меняю, дошел до того что просто перетыкаю провода из UNO в NANO чтобы удостовериться, что проблема именно в этом.

Нет различий.
Или непропай или вход битый.

А если int potpin = A0 ? (я что то не помню как там внутри analogRead пересчитываются номера пинов)

  1. Нано вообще рабочая? Другие скетчи работают?
  2. Попробуйте на других аналоговых пинах.
    Разницы нет, но в коде пишите лучше A0. Так с первого взгляда понятно, что вывод подключен именно к аналоговому пину, а не к цифровому.

действительно оказалось, что плохо пропаян вход.
2 дня ковырялся, а проверил только после рекомендации sadman41

спасибо.

1 лайк

A0 там == 14

А потом из номера пина вычитается 14 , если номер >=14 и результат используется как номер канала АЦП.
Вроде так было лет пять назад ))

Я про #define analogPinToChannel(p) ((p) < NUM_ANALOG_INPUTS ? (p) : (p) >= 14 ? (p) - 14 : -1)