Potentsiomeetr

Komponendid:
- LED
- Potentsiomeeter
- Maketeerimislaud
- Arendusplaat
Tööpõhimõte:
- Potentsiomeetri pööramisel muutub takistus, mis mõjutab analoogsisendi pinget (0–5V).
- Arduino loeb potentsiomeetri väärtust (0–1023) ja kasutab seda LED vilkumise viivituse määramiseks.
- Serial Monitoris kuvatakse potentsiomeetri tegelik pinge (0–5V).
Ülesanne
Töö kirjeldus:
Luua Arduino valgusketi süsteem nelja RGB-LED-iga, mida saab potentsiomeetri abil juhtida. Süsteemis on kuus erinevat valgusrežiimi, näiteks staatilisi värve, laineefekte ja dünaamilisi vilkumisi.
Kasutatud komponendid:
- Arendusplaat
- 4x RGB-LED
- 12x 220Ω takistit
- 1x 10kΩ potentsiomeeter
- Juhtmed ühenduste loomiseks
- Makettplaat komponentide paigutamiseks
Töö protsess:
Juhtimissüsteem:
- Kaardistab väärtuse, et valida 5 valgustusrežiimi vahel (1-5)
- Igal RGB LED-l on 3 kanalit (punane, roheline, sinine)
- PWM-signaalid kontrollivad värvi intensiivsust (0-255 kanali kohta)
- Digitaalsed pins lülitavad LED-id sisse/välja mustrite kaupa
Valgustusrežiimid:
- All White – täielik heledus kõigis värvikanalites
- Wave Effect – rohelised/sinised värvid lainetavad läbi LEDide
- Color Cycle – sujuvad üleminekud põhivärvide vahel
- Candle Effect – juhuslik punane ja kollane värelus
- Disco Mode – kiire juhuslik värvimuutus
Skeem:

Kood:
// RGB-LED-ide ühendused
const int RGB_PINS[4][3] = {
{13, 5, 9}, // LED 1: R, G, B
{12, 4, 8}, // LED 2
{11, 3, 7}, // LED 3
{10, 2, 6} // LED 4
};
const int POT_PIN = A0; // Potentsiomeeter
void setup() {
// kõik LED-ide pinnid
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
pinMode(RGB_PINS[i][j], OUTPUT);
}
}
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(POT_PIN);
int mode = map(potValue, 0, 1023, 1, 5);
mode = constrain(mode, 1, 5);
Serial.print("Reziim: ");
Serial.println(mode);
switch (mode) {
case 1: allOn(); break;
case 2: waveEffect(); break;
case 3: colorCycle(); break;
case 4: redYellowAlternate(); break;
case 5: discoEffect(); break;
}
}
// REŽIIMID
// 1. 2 Valge 2 Yellow LED-id
void allOn() {
// Valge LED
setColor(0, 255, 255, 153);
// Kollane LED
setColor(1, 255, 255, 255);
setColor(2, 255, 255, 255);
setColor(3, 255, 255, 153);
delay(500);
}
// 2. Laineefekt
void waveEffect() {
for (int i = 0; i < 4; i++) {
setColor(i, 0, 255, 0); // Roheline
delay(100);
setColor(i, 0, 0, 0);
}
for (int i = 3; i >= 0; i--) {
setColor(i, 0, 0, 255); // Sinine
delay(100);
setColor(i, 0, 0, 0);
}
}
// 3. Värvide tsükkel
void colorCycle() {
// Punane
for (int i = 0; i < 4; i++) setColor(i, 255, 0, 0);
delay(500);
// Roheline
for (int i = 0; i < 4; i++) setColor(i, 0, 255, 0);
delay(500);
// Sinine
for (int i = 0; i < 4; i++) setColor(i, 0, 0, 255);
delay(500);
// Kollane
for (int i = 0; i < 4; i++) setColor(i, 255, 255, 0);
delay(500);
}
// 4. Küünlaefekt (kollased ja punased toonid)
void redYellowAlternate() {
setColor(0, 255, 0, 0);
setColor(1, 255, 255, 0);
setColor(2, 255, 0, 0);
setColor(3, 255, 255, 0);
delay(500);
setColor(0, 255, 255, 0);
setColor(1, 255, 0, 0);
setColor(2, 255, 255, 0);
setColor(3, 255, 0, 0);
delay(500);
}
// 5. Diskoefekt
void discoEffect() {
for (int i = 0; i < 4; i++) {
setColor(i, random(0, 255), random(0, 255), random(0, 255));
}
delay(100);
}
// Abifunktsioon
void setColor(int led, int r, int g, int b) {
analogWrite(RGB_PINS[led][0], r);
analogWrite(RGB_PINS[led][1], g);
analogWrite(RGB_PINS[led][2], b);
}
Video:
Uued funktsioonid:
Serial.begin() – alustab sarjaliidestuse, et näha Arduino saadetud andmeid output’is.analogRead() – loeb potentsiomeetri väärtuse.map() – teisendab potentsiomeetri väärtuse uude vahemikku.constrain(mode, 1, 5) – piirab väärtust, et see jääks ainult vahemikku 1 kuni 5.Serial.println(); – näitavad Serial Monitoris režiimi numbrit.switch (mode) – kontrollib, milline režiim on valitud, ja käivitab vastava ploki.case X: – kui režiim on X, tehakse midagi konkreetset.setColor() – kohandatud funktsioon LED-i värvi määramiseks.analogWrite() – saadab PWM signaali, mis lubab LED-il tumedamalt või heledamalt põleda.