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 &lt; 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 &lt; 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.