Маячок c управляемой яркостью

В этом эксперименте мы меняем яркость светодиода, вращая ручку переменного резистора.

Список деталей для эксперимента

  • 1 светодиод
  • 1 резистор номиналом 220 Ом
  • 6 проводов
  • 1 потенциометр

Схема на макетке

Скетч

            // даём разумные имена для пинов со светодиодом
// и потенциометром (англ 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);
}            
            

Обратите внимание

  • Мы подключили «землю» светодиода и переменного резистора (потенциометра) к длинной рельсе «-» макетной платы, и уже ее соединили с входом GND микроконтроллера. Таким образом мы использовали меньше входов и от макетки к контроллеру тянется меньше проводов.
  • Подписи «+» и «-» на макетке не обязывают вас использовать их строго для питания, просто чаще всего они используются именно так и маркировка нам помогает
  • Не важно, какая из крайних ножек потенциометра будет подключена к 5 В, а какая к GND, поменяется только направление, в котором нужно крутить ручку для увеличения напряжения. Запомните, что сигнал мы считываем со средней ножки
  • Для считывания аналогового сигнала, принимающего широкий спектр значений, а не просто 0 или 1, как цифровой, подходят только порты, помеченные на плате как «ANALOG IN» и пронумерованные с префиксом A. Для Arduino Uno — это A0-A5.