int sensorPin = 0; // A0 on viik, millega on ühendatud potentsiomeeter
int ledPin = 13; // 13 viik – kus asub LED
int sensorValue = 0; // siia salvestame loetud väärtuse
void setup() {
pinMode(ledPin, OUTPUT); // LED – väljund
Serial. begin(9600; // käivitame seeriamonitori } void loop() { sensorValue = analoogRead(sensorPin; // loeme väärtuse A0-st (0 – 1023 digitalWrite(sensorPin)). begin(9600); // käivitame jadamonitori
}
void loop() {
sensorValue = analoogRead(sensorPin); // loeme väärtuse A0-st (0 – 1023)
digitalWrite(ledPin, HIGH); // süütame LED-i
delay(sensorValue); // ootame nii palju ms kui potentsiomeeter tagasi andis
digitalWrite(ledPin, LOW); // lülitame LED-i välja
delay(sensorValue); // ootame jälle
float voltage = sensorValue * (5. 0 / 1023.0); // teisendada volti
Serial.println(voltage); // väljund portmonitorile
}
🧠 Kuidas see töötab:
1. Potentsiomeeter töötab pingejagajana. Kui seda keerata, ilmub keskmisele viigule pinge vahemikus 0 ja 5 V.
2. Arduino loeb seda pinget analoogRead() käsuga viigult A0:
Tagastab väärtuse vahemikus 0 ja 1023 (10-bitine vahemik).
3. Seda väärtust kasutatakse LED-i sisse- ja väljalülitamise viivitusena millisekundites (delay(sensorValue)):
Mida suurem on väärtus → seda aeglasemalt LED vilgub
Mida väiksem on väärtus → seda kiiremini vilgub
4. Paralleelselt arvutab Arduino pinge voltides ja väljastab selle seeriamonitorile:
voltage = sensorValue * (5.0 / 1023.0)
💡 Tulemus:
Kasutaja saab LED-i vilkumise kiirust reguleerida potentsiomeetri nuppu keerates.
Reaalajas toimuvaid pinge muutusi saab jälgida arvutiekraanil.
Ülesanne 2 Гирлянда-Valguskett
int ledPins[] = {3, 5, 6, 9, 10};
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);
void setup() {
for (int i = 0; i < arrayLength; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
int potValue = analogRead(A0);
int mode = map(potValue, 0, 1023, 0, 6); // теперь 0–6
mode = constrain(mode, 0, 6);
switch (mode) {
case 0: allBlink(); break;
case 1: sequenceBlink(); break;
case 2: colorCycle(); break;
case 3: candleEffect(); break;
case 4: runningLight(); break;
case 5: pulseEffect(); break;
case 6: binaryCounter(); break;
}
}
// Режим 0
void allBlink() {
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
delay(300);
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
delay(300);
}
// Режим 1
void sequenceBlink() {
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], HIGH);
delay(150);
digitalWrite(ledPins[i], LOW);
}
}
// Режим 2
void colorCycle() {
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
delay(200);
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
delay(200);
}
// Режим 3
void candleEffect() {
for (int i = 0; i < arrayLength; i++) {
if (random(0, 10) < 3) {
digitalWrite(ledPins[i], HIGH);
delay(random(10, 100));
digitalWrite(ledPins[i], LOW);
delay(random(10, 50));
}
}
}
// Режим 4
void runningLight() {
static int pos = 0;
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
digitalWrite(ledPins[pos], HIGH);
delay(150);
pos = (pos + 1) % arrayLength;
}
// Режим 5: плавная пульсация
void pulseEffect() {
for (int brightness = 0; brightness <= 255; brightness += 5) {
for (int i = 0; i < arrayLength; i++) analogWrite(ledPins[i], brightness);
delay(15);
}
for (int brightness = 255; brightness >= 0; brightness -= 5) {
for (int i = 0; i < arrayLength; i++) analogWrite(ledPins[i], brightness);
delay(15);
}
}
// Режим 6: двоичный счёт
void binaryCounter() {
static int count = 0;
for (int i = 0; i < arrayLength; i++) {
bool bitState = bitRead(count, i);
digitalWrite(ledPins[i], bitState);
}
count = (count + 1) % 32; // 5 бит = 0–31
delay(300);
}
Ühendusskeem:
- LED-id on ühendatud Arduino digitaalsetele pin’idele: 3, 5, 6, 9, 10
- Potentsiomeeter:
- Keskmine jalg → A0
- Äärmised jalad → GND ja 5V
- Iga LED-i ees on takisti
- GND on ühendatud Arduino GND-ga
Tööpõhimõte:
- Potentsiomeeter saadab analoogsignaali (0–1023)
- Väärtus teisendatakse režiimiks (vahemikus 0 kuni 6)
- Vastavalt režiimile käivitatakse üks seitsmest valgusefektist
Valgusefektide režiimid:
| Nr | Nimi | Kirjeldus |
| 0 | allBlink() | Kõik LED-id vilguvad korraga |
| 1 | sequenceBlink() | LED-id vilguvad järjestikku |
| 2 | colorCycle() | Kõik LED-id süttivad ja kustuvad koos kiiresti |
| 3 | candleEffect() | Küünlaleek – vilkuvad juhuslikult |
| 4 | runningLight() | “Jooksev tuli” – üks LED korraga |
| 5 | pulseEffect() | Sujuv heleduse kasv ja kahanemine |
| 6 | binaryCounter() | Dvaainsüsteemi loendus 0–31 LED-ide abil |
Olulised Arduino käsud:
- analogRead(A0) – loeb potentsiomeetri väärtuse
- map() – teisendab väärtuse teise vahemikku
- digitalWrite() – lülitab LED-i sisse/välja
- analogWrite() – juhib LED-i heledust
- bitRead() – loeb konkreetset bitti arvus

