Переключатель: Потенциометр

Наряду с цифровыми портами у Arduino также 6 портов, которые можно использовать в качестве аналоговых входов. Эти входы получают ток (от 0 до 5 вольт) и преобразуют его в цифровое число от 0 (0 вольт) до 1023 (5 вольт) (10 бит разрешения). Очень полезным устройством, которое эксплуатирует эти входы, является потенциометр (также называемый переменным сопротивлением). При соединении в 5 вольт через внешние порты средний порт считывает некоторые значения от 0 до 5 вольт в зависимости от угла, под которым он вращается (следовательно, 2,5 вольта в середине). Возвращенные значения мы можем использовать как переменную в нашей программе .

Примечание переводчика: В этом упражнении есть некоторые ошибки, которые были исправлены в переводе, поскольку оригинал, вероятно, основан на старой карте Arduino. Аналогового порта 2 на Arduino Uno нет, а порты A0 - A5. Поскольку код адресует порт A0, я заменил 0 на английской схеме на A0 на схеме на французском языке и 2 в английском тексте на A0 во французском тексте (двойная исправленная ошибка). На диаграмме упоминается цифровой порт 13, в то время как код использует 9, опять же, нужно следовать коду.

ДОЛИ

СХЕМА ЦЕПИ

Schéma du circuit

МОНТАЖ ЦЕПИ

Diagramme d'assemblage

NdT: Заменить сосну 13 на 9 и сосну 2 на А0 .

Видео монтажа.

Switch avec Arduino et JavaScript

Монтаж переводчиком. Эффект перспективы создает смещение, но соединяется порт 9.

КОД

You can find this code in CIRC-08-code-pot.js.

var five = require("johnny-five"), board, myPotentiometer;

board = new five.Board();
board.on("ready", function() {
  myPotentiometer = new five.Sensor({
    pin: "A0",
    freq: 250
  });
  myLed = new five.Led(9);
  myPotentiometer.on("read", function() {
    var rawValue = this.raw;
    myLed.brightness(Math.floor(rawValue / 4));
  });
});

АВАРИЙНЫЙ РЕМОНТ

Работает спорадически

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

Не работает

Убедитесь, что вы не подключили провод потенциометра к цифровому порту 0 вместо аналогового порта A0 (ряд портов под портами питания).

Все еще не работает

Вы можете попытаться переделать цепь вверх ногами. Иногда это помогает.

РАСШИРЕНИЕ КОДА

Порог переключения

:

Иногда требуется переключать выходной сигнал, когда значение превышает определенный порог. Чтобы сделать это с потенциометром, добавьте переменную для порогового значения в свою программу (например, var threshold = 512;) и измените код в менеджере «данных» (см. далее, NdT) на :

if (this.raw > threshold) {
   myLed.on();
} else {
   myLed.off();   
}

В качестве альтернативы объекту «Сенсор» Джонни-Пятерки может быть назначен логический порог, например:

myPotentiometer.booleanAt(512).on("data", function() {
  if (this.boolean) {
    myLed.on();
  } else {
    myLed.off();   
  }
});

Управление сервоприводом:

Это очень хороший пример, который объединяет пару цепей. Установите цепь так, как это было сделано в упражнении 4, а затем измените менеджер «read», чтобы назначить положение сервопривода с помощью servo.move (значениеAnime).
Для интерполяции числа из одного интервала в другой можно использовать функцию map. Fn.map (rawValue, 0, 1023, 0, 179) для синхронизации значения потенциометра под углом от 0 до 180 с сервоприводом.

Запустите свою программу и посмотрите, как вращается дерево сервопривода, когда вы поворачиваете потенциометр.