LED valgusdioodi vilgutamine

void setup()
{
// pinMode() määrab töörežim
pinMode(13, OUTPUT); // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).
}
void loop()
{
digitalWrite(13, HIGH); // Lülita sisse
delay(1000); // Ootab 1 sek
digitalWrite(13, LOW); // Lülita välja
delay(1000); // Ootab 1 sek
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
delay(250);
}
RGB ledi ühendamine

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);
}
Ülesanne 1 “Valgusfoor”
Töö kirjeldus
Selles projektis ehitati kahest valgusfoorist koosnev süsteem: üks autodele, teine jalakäijatele. Süsteem töötab kahes režiimis: päevarežiim, kus foorid vahelduvad liiklusloogika järgi, ja öörežiim, kus vilgub ainult kollane LED. See simuleerib realistlikku liikluskorraldust Arduino abil.
Vajuta “Start Simulation” ja vaata, kuidas toimib valgusfoor!
Kasutatud komponenid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- Juhtmed (6tk)
- 220 Ω Takisti (5tk)
- LED (5tk: 2 punane, 2 roheline, 1 kollane)
Töö protsess
LED-id ühendati vastavalt funktsioonile:
- Autode foor: punane (11), kollane (12), roheline (9)
- Jalakäijate foor: punane (6), roheline (5)
setup()
– funktsioon määrab kõik LED-id väljundiks.
loop()
funktsioonis kutsutakse järjest day()
(tavarežiim) ja night()
(öörežiim) funktsioone.
Tavarežiim (day
):
- Autodele punane + jalakäijatele roheline
- Siis kollane faas
- Siis autodele roheline + jalakäijatele punane
- Roheline vilgub enne vahetust
Öörežiim (night
):
- Kollane LED vilgub 5 korda
- Kõik muud LED-id on välja lülitatud
Uuritud funktsioonid
pinMode(pin, mode) |
Määrab, kas vastav pin töötab sisendi (INPUT ) või väljundina (OUTPUT ). Antud projektis kasutati seda LED-ide väljundiks seadistamiseks. |
digitalWrite(pin, value) |
Lülitab vastava pinni HIGH (pinge peal – LED põleb) või LOW (pinge maas – LED kustub). Seda kasutatakse LED-ide sisse- ja väljalülitamiseks. |
delay(ms) |
Peatab programmi täitmise ms millisekundiks. Näiteks delay(500) teeb 0.5 sekundi pausi. |
for (int i = 0; i < N; i++) |
Tsükkel, mis kordab mingit tegevust mitu korda järjest. Sinu koodis kasutatakse seda öörežiimis kollase LED-i vilgutamiseks. |
void setup() |
Funktsioon, mis käivitatakse ainult üks kord, kui Arduino käivitatakse. Siin seadistatakse kõik LED-id töörežiimi. |
void loop() |
Funktsioon, mis töötab korduvalt lõpmatult, kuni Arduino on sees. Siin kutsutakse välja päevarežiim ja öörežiim. |
void functionName() |
Kasutaja loodud funktsioonid (day() ja night() ), mis aitavad koodi loogikaliselt struktureerida. |
Kasutamisvõimalused tavaelus
- Tänavavalgustus – Reaalne fooride töö imiteerimine
- Turvalisus – Kollane öörežiimi LED hoiatab liiklejaid
- Haridus – Sobib väga hästi Arduino õppimiseks ja loogilise mõtlemise arendamiseks
- Dekoratiivne kasutus – LED efektid on sobilikud ka valgusmängudeks ja õppemudeliteks
Skeem

Video:
Programm
const int RED = 11;
const int YELLOW = 12;
const int GREEN = 9;
const int GREEN1 = 5;
const int RED1 = 6;
void setup()
{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(GREEN1, OUTPUT);
}
// цикл работы светофора
void loop(){
day();
delay(1000);
night();
delay(1000);
}
// ночной режим
void night(){
for (int i=0; i<5;i++){
digitalWrite(YELLOW, HIGH); // Включаем желтый
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(500);
digitalWrite(YELLOW, LOW); // Выключаем желтый
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(500);
}
}
void day() {
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(5000);
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(5000);
for (int i=0; i<3;i++){
digitalWrite(GREEN, LOW);
delay(500);
digitalWrite(GREEN, HIGH);
delay(500);
}
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(5000);
}