Опыт со потенциометром/Potentsiomeetri kasutamine
Komponeendid:

Ühendamise skeem:
Kõigepealt tuleb paigutada LED ja potentsiomeeter maketeerimislauale ja ühendada need, sarnaselt joonisel kujutatule arendusplaadiga.
LED vilgutamise kiiruse reguleerimiseks kasutatakse potentsiomeetrit.

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.
}
Ülesanne 2 “Valguskett”
Töö kirjeldus
Tegemist on Arduino projektiga, mille eesmärk on luua valgusinstallatsioon, mida juhitakse potentsiomeetriga. Vastavalt potentsiomeetri väärtusele valitakse erinev LEDide vilkumise režiim (nt ainult punased, sinised, kollased, laine jne). Valik toimub analogRead()
funktsiooni kaudu ning režiimid on mapitud väärtustele 1 kuni 10.
Vajuta “Start Simulation” ja proovi keerata potentsiomeeter!
Kasutatud komponenid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- 250 kΩ Potentiometer (1tk)
- 220 Ω Takisti (9tk)
- Juhtmed (23tk)
- LED (9tk: 3 punane, 2 sinine, 2 roheline, 2 kollane)
Töö protsess
LED-id ühendati Arduino plaadiga ja määrati massiivis ledPins[]
.
Valgussensoriga loetakse analoogväärtus (0–1023), mis konverteeritakse vahemikku 1–10 režiimi.
Igal režiimil süttivad LED-id kindlas mustris:
- Režiim 2 – vilguvad ainult punased LED-id. –>
red()
- Režiim 3 – vilguvad ainult sinised LED-id. –>
blue()
- Režiim 4 – vilguvad ainult rohelised LED-id. –>
green()
- Režiim 5 – vilguvad ainult kollased LED-id. –>
yellow()
- Režiim 6 – kõik LED-id põlevad korraga. –>
all_led_on()
- Režiim 7 – LED-id vilguvad suvaliselt (normal mode). –>
normal_mode()
- Režiim 8 – LED-id vilguvad paarikaupa. –>
pair_blink()
- Režiim 9 – LED-id vilguvad disko režiimis. –>
disco()
- Režiim 10 – LED-id süttivad lainekujuliselt. –>
wave()
- Kõik muud väärtused lülitavad LED-id välja. –>
turn_off_all()
Uuritud funktsioonid
int ledPins[] = {…} |
Massiiv, mis sisaldab kõigi LED-ide pinne kindlas järjekorras. Võimaldab LED-e hallata tsükliga, mitte käsitsi ükshaaval. |
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]) |
Arvutab automaatselt, mitu elementi (ehk mitu LED-i) massiivis ledPins on. Väga kasulik tsüklite seadistamisel. |
map(x, a, b, c, d) |
Teisendab väärtuse x ühest vahemikust [a, b] teise vahemikku [c, d] . Näiteks: andurilt saadud väärtus 0–1023 teisendatakse režiimideks 1–10. |
constrain(x, a, b) |
Piirab väärtuse x nii, et see jääks vahemikku a kuni b . Näiteks tagab, et režiimi number ei läheks väiksemaks kui 1 ega suuremaks kui 10. |
random(a, b) |
Genereerib juhusliku täisarvu vahemikus a kuni b - 1 . Kasutatakse näiteks disco-režiimis LED-ide suvaliseks vilgutamiseks. |
Kasutamisvõimalused tavaelus
- Dekoratiivvalgustus – LED-valguskett sobib hästi jõuludeks, üritustele ja lavadele.
- Interaktiivsed projektid – erinevad mustrid pakuvad loovust ja dünaamikat.
- Kodune meeleoluvalgus – laine- või discoefektid lisavad tuppa erilise meeleolu.
Skeem

Video (link)
Programm
int sensorPin = 0;
int ledPins[] = {13, 12, 11, 10, 9, 8, 7, 6, 5}; // LED-id punasest kuni viimase punaseni
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]); // Massiivi suurus
int sensorValue = 0;
int Value_new;
void setup()
{
for (int i = 0; i < arrayLength; i++)
{
pinMode(ledPins[i], OUTPUT);
}
}
void loop()
{
Value_new = analogRead(sensorPin);
Value_new = map(Value_new, 0, 1023, 1, 10); // 10 režiimi
Value_new = constrain(Value_new, 1, 10);
if (Value_new == 2)
{
red();
}
else if (Value_new == 3)
{
blue();
}
else if (Value_new == 4)
{
green();
}
else if (Value_new == 5)
{
yellow();
}
else if (Value_new == 6)
{
all_led_on();
}
else if (Value_new == 7)
{
normal_mode();
}
else if (Value_new == 8)
{
pair_blink();
}
else if (Value_new == 9)
{
disco();
}
else if (Value_new == 10)
{
wave();
}
else
{
turn_off_all();
}
}
// vilguvad ainult punased LED-id
void red()
{
digitalWrite(ledPins[0], HIGH); // RED1
digitalWrite(ledPins[4], HIGH); // RED2
digitalWrite(ledPins[8], HIGH); // RED3'
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
digitalWrite(ledPins[5], LOW);
digitalWrite(ledPins[6], LOW);
digitalWrite(ledPins[7], LOW);
delay(100);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[4], LOW);
digitalWrite(ledPins[8], LOW);
delay(100);
}
// vilguvad ainult sinised LED-id
void blue()
{
digitalWrite(ledPins[1], HIGH); // BLUE1
digitalWrite(ledPins[5], HIGH); // BLUE2
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
digitalWrite(ledPins[4], LOW);
digitalWrite(ledPins[6], LOW);
digitalWrite(ledPins[7], LOW);
digitalWrite(ledPins[8], LOW);
delay(200);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[5], LOW);
delay(200);
}
// vilguvad ainult rohelised LED-id
void green()
{
digitalWrite(ledPins[2], HIGH); // GREEN1
digitalWrite(ledPins[6], HIGH); // GREEN2
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[3], LOW);
digitalWrite(ledPins[4], LOW);
digitalWrite(ledPins[5], LOW);
digitalWrite(ledPins[7], LOW);
digitalWrite(ledPins[8], LOW);
delay(200);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[6], LOW);
delay(200);
}
// vilguvad ainult kollased LED-id
void yellow() {
digitalWrite(ledPins[3], HIGH); // YELLOW1
digitalWrite(ledPins[7], HIGH); // YELLOW2
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[4], LOW);
digitalWrite(ledPins[5], LOW);
digitalWrite(ledPins[6], LOW);
digitalWrite(ledPins[8], LOW);
delay(200);
digitalWrite(ledPins[3], LOW);
digitalWrite(ledPins[7], LOW);
delay(200);
}
// vilguvad kõik korraga
void normal_mode()
{
for (int i = 0; i < arrayLength; i++)
{
digitalWrite(ledPins[i], HIGH);
}
delay(random(10,200)); // pausi suurus genereerime juhuslikult
for (int i = 0; i < arrayLength; i++)
{
digitalWrite(ledPins[i], LOW);
}
delay(random(10,200));
}
// kõik LED-id sisse lülitatud
void all_led_on()
{
for (int i = 0; i < arrayLength; i++)
{
digitalWrite(ledPins[i], HIGH);
}
}
// kõik LED-id välja lülitatud
void turn_off_all()
{
for (int i = 0; i < arrayLength; i++)
{
digitalWrite(ledPins[i], LOW);
}
}
// kõik LED-id vilguvad juhuslikult ja suvalise kiirusega
void disco()
{
for (int i = 0; i < 15; i++)
{
int r = random(0, arrayLength);
digitalWrite(ledPins[r], HIGH);
delay(random(50, 150));
digitalWrite(ledPins[r], LOW);
}
}
// LED-id süttivad lainekujuliselt
void wave()
{
for (int i = 0; i < arrayLength; i++)
{
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
}
// LED-id vilguvad paarikaupa
void pair_blink()
{
// paaris LED-id
for (int i = 0; i < arrayLength; i += 2)
{
digitalWrite(ledPins[i], HIGH);
}
delay(250);
for (int i = 0; i < arrayLength; i += 2)
{
digitalWrite(ledPins[i], LOW);
}
// paaritu LED-id
for (int i = 1; i < arrayLength; i += 2)
{
digitalWrite(ledPins[i], HIGH);
}
delay(250);
for (int i = 1; i < arrayLength; i += 2)
{
digitalWrite(ledPins[i], LOW);
}
delay(150);
}