Используемые детали:
Потенциометр
LED лампа
220Ω

Потенциометр

Используемый код:

int sensorPin = 3;    	  

int ledPin = 10;                           			  

int sensorValue = 0;  					  

void setup()

{       

  pinMode(ledPin, OUTPUT);  

  Serial.begin(9600);

}

void loop() {          					   

  sensorValue = analogRead(sensorPin); //   loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).		  

  digitalWrite(ledPin, HIGH);         

  delay(sensorValue);                 

  digitalWrite(ledPin, LOW);              

  delay(sensorValue);  

  float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023)  ja tagastab (0 - 5V):

  Serial.println(voltage);
}

Ввиду простоты и того, что этот пример был уже составлен, разбирать не будем.
Дальше уже самостоятельная работа и вот на ней остановимся поподробнее

Работа 2

Используемые компоненты:
Потенциометр
LED лампа — 6 штук
220Ω — 6 штук

Изображение 1. Ёлка

Используемый код:

int sensorPin = A3; // Крутилка
int ledPins[] = {5, 6, 7, 8, 9, 10, 11, 12, 13};
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {
  for (int i = 0; i < arrayLength; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  Serial.begin(9600); // Считывание записи
}
void loop() {
  int potValue = analogRead(sensorPin);
  int mode = map(potValue, 0, 1023, 0, 4);
  mode = constrain(mode, 0, 4);

  switch (mode) { // Переключение режимов
    case 0:
      for (int i = 0; i < arrayLength; i++) {
        digitalWrite(ledPins[i], LOW);
      }
      break;
    case 1:
      Yolka();
      break;
    case 2:
      RedAlert();
      break;
    case 3:
      BlueLagoon();
      break;
    case 4:
      GreenLight();
      break;
  }
}
// Световые эффекты
void Yolka() {
  for (int i = 0; i < arrayLength; i++) {
    int flickerChance = random(0, 10); // 0–9
    if (flickerChance < 3) { // Umbes 30% tõenäosus, et LED vilgub
      digitalWrite(ledPins[i], HIGH);
      delay(random(30, 150)); // juhuslik vilkumise kestus
      digitalWrite(ledPins[i], LOW);
      delay(random(10, 50));  // juhuslik paus
    }
  }
}

void RedAlert() {
  digitalWrite(5, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(12, HIGH);
  delay(250);
  digitalWrite(5, LOW);
  digitalWrite(10, LOW);
  digitalWrite(12, LOW);
  delay(250);
}

void BlueLagoon() {
  digitalWrite(13, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  delay(250);
  digitalWrite(13, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  delay(250);
}

void GreenLight() {
  digitalWrite(11, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(6, HIGH);
  delay(250);
  digitalWrite(11, LOW);
  digitalWrite(9, LOW);
  digitalWrite(6, LOW);
  delay(250);
}
Собранная и рабочая модель

Принцип работы

Считывание режима

  • В loop() читаем значение с потенциометра на A3 (0–1023).
  • При помощи map() и constrain() преобразуем его в целое от 0 до 4 — это номер режима.

Выбор и выполнение режима

  • case 0: все светодиоды гаснут.
  • case 1 («Yolka»): все LEDs слегка «мерцают» с 30% шансом в каждом цикле.
  • case 2 («RedAlert»): быстро мигают конкретные красные светодиоды (5, 10, 12).
  • case 3 («BlueLagoon»): быстро мигают «синие» (13, 7, 8).
  • case 4 («GreenLight»): быстро мигают «зелёные» (11, 9, 6).

Повторение

  • После выполнения выбранной функции цикл loop() начинается заново, поэтому режим меняется «на лету» при вращении ручки потенциометра.