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!https://www.tinkercad.com/embed/4b7OdZU7q0I?editbtn=1

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