Tema 2: POTENTSIOMEETER \ Katse -Potentsiomeetri kasutamine
2. Katse -Potentsiomeetri kasutamine-

int sensorPin = 0;
int ledPin = 13;
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); // Saadud tulemused kirjutame Serial Monitori.
}
int sensorPin = 0; — Объявляется переменная sensorPin, которая будет использоваться для подключения датчика. В данном случае используется аналоговый пин 0. // Deklareeritakse muutuja sensorPin, mida kasutatakse anduri ühendamiseks. Antud juhul kasutatakse analoogpinni 0.
int ledPin = 13; — Здесь создается переменная ledPin для пина, к которому подключен светодиод. Это пин 13 // Siin luuakse muutuja ledPin, mis tähistab viigu, millega LED on ühendatud. See on viik 13
int sensorValue = 0; — Переменная sensorValue будет хранить значение, которое считывается с датчика. // Muutuja sensorValue salvestab andurilt loetud väärtuse.
void setup() — Функция setup() — выполняется один раз при старте программы. // käivitatakse üks kord programmi alguses.
{
pinMode(ledPin, OUTPUT); — настраивает пин 13 как выход для управления светодиодом. // konfigureerib viigu 13 väljundina LED-i juhtimiseks.
Serial.begin(9600) — инициализирует последовательный порт со скоростью 9600 бод для вывода данных в Serial Monitor. // Initsialiseerib 9600 baudi jadapordi andmete väljastamiseks seeriamonitorile.
void loop() { — Функция loop() выполняется бесконечно, после запуска программы. // Funktsiooni loop() täidetakse lõpmatult pärast programmi käivitamist.
sensorValue = analogRead(sensorPin); — Считывается значение с аналогового пина 0 (где подключен датчик). Значение будет в диапазоне от 0 до 1023. // Väärtus loetakse analoogviigult 0 (kuhu on ühendatud andur). Väärtus jääb vahemikku 0-1023.
digitalWrite(ledPin, HIGH); — Включается светодиод (пин 13). // LED (viik 13) lülitub sisse.
delay(sensorValue); — Задержка (пауза) равная значению sensorValue (в миллисекундах). Чем больше значение датчика, тем дольше будет задержка. // Viivitus (paus), mis on võrdne sensorValue väärtusega (millisekundites). Mida suurem on sensori väärtus, seda pikem on viivitus.
digitalWrite(ledPin, LOW); — Выключается светодиод. // LED on välja lülitatud.
float voltage = sensorValue * (5.0 / 1023.0); — Преобразуется значение с датчика (от 0 до 1023) в напряжение от 0 до 5 В. Это делается через умножение на коэффициент (5.0 / 1023.0). // Teisendab andurilt saadud väärtuse (0 kuni 1023) pingeks 0 kuni 5 V. Selleks korrutatakse see teguriga (5,0 / 1023,0).
Serial.println(voltage); — Выводится вычисленное напряжение на Serial Monitor. // Arvutatud pinge väljastatakse seeriamonitorile.
Ülesanne 2 Valguskett
Tinkercad

Minu kood
int potPin = A0; // Пин потенциометра
int ledPins[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
void setup() {
for (int i = 0; i < 10; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
int potValue = analogRead(potPin);
int mode = 0;
// Выбор режима в зависимости от положения потенциометра
if (potValue < 205) {
mode = 0; // Режим 1 — Переливание
} else if (potValue < 410) {
mode = 1; // Режим 2 — Градиент
} else if (potValue < 615) {
mode = 2; // Режим 3 — Бегущий огонь
} else if (potValue < 820) {
mode = 3; // Режим 4 — Пульсация
} else {
mode = 4; // Режим 5 — Дождь
}
if (mode == 0) {
// Режим 1 — Переливание (R, G, B)
for (int color = 0; color < 3; color++) {
for (int i = 0; i < 10; i++) {
if (i % 3 == color) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
delay(300);
}
} else if (mode == 1) {
// Режим 2 — Градиент (нарастание света)
for (int i = 0; i < 10; i++) {
digitalWrite(ledPins[i], HIGH);
delay(150);
}
for (int i = 0; i < 10; i++) {
digitalWrite(ledPins[i], LOW);
delay(100);
}
} else if (mode == 2) {
// Режим 3 — Бегущий огонь
for (int i = 0; i < 10; i++) {
// Сначала выключим все
for (int j = 0; j < 10; j++) {
digitalWrite(ledPins[j], LOW);
}
// Включим только один
digitalWrite(ledPins[i], HIGH);
delay(100);
}
} else if (mode == 3) {
// Режим 4 — Пульсация
for (int brightness = 0; brightness < 255; brightness++) {
for (int i = 0; i < 10; i++) {
analogWrite(ledPins[i], brightness);
}
delay(10);
}
for (int brightness = 255; brightness > 0; brightness--) {
for (int i = 0; i < 10; i++) {
analogWrite(ledPins[i], brightness);
}
delay(10);
}
} else if (mode == 4) {
// Режим 5 — Дождь
for (int i = 0; i < 10; i++) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
delay(200);
}
}
}
Funktsioonid
setup() – Seadistab pinnid (LEDide ja potentsiomeetri jaoks) ning käivitab juhuslike arvude generaatori.
loop() – Programmi põhitsiirkond: loeb potentsiomeetri väärtust, määrab režiimi ja kutsub välja vastava kasutajafunktsiooni.
mode1() – Režiim 1: LEDide järjestikune süttimine ülevalt alla.
pinMode(pin, mode) – Seadistab pinni töörežiimi (sisse- või väljund).
digitalWrite(pin, value) – Seab määratud pinnile kõrge või madala loogika taseme.
delay(milliseconds) – Peatab programmi täitmise etteantud millisekundiks.
analogRead(pin) – Loeb antud pinnilt analoogsignaali väärtust.
constrain(x, a, b) – Piirab väärtuse x vahemikku a kuni b.
map(value, fromLow, fromHigh, toLow, toHigh) – Teisendab väärtuse ühest vahemikust teise.
randomSeed(seed) – Initsialiseerib juhuslike arvude generaatori sädeme.
random(min, max) – Tagastab juhusliku arvu antud väärtusvahemikus.
Kuidas programm töötab
Režiim 1: LEDide järjestikune süttimine ülalt alla.
Režiim 2: LEDide süttimine vastupidises järjekorras (alt üles).
Režiim 3: Esmalt süttivad LEDid, mille indeksid on paarisarvulised, seejärel need, mille indeksid on paaritud.
Režiim 4: Kõik LEDid süttivad samaaegselt, seejärel kustutatakse.
Režiim 5: Ühe LEDi juhuslik süttimine.
Mida ma kasutan
Arduino plaat (näiteks Arduino Uno).
9 LED-d, ühendatud järgmistele pinnadele:
- Punane – pin 3
- Hall – pin 2
- Roheline – pin 11
- Punane – pin 10
- Roheline – pin 9
- Kollane – pin 8
- Roheline – pin 7
- Kollane – pin 6
- Roheline – pin 4
Kuidas elus kasutada
Õppeprojektid: See kood on suurepärane näide algajatele elektroonika ja mikrokontrollerite programmeerimisel. Õpilased saavad õppida, kuidas töötada pinnide, analoogandurite ja juhuslike arvude funktsioonidega ning mõista programmistruktuuri erinevate töörežiimidega.
Dekoratatiivne valgustus: Loo interaktiivne garland või valgusinstallatsioon pühadeks, pidude jaoks või lihtsalt ruumi kaunistamiseks. Potentsiomeeter võimaldab käsitsi valida erinevaid valgustuse stiile, luues mitmekesiseid valguseefekte.