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
/*
Подключение светодиодов (сверху вниз):
1: Красный – пин 3
2: Серый – пин 2
3: Зелёный – пин 11
4: Красный – пин 10
5: Зелёный – пин 9
6: Жёлтый – пин 8
7: Зелёный – пин 7
8: Жёлтый – пин 6
9: Зелёный – пин 4
Потенциометр подключён к аналоговому входу A0.
*/
int ledPins[] = {3, 2, 11, 10, 9, 8, 7, 6, 4};
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);
// Пин для выбора режима (считываем значение с потенциометра)
int modePin = A0;
void setup() {
// Инициализация пинов для светодиодов как выходов
for (int i = 0; i < arrayLength; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Инициализация пина для потенциометра
pinMode(modePin, INPUT);
// Инициализация генератора случайных чисел (используем чтение с A1 как seed)
randomSeed(analogRead(A1));
}
void loop() {
// Читаем значение с потенциометра
int sensorVal = analogRead(modePin);
sensorVal = constrain(sensorVal, 0, 1023);
// Преобразуем значение в диапазон от 1 до 5 для выбора режима работы
int mode = map(sensorVal, 0, 1023, 1, 5);
// Выбор режима работы в зависимости от положения потенциометра
switch (mode) {
case 1:
mode1(); // Последовательно включаем от первого к последнему светодиоду
break;
case 2:
mode2(); // Последовательно включаем в обратном порядке (снизу вверх)
break;
case 3:
mode3(); // Сначала включаем светодиоды с четными индексами, затем с нечетными
break;
case 4:
mode4(); // Все светодиоды включаются одновременно, затем выключаются
break;
case 5:
mode5(); // Случайное включение светодиодов
break;
default:
mode1();
break;
}
}
// Режим 1: Последовательно включаем светодиоды (сверху вниз)
void mode1() {
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
}
// Режим 2: Последовательно включаем светодиоды в обратном порядке (снизу вверх)
void mode2() {
for (int i = arrayLength - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
}
// Режим 3: Сначала включаем светодиоды с четными индексами, затем с нечетными
void mode3() {
// Сначала – четные индексы массива (0, 2, 4, ...)
for (int i = 0; i < arrayLength; i += 2) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
// Затем – нечетные индексы массива (1, 3, 5, ...)
for (int i = 1; i < arrayLength; i += 2) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
}
// Режим 4: Все светодиоды включаются одновременно, затем выключаются
void mode4() {
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(1000);
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(1000);
}
// Режим 5: Случайное включение светодиодов
void mode5() {
for (int i = 0; i < arrayLength; i++) {
int rndIndex = random(0, arrayLength);
digitalWrite(ledPins[rndIndex], HIGH);
delay(200);
digitalWrite(ledPins[rndIndex], LOW);
}
}
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.
Video
https://drive.google.com/file/d/1XyK9m8UqUhQIub-5Wh28l7XdKFuWZ09Z/view?usp=sharing