Переключатель: Потенциометр
Наряду с цифровыми портами у 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, опять же, нужно следовать коду.
ДОЛИ
- Потенциометр 10кОм.
- 5-мм СИД.
- Сопротивление 330 Ом (оранжево-оранжево-коричневый).
- Соединительный провод.
СХЕМА ЦЕПИ
МОНТАЖ ЦЕПИ
NdT: Заменить сосну 13 на 9 и сосну 2 на А0 .
Монтаж переводчиком. Эффект перспективы создает смещение, но соединяется порт 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 с сервоприводом.
Запустите свою программу и посмотрите, как вращается дерево сервопривода, когда вы поворачиваете потенциометр.