← Маячок с нарастающей яркостью | Оглавление | Терменвокс →
В этом эксперименте мы меняем яркость светодиода, вращая ручку переменного резистора.
A
. Для Arduino Uno — это A0-A5.// даём разумные имена для пинов со светодиодом // и потенциометром (англ potentiometer или просто «pot») #define LED_PIN 9 #define POT_PIN A0 void setup() { // пин со светодиодом — выход, как и раньше... pinMode(LED_PIN, OUTPUT); // ...а вот пин с потенциометром должен быть входом // (англ. «input»): мы хотим считывать напряжение, // выдаваемое им pinMode(POT_PIN, INPUT); } void loop() { // заявляем, что далее мы будем использовать 2 переменные с // именами rotation и brightness, и что хранить в них будем // целые числа (англ. «integer», сокращённо просто «int») int rotation, brightness; // считываем в rotation напряжение с потенциометра: // микроконтроллер выдаст число от 0 до 1023 // пропорциональное углу поворота ручки rotation = analogRead(POT_PIN); // в brightness записываем полученное ранее значение rotation // делённое на 4. Поскольку в переменных мы пожелали хранить // целые значения, дробная часть от деления будет отброшена. // В итоге мы получим целое число от 0 до 255 brightness = rotation / 4; // выдаём результат на светодиод analogWrite(LED_PIN, brightness); }
#define
мы сказали компилятору заменять идентификатор POT_PIN
на A0
— номер аналогового входа. Вы можете встретить код, где обращение к аналоговому порту будет по номеру без индекса A
. Такой код будет работать, но во избежание путаницы с цифровыми портами используйте индекс.int rotation, brightness;
int
(от англ. integer) — целочисленное значение в диапазоне от -32 768 до 32 767, с другими типами мы познакомимся позднееanalogRead(pinA)
возвращает целочисленное значение в диапазоне от 0 до 1023, пропорциональное напряжению, поданному на аналоговый вход, номер которого мы передаем функции в качестве параметра pinA
analogRead()
: мы просто поместили его в переменную rotation
с помощью оператора присваивания =
, который записывает то, что находится справа от него в ту переменную, которая стоит слеваpinMode(LED_PIN, OUTPUT)
? строчку pinMode(POT_PIN, INPUT)
?