Praktika 1: LED, RGB LED ja valgusfoor
Aruanne
Katse 1: -LED dioodid ja RGB LED-
LED dioodid
Komponendid:

x1

x1

x1

x1

x3
Kirjeldus:
See skeem paneb LED-i vilkuma iga sekundi tagant. Kõigepealt määrame Arduino pin 13 väljundiks, et saaksime LED-i juhtida. Programmi käivitamisel lülitame LED-i sisse, lastes voolu läbi pin 13. Programm ootab ühe sekundi, seejärel lülitab LEDi välja. Siis ootab veel ühe sekundi ja alustab tsüklit uuesti. LED vilgub pidevalt – 1 sekund põleb, 1 sekund kustub – ja kogu protsessi juhib automaatselt programm.
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Kood:
// -----------------------------
// Arduino LED vilgutamine
// -----------------------------
void setup() {
// Määrame pin 13 väljundiks (OUTPUT)
pinMode(13, OUTPUT);
}
void loop() {
// Lülita LED sisse
digitalWrite(13, HIGH);
delay(1000); // Oota 1 sekund (1000 ms)
// Lülita LED välja
digitalWrite(13, LOW);
delay(1000); // Oota 1 sekund (1000 ms)
}
Video:
Interaktiivne Arduino skeem
RGB LED
Komponendid:

x1

x1

x1

x1

x5
Kirjeldus:
See skeem võimaldab RGB LED-il kuvada erinevaid värve ja vikerkaareüleminekuid. LED-i punane, roheline ja sinine jalg on ühendatud läbi takistite Arduino pin’idesse 11, 9 ja 10, ühine katood läheb GND-sse. Programmi käivitamisel määrame pin’id väljunditeks. Alguses näidatakse põhivärve ja nende kombinatsioone, seejärel luuakse sujuv värviüleminek spektris. PWM-signaali abil muudetakse LED-i heledust, et saavutada pehmeid üleminekuid.
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Kood:
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100; // Värvimuutuse kiirus (ms)
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
mainColors();
showSpectrum();
}
// Peamised värvid
void mainColors() {
// Kõik LEDid on välja lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Punane
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Roheline
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Sinine
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
// Kollane (punane + roheline)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Lilla (punane + sinine)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
// Roosa (sinine + punane)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
// Valge (kõik värvid sees)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
}
// Vikerkaarefekt
void showSpectrum() {
for (int x = 0; x < 768; x++) {
showRGB(x);
delay(10); // 0.01 sekundit
}
}
// RGB värvide sujuv üleminek
void showRGB(int color) {
int redIntensity;
int greenIntensity;
int blueIntensity;
if (color <= 255) {
// Punane kustub, roheline süttib
redIntensity = 255 - color;
greenIntensity = color;
blueIntensity = 0;
}
else if (color <= 511) {
// Roheline kustub, sinine süttib
redIntensity = 0;
greenIntensity = 255 - (color - 256);
blueIntensity = color - 256;
}
else {
// Sinine kustub, punane süttib
redIntensity = color - 512;
greenIntensity = 0;
blueIntensity = 255 - (color - 512);
}
analogWrite(RED_PIN, redIntensity);
analogWrite(GREEN_PIN, greenIntensity);
analogWrite(BLUE_PIN, blueIntensity);
}
Video:
Ülesanne 1: Valgusfoor
Komponendid:

x1

x1

x5

x5

x6
Kirjeldus:
See skeem juhib kahte valgusfoori – üks on autojuhtidele ja teine jalakäijatele. Päevarežiimis töötab autode foor tavapärases tsüklis: punane → roheline → kollane → punane. Jalakäijate foor töötab sünkroonis autode fooriga: kui autodel on punane tuli, siis jalakäijatel põleb roheline; kui autodel on roheline või kollane, siis jalakäijatel põleb punane.
Öörežiimis vilgub ainult autofoori kollane tuli, jalakäijate foor on välja lülitatud. Režiimide vahetamine toimub automaatselt fototakisti abil: kui valgustase on kõrge, töötab päevarežiim, kui valgust on vähe, aktiveerub öörežiim. Päeva- ja öörežiimi loogika on eraldi funktsioonides (paevReziim()
ja ooReziim()
), mida kutsutakse loop()
funktsioonis vastavalt valgusoludele.
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Kood:
// Määrame liiklusfoori LEDide pin'id
const int RED = 13;
const int YELLOW = 12;
const int GREEN = 11;
const int GREEN1 = 2;
const int RED1 = 5;
void setup() {
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(GREEN1, OUTPUT);
}
void loop() {
day(); // Päevarežiim
delay(1000);
night(); // Öörežiim
delay(1000);
}
// Öörežiim – vilgub ainult kollane tuli
void night() {
for (int i = 0; i < 5; i++) {
digitalWrite(YELLOW, HIGH); // Kollane LED põleb
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(500);
digitalWrite(YELLOW, LOW); // Kollane LED kustub
delay(500);
}
}
// Päevarežiim – normaalne liiklusfoori töö
void day() {
// Punane ja vastassuuna roheline põlevad
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED1, LOW);
delay(5000);
// Punane ja kollane koos – valmistumine
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
// Roheline süttib, punane kustub
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(GREEN1, LOW);
delay(5000);
// Roheline vilgub enne lõppu
for (int i = 0; i < 3; i++) {
digitalWrite(GREEN, LOW);
delay(500);
digitalWrite(GREEN, HIGH);
delay(500);
}
// Kollane põleb enne punasele üleminekut
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, HIGH);
delay(1000);
// Jälle punane ja vastassuuna roheline
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED1, LOW);
delay(5000);
}
Video:
Interaktiivne Arduino skeem
inframe
Uuritud funktsioonid
Funktsioon | Tüüp | Kirjeldus | Kasutus koodis |
---|---|---|---|
pinMode() |
Standard | Seab etteantud pini sisendiks (INPUT ) või väljundiks (OUTPUT ) |
LED-ide (13, 12, 11, 5, 2) seadistamine väljundina setup() -is |
digitalWrite() |
Standard | Seab digitaalse pini kõrgele (HIGH ) või madalale (LOW ) nivoolle |
LED-ide sisse/välja lülitamine day() ja night() režiimides |
delay() |
Standard | Pausib programmi töö etteantud millisekunditeks | Valgusfoori olekute vaheldumise ajastus |
setup() |
Standard | Käivitatakse üks kord Arduino käivitamisel | Pinnide ja parameetrite initsialiseerimine |
loop() |
Standard | Lõputult korduv põhifunktsioon | Kordab vaheldumisi day() ja night() funktsioone |
day() |
Kasutaja loodud | Rakendab päevarežiimi täisringi valgusfoori töös | Kahesuunalise valgusfoori põhilogika |
night() |
Kasutaja loodud | Rakendab öörežiimi (vilguv kollane tuli) | Kollase LED-i vilkumine 5 korda 500 ms intervalliga |
Kasutamisvõimalused tavaelus 🚦
🚗 Tegelikud ristmikud
Foorisüsteemide töö ja loogika testimine enne nende paigaldamist päris tänavatele.
🏙️ Nutikad linnad
Arukad valgusfoorid, mis reageerivad liikluskoormusele ja valgusoludele, parandades liiklusvoogu.
🚧 Hädaolukorrad ja ajutised lahendused
Ajutised valgusfoorid teetööde, ümbersõitude või avariide puhul.
🎓 Õppetöö ja koolitus
Lihtne ja praktiline viis õppida automaatikat, programmeerimist ja liikluskorraldust.
🏗️ Maketid ja mängud
Realistlik liiklus linnamudelites, lauamängudes ja hariduslikes makettides.
🎨 Kunst ja valgusinstallatsioonid
Valgusfoorid kui osa interaktiivsetest näitustest, festivalidest või lavashow’dest.
🏭 Tehase sisene liiklus
Automaatjuhitavate robotite ja sõidukite ohutu juhtimine tööstuskeskkondades.