Praktika 1 Led ja RGB Led

KATSE 1.1

LED valgusdioodi vilgutamine

See kood paneb 13. pordi külge ühendatud LED-i vilkuma: 1 sekund põleb, 1 sekund ei põle. Funktsioonis setup() määratakse, et pin 13 on väljund, ja funktsioonis loop() toimub vilgutamine koos viivitustega.

Kui kõik on õigesti, näed mustas kastis teadet, kui palju mälu kood kasutab, ja rohelisel ribal kuvatakse “Done uploading”. Vea korral muutub roheline riba oranžiks ja kuvatakse veateade koos täpse info ja punase kirjaga mustas kastis.

—————-Vilgutamisnite kood————–

void setup()
{
// pinMode() määrab töörežiimi
pinMode(13, OUTPUT); // Määrab 13-pini töörežiimiks OUTPUT (Väljund)
}

void loop()
{
digitalWrite(13, HIGH); // Lülitab LED sisse (HIGH tähendab, et pinil 13 on 5V)
delay(1000); // Ootab 1000 millisekundit ehk 1 sekundit

digitalWrite(13, LOW); // Lülitab LED välja (LOW tähendab, et pinil 13 on 0V)
delay(1000); // Ootab jälle 1000 millisekundit ehk 1 sekundit
}

tinkercad.com :

https://www.tinkercad.com/things/i3RIk1oEzss-led-valgusdioodi-vilgutamine

KATSE 1.2

RGB ledi ühendamine

Värvide juhtimiseks ühendame punase, rohelise ja sinise jala digitaalpesadesse 9, 10 ja 11, millel on ~ märk. Need pesad toetavad analogWrite käsku, mis võimaldab muuta LED-i eredust (ja seega ka värvitooni).

See kood juhib RGB LED-i, kasutades kolme värvikanalit: punast, rohelist ja sinist. Kood kuvab esmalt peamisi värve, nagu punane, roheline, sinine, kollane, lilla ja valge, lülitades need iga sekundi tagant sisse ja välja. Lisaks sellele loob kood sujuva vikerkaare efekti, kus värvid muutuvad järjest ja üleminekud on sujuvad. Funktsioon mainColors() lülitab sisse erinevad värvikombinatsioonid, igaüks kestab ühe sekundi, ning funktsioon showSpectrum() loob värvide vaheldumise, läbides 768 sammu. Funktsioon showRGB() arvutab iga värvi intensiivsuse vastavalt sellele, millises etapis värvi üleminek on, ja saadab selle väärtuse LED-ile. Kood on kasulik erinevate värvi- ja valgustusefektide loomiseks, kasutades RGB LED-e.

Kui kõik kolm värvi põlevad korraga eri eredusega, saame luua erinevaid värvitoone. Ühendused peaksid välja nägema nagu joonisel näidatud.

—————-Vilgutamisnite kood————–

// Määrame pin’id RGB LED värvide jaoks
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;

int DISPLAY_TIME = 100; // värvimuutuse kiirus (kasutatakse spektri kuvamisel)

void setup()
{
// Määrame LEDi pin’id väljunditeks
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}

void loop()
{
mainColors(); // Näitame peamisi värve ükshaaval
showSpectrum(); // Näitame sujuvat vikerkaare efekti
}

// Funktsioon, mis näitab eri värvide kombinatsioone järjest
void mainColors()
{
// Kõik LEDid on välja lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

// Ainult punane LED põleb
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

// Ainult roheline LED põleb
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

// Ainult sinine LED põleb
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 (roheline + sinine)
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);

// Roosa (punane + sinine)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);

// Valge (kõik kolm LEDi on sees)
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
}

// Funktsioon, mis loob sujuva vikerkaare efekti
void showSpectrum()
{
int x;

// Läbime 768 sammu (igaüks muudab värvi veidi)
for (x = 0; x < 768; x++)
{
showRGB(x); // Arvutame ja rakendame värvi vastavalt sammule
delay(10); // Lühike paus, et värvimuutus oleks nähtav
}
}

// Funktsioon, mis arvutab LED intensiivsuse vastavalt sisendile 0–767
void showRGB(int color)
{
int redIntensity;
int greenIntensity;
int blueIntensity;

// Punane → roheline (0–255)
// Punane → roheline (0–255)
  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);

}

tinkercad.com :

https://www.tinkercad.com/things/565QUYZpy11-rgb-ledi-uhendamine

Ülesanne 1 Valgusfoor

Tööpõhimõte:

Töötab nagu auto ja inimeste foor koos öö režiimidega (vilkuv kollane).

Öö ja päeva vahel lülitumine automaatselt.

Öö ja päeva režiimid kirjuta eraldi funktsioonides ja käivita neid tsüklide abil.

Luua skeem ja kirjutada kood tinkercad.com keskkonnas.

Kui emulaatoris kõik töötab, siis koostada skeem päris Arduino peal.

Luua video töötavast foorist ja lisa koostatud aruandele.

KASUTATI:

5 juhtmed lambid + 1 juhe väljundiks QND-le.

5 takistit 220Q. 5 lambipirni (2 punast, 2 rohelist, 1 kollane).

  1. Esimeses fooris on kolm LED-i:
    • Punane (pin 13)
    • Kollane (pin 12)
    • Roheline (pin 11)
  2. Teises fooris on kaks LED-i:
    • Punane (pin 7)
    • Roheline (pin 6)

Kuidas see töötab?

Alguses on esimene foor punane, teine foor roheline. See kestab 5 sekundit.Siis esimene foor muutub kollaseks (kollane süttib 1 sekundiks) enne, kui ta roheliseks läheb.Kui esimene foor on roheline, siis teine foor on punane ja vastupidi – see kestab jälle 5 sekundit.

Enne, kui esimene foor kollaseks läheb, vilgub roheline 3 korda, iga vilkumine kestab pool sekundit.Lõpuks saab esimene foor jälle kollaseks ja siis tsükkel kordub.

Kokkuvõttes – foorid vahelduvad: kui üks on roheline, siis teine on punane. Ja enne, kui esimene foor kollaseks läheb, vilgub roheline veel 3 korda.

Minu skeem:

—————-Vilgutamisnite kood————–

// Первый светофор (3 цвета)
const int red1 = 13;
const int yellow1 = 12;
const int green1 = 11;

// Второй светофор (2 цвета)
const int red2 = 7;
const int green2 = 6;

void setup() {
pinMode(red1, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(green1, OUTPUT);

pinMode(red2, OUTPUT);
pinMode(green2, OUTPUT);
}

void loop() {
// Первый светофор – красный, второй – зеленый
digitalWrite(red1, HIGH);
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);

digitalWrite(red2, LOW);
digitalWrite(green2, HIGH);

delay(5000); // 5 сек

// Первый светофор – желтый перед сменой
digitalWrite(yellow1, HIGH);
delay(1000); // 1 сек

// Первый светофор – зеленый, второй – красный
digitalWrite(red1, LOW);
digitalWrite(yellow1, LOW);
digitalWrite(green1, HIGH);

digitalWrite(red2, HIGH);
digitalWrite(green2, LOW);

delay(5000); // 5 сек

// Зеленый мигает 3 раза перед сменой
for (int i = 0; i < 3; i++) {
digitalWrite(green1, LOW);
delay(500); // Полсекунды выключен
digitalWrite(green1, HIGH);
delay(500); // Полсекунды включен
}

// Первый светофор – желтый перед сменой
digitalWrite(green1, LOW);
digitalWrite(yellow1, HIGH);
delay(1000); // 1 сек
}

tinkercad.com :

https://www.tinkercad.com/things/at1yhOO9w9y-swanky-snaget
video, kuidas programm toimib