Используемые детали:
Потенциометр
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 штук

Используемый код:
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()начинается заново, поэтому режим меняется «на лету» при вращении ручки потенциометра.