Praktika 1: Led ja RGB Led

Sisukord:

  1. Katse 1.1
  2. Katse 1.2
  3. Katse 1.3 (Ülesanne 1 Valgusfoor)

Katse 1.1

Kirjeldus:

See programm vilgutab plaatil olevat LED-i, mis on ühendatud pessa 13. Funktsioonis setup määratakse pesa, funktsioonis loop lülitatakse LED sisse ja välja ühesekundiliste vahedega.

Programm:

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
}

Kuidas programm töötab:

Setup-funktsioonis määratakse pin 13 väljundiks. Loop-funktsioonis lülitatakse LED iga sekund sisse ja välja, kasutades digitalWrite-käsku.

HIGH tähendab, et LED süttib, LOW kustutab selle. Delay(1000) lisab ühe sekundi viivituse.

Katse 1.2

Kirjeldus:

RGB LED ühendatakse digitaalpesa 9, 10 ja 11, et reguleerida punase, rohelise ja sinise komponendi heledust. Anood (kõige pikem jalg) ühendatakse toiteallikaga, et luua erinevaid värvikombinatsioone, kasutades analogWrite käsku.

Programm:

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

Kuidas programm töötab:

  • loop() – Peatsüklis toimuv tegevus, mida Arduino käivitab korduvalt.
  • setup() – Algseadistuste funktsioon, mida Arduino käivitab üks kord käivitamisel.

Muud muutujad ja funktsioonid:

  • RED_PIN = 11, GREEN_PIN = 9, BLUE_PIN = 10
    Määravad, millistele Arduino jalgadele (pin’idele) on ühendatud LED-i punane, roheline ja sinine värv.
  • DISPLAY_TIME = 100
    Näitab, kui kiiresti värvid muutuvad (ajakulu millisekundites).
  • pinMode(PIN, OUTPUT)
    Seab kõik kolm värvikanalit (punane, roheline, sinine) väljundiks, et neid oleks võimalik juhtida.

Funktsioonid:

mainColors()
Kuvab põhivärve (punane, roheline, sinine). Süütab iga värvi järjest ja ootab enne järgmise värvi näitamist ühe sekundi.

showSpectrum()
Kuvab sujuva värvigradatsiooni. Tsükkel vahemikus 0 kuni 768 muudab LED-i värvi järk-järgult, liikudes läbi värvispektri.

showRGB()
Määrab värvi heledust vastavalt tsükli väärtusele:

0–255: punane väheneb, roheline suureneb
256–511: roheline väheneb, sinine suureneb
512–767: sinine väheneb, punane suureneb

Katse 1.3 (Ülesanne 1 Valgusfoor)

Töö kirjeldus:
Valgusfoori töö kahe režiimiga. Tavarežiim ja öörežiim.

Töö protsess:
Ühendage dioodid, takisti ja juhtmed plaadiga. Valgusfoor töötab Valgusfoor tava- ja öörežiimil.

Tavarežiim – Kui tavafooris põleb punane LED, põleb fooris inimestele roheline LED ja vastupidi.

Öörežiim — pärast seda, kui valgusfoor on tavarežiimis läbi käinud 1 kord, lülitub valgusfoor öörežiimile. Sel juhul vilgub autode juures kollane LED ja punane LED on sisse lülitatud, jalakäijate juures vilgub ainult roheline LED.

Kasutatud komponenid:
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (6tk)
Takisti (5tk, 220 Om)
LED (5tk: 2 punane, 2 roheline, 1 kollane)

LED-ide rakendamine:
Valgustuse ja valgustuse jaoks: Tänava-, tööstus-, koduvalgustuses (LED-lambid ja lambid); Dekoratiivvalgustuses, taustvalgustuses.

Skeem:

Programm:

const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
const int P_RED_PIN = 10;
const int P_GREEN_PIN = 9;

bool nightMode = false;
int loopCount = 0;

void setup()
{
  pinMode(RED_PIN, OUTPUT);
  pinMode(YELLOW_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  
  pinMode(P_RED_PIN, OUTPUT);
  pinMode(P_GREEN_PIN, OUTPUT);
}

void loop()
{
  if (loopCount == 1) 
  {
    nightMode = !nightMode;
    loopCount = 0;
  }
  
  if(!nightMode)
  {
  	cars();
  	pedestrians();
  }
  else
  {
    nightCars();
    nightPedestrians();
  }
  
  loopCount++;
}

void cars()
{
  delay(500);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(YELLOW_PIN, LOW);
  digitalWrite(P_RED_PIN, HIGH);
  
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(YELLOW_PIN, HIGH);
  delay(2000);
  
  digitalWrite(YELLOW_PIN, LOW);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  delay(10000);

  for (int i = 0; i < 3; i++)
  {
    digitalWrite(GREEN_PIN, LOW);
    delay(500);
    digitalWrite(GREEN_PIN, HIGH);
    delay(500);
  }
  
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(YELLOW_PIN, HIGH);
  delay(2000);

  digitalWrite(YELLOW_PIN, LOW);
  digitalWrite(RED_PIN, HIGH);
}

void pedestrians()
{
  delay(500);
  digitalWrite(P_RED_PIN, LOW);
  digitalWrite(P_GREEN_PIN, HIGH);
  delay(10000);

  for (int i = 0; i < 3; i++)
  {
    digitalWrite(P_GREEN_PIN, LOW);
    delay(500);
    digitalWrite(P_GREEN_PIN, HIGH);
    delay(500);
  }

  digitalWrite(P_GREEN_PIN, LOW);
  digitalWrite(P_RED_PIN, HIGH);
}

void nightCars() 
{
  for (int i = 0; i < 5; i++) 
  {
    digitalWrite(RED_PIN, HIGH);
    digitalWrite(GREEN_PIN, LOW);
    digitalWrite(YELLOW_PIN, HIGH);
    delay(500);
    digitalWrite(YELLOW_PIN, LOW);
    delay(500);
  }

  digitalWrite(YELLOW_PIN, LOW);
  digitalWrite(RED_PIN, HIGH);
}

void nightPedestrians() 
{
  for (int i = 0; i < 5; i++) 
  {
    digitalWrite(P_RED_PIN, LOW);
    digitalWrite(P_GREEN_PIN, HIGH);
    delay(500);
    digitalWrite(P_GREEN_PIN, LOW);
    delay(500); 
  }

  digitalWrite(P_GREEN_PIN, LOW);
  digitalWrite(P_RED_PIN, HIGH);
}

Video:

Link

Uued funktsioonid:

pinMode(RED, OUTPUT) – Funktsioon võtab kaks argumenti: esimene on pordi number, teine määrab suuna – kas tegemist on sisendi (INPUT) või väljundiga (OUTPUT).
digitalWrite(RED, LOW) – Lülitab LED-i välja.
digitalWrite(RED, HIGH) – Lülitab LED-i sisse.
delay() – Paneb programmi ootama määratud aja (millisekundites).
for (int x = 0; x < 5; x++) – Käivitatakse tsükkel kolm korda järjest.

cars() – Juhtab autode fooritulesid päevasel ajal.
pedestrians() – Juhtab jalakäijate fooritulesid päevasel ajal.
nightCars() – Lülitab öörežiimis sisse vilkuva kollase tule autodele.
nightPedestrians() – Lülitab öörežiimis sisse vilkuva rohelise tule jalakäijatele