Valgusfoor
Minu Valgusfoor Tinkerkaadis

Kuidas kood töötab Arduinas

Minu kood Tinkerkaadis
// Määrame iga LED-i pin'id
int dayGreen = 13;
int dayYellow = 12;
int dayRed = 11;
int nightYellow = 10;
int pedGreen = 9;
int pedRed = 8;
void setup() {
// Seadistame pin'id väljunditeks
pinMode(dayGreen, OUTPUT);
pinMode(dayYellow, OUTPUT);
pinMode(dayRed, OUTPUT);
pinMode(nightYellow, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
}
void loop() {
// === Päevarežiim ===
// Roheline tuli 5 sekundit
digitalWrite(dayGreen, HIGH);
delay(5000);
// Roheline vilgub 2 sekundit
for (int i = 0; i < 4; i++) { // 4 korda 0.5 sek
digitalWrite(dayGreen, LOW);
delay(250);
digitalWrite(dayGreen, HIGH);
delay(250);
}
digitalWrite(dayGreen, LOW);
// Kollane tuli 1 sekund
digitalWrite(dayYellow, HIGH);
delay(1000);
digitalWrite(dayYellow, LOW);
// Punane tuli 5 sekundit
digitalWrite(dayRed, HIGH);
delay(5000);
// Punane vilgub 2 sekundit
for (int i = 0; i < 4; i++) {
digitalWrite(dayRed, LOW);
delay(250);
digitalWrite(dayRed, HIGH);
delay(250);
}
digitalWrite(dayRed, LOW);
// === Öörežiim ===
for (int i = 0; i < 10; i++) { // 5 sekundit vilkumist 0.5 sek intervalliga
digitalWrite(nightYellow, HIGH);
delay(250);
digitalWrite(nightYellow, LOW);
delay(250);
}
// === Jalakäijate režiim ===
// Roheline jalakäija tuli 5 sekundit
digitalWrite(pedGreen, HIGH);
delay(5000);
// Roheline vilgub 2 sekundit
for (int i = 0; i < 4; i++) {
digitalWrite(pedGreen, LOW);
delay(250);
digitalWrite(pedGreen, HIGH);
delay(250);
}
digitalWrite(pedGreen, LOW);
// Punane jalakäija tuli 5 sekundit
digitalWrite(pedRed, HIGH);
delay(5000);
digitalWrite(pedRed, LOW);
// Tsükkel algab uuesti
}
Siin on minu Standart funktsioonid mida ma kasutan
pinMode(pin, mode) – Määrab, kas kindel pin töötab sisendi (INPUT) või väljundina (OUTPUT).digitalWrite(pin, value) – Lülitab pin’i kõrgele (HIGH) või madalale (LOW) tasemele – st lülitab LED-i sisse või välja.
delay(ms) – Peatab programmi teatud ajaks millisekundites (1000 ms = 1 sekund).
void setup() – Funktsioon, mis käivitatakse üks kord Arduino sisselülitamisel või taaskäivitamisel. Siin tehakse algseaded.
void loop() – Peamine funktsioon, mis jookseb pidevalt ringis, kuni Arduino on sisse lülitatud.
Tsükkel
For – for (int i = 0; i < 4; i++) – Korratakse koodiplokki kindlaksmääratud arv kordi.
Kuidas töötab ja Video
Ühendusskeem (Tinkercad)
Arduino Uno on ühendatud 6 LEDiga leivaalusel:
Pin 13 → roheline LED (päevane)
Pin 12 → kollane LED (päevane)
Pin 11 → punane LED (päevane)
Pin 10 → kollane LED (öörežiim)
Pin 9 → roheline LED (jalakäija)
Pin 8 → punane LED (jalakäija)
Kõik LEDid on ühendatud läbi takistite GND-le.
Programmi töö kirjeldus
Programm imiteerib valgusfoori töörežiime:
- Päevarežiim: Päevased LEDid töötavad nagu päris valgusfoor – roheline, vilkuv roheline, kollane, punane ja vilkuv punane.
- Öörežiim: Kollane LED vilgub pidevalt 5 sekundit.
- Jalakäijarežiim: Jalakäijale roheline LED 5 sekundiks + vilkumine, seejärel punane 5 sekundiks.
Programm töötab tsüklina – kordub lõputult.
Video
https://drive.google.com/file/d/1hT-PmgA4bP87-axhPaU0mPLrGc8-BnSP/view?usp=sharing
Kuidas elus kasutada
Seda programmi saab kasutada reaalses elus ristmiku liiklusvalgusfoori töö simuleerimiseks, eriti liikluseeskirjade õpetamisel, nutikate transpordisüsteemide väljatöötamisel või jalakäijate ülekäiguradade signalisatsiooni testimisel.
Katse 1 LED
See kood on mõeldud Arduino jaoks. See paneb LED-i vilkuma 1-sekundilise intervalliga.
Funktsioonid:
setup() – Initsialiseerib 13. pinni väljundiks.
loop() – Programmi põhitsükkel, mis lülitab 13. pinni sisse ja välja 1-sekundilise viivitusega.


Katse 2. RGB
Pildil on RGB LED, mida juhib Arduino. Kood lülitab LED-i sisse erinevates värvides ja loob sujuva ülemineku efektide vahel.
Funktsioonid
- void setup() – initsialiseerib RGB-LED pinnid väljunditena.
- void loop() – programmi põhitsükkel, kutsub välja funktsioonid mainColors() ja showSpectrum().
- void mainColors() – lülitab järjekorras erinevad värvid sisse, viibib igal värvil 1 sekundi.
- void showSpectrum() – muudab järk-järgult RGB-LED värvi, liikudes väärtuste vahemikus 0 kuni 767.
- void showRGB(int color) – arvutab punase, rohelise ja sinise värvi intensiivsuse, et luua sujuv üleminek toonide vahel.


Minu kood
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100; // värvimuutuse kiirus
void setup()
{
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop()
{
mainColors();
showSpectrum();
}
void mainColors()
{
// Kõik LEDid on välja lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
//Põleb punane
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Põleb roheline
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Sinine on sisse lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
// Kollane.
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Lilla
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
//Roosa
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
//Valge ehk kõik on sisse lülitatud
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
}
// Vikerkaar.
void showSpectrum()
{
int x;
for (x = 0; x < 768; x++)
{
showRGB(x); //
delay(10); // paus 0,001 sek
}
}
// ShowRGB() põhivärvid:
// 0 = punane
// 255 = roheline
// 511 = sinine
// 767 = jälle punane
void showRGB(int color)
{
int redIntensity;
int greenIntensity;
int blueIntensity;
if (color <= 255)
{
redIntensity = 255 - color; // lülitakse välja punane
greenIntensity = color; // lülitakse sisse roheline
blueIntensity = 0; // sinine on välja lülitatud
}
else if (color <= 511)
{
redIntensity = 0; // punane on välja lülitatud
greenIntensity = 255 - (color - 256);
blueIntensity = (color - 256);
}
else if (color >= 512)
{
redIntensity = (color - 512);
greenIntensity = 0;
blueIntensity = 255 - (color - 512);
}
analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine
analogWrite(BLUE_PIN, blueIntensity);
analogWrite(GREEN_PIN, greenIntensity);
}