Tema 1: LED ja RGB LED / Valgusfoor 

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);

}