Ülesanne 2 Valguskett


Katse 2

Aruanne: Ülesanne 2 – Гирлянда / Valguskett


1. Tehtud näidisülesanded

  • LEDide vilgutamine järjest (ühe kaupa edasi ja tagasi).
  • Kõik LEDid korraga vilkuma.
  • Küünlaefekti simuleerimine LEDidele.
  • Potentsiomeetriga juhtimine (režiimide valimine).
  • Töötab 5 režiimis.

2. Uuritud funktsioonid

digitalWrite() – Lülitab LEDi sisse või välja.

delay() – Aeglustab programmi x millisekundiks.

random(a, b) – Tagastab juhusliku arvu vahemikus a kuni b.

analogRead() – Loeb analoogsisendist väärtust (0–1023).

map() – Teisendab ühe väärtuse ühest vahemikust teise.

constrain() – Piirab väärtust määratud vahemiku sisse.

sizeof() – Kasutatud massiivi pikkuse automaatseks arvutamiseks.


3. Töö kirjeldus

Valmistati valguskett, kus mitmed LEDid töötavad erinevates visuaalsetes režiimides. Režiimi valik toimub potentsiomeetri abil. Töö viidi läbi Tinkercad.com keskkonnas ning testiti edukalt. Valguskett töötab viies erinevas režiimis:

  1. Kõik LEDid vilguvad korraga.
  2. LEDid vilguvad ükshaaval järjest.
  3. LEDid vilguvad vastupidises järjekorras.
  4. Juhuslik küünlaefekt (nagu leek).
  5. Laineefekt – LEDid süttivad järjest ja kustuvad.

4. Kasutatud komponendid

  • 8 x LED (või RGB LED)
  • 1 x potentsiomeeter
  • 8 x takistit (220–330 ohm, LEDide jaoks)
  • 1 x Arduino UNO
  • Ühendusjuhtmed
  • Breadboard

5. Skeem


6. Programm





int potPin = A0; // Potentsiomeeter ühendatud A0 pinni
int leds[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 8 LEDi pin'id
const int ledCount = sizeof(leds) / sizeof(leds[0]); // Automaatne pikkuse arvutus

void setup() {
  for (int i = 0; i < ledCount; i++) {
    pinMode(leds[i], OUTPUT); // Kõik LEDid määrame väljundiks
  }
  Serial.begin(9600);
}

void loop() {
  int potValue = analogRead(potPin); // Loeme potentsiomeetri väärtust
  int mode = map(potValue, 0, 1023, 0, 4); // Valime režiimi 0-4
  Serial.print("Režiim: ");
  Serial.println(mode);

  switch (mode) {
    case 0: allBlink(); break;
    case 1: oneByOne(); break;
    case 2: reverseBlink(); break;
    case 3: candleEffect(); break;
    case 4: wave(); break;
  }
}

// Kõik LEDid vilguvad korraga
void allBlink() {
  setAll(HIGH);
  delay(300);
  setAll(LOW);
  delay(300);
}

// LEDid vilguvad järjest
void oneByOne() {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(leds[i], HIGH);
    delay(200);
    digitalWrite(leds[i], LOW);
  }
}

// LEDid vilguvad vastupidises järjekorras
void reverseBlink() {
  for (int i = ledCount - 1; i >= 0; i--) {
    digitalWrite(leds[i], HIGH);
    delay(200);
    digitalWrite(leds[i], LOW);
  }
}

// Juhuslik küünlaefekt igale LEDile
void candleEffect() {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(leds[i], HIGH);
    delay(random(50, 150));
    digitalWrite(leds[i], LOW);
    delay(random(50, 100));
  }
}

// LEDid süttivad nagu laine ja kustuvad järjest
void wave() {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(leds[i], HIGH);
    delay(100);
  }
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(leds[i], LOW);
    delay(100);
  }
}

// Lülitab kõik LEDid korraga sisse või välja
void setAll(int state) {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(leds[i], state);
  }
}

7. Video ja skeem videolt


8. Kasutamisvõimalused tavaelus

  • Dekoratiivvalgustus (nt jõulutuled, peokaunistused).
  • Valgusreklaamid ja poeaknad.
  • Turva- või hoiatussüsteemid (vilkuvad LEDid).
  • Õppematerjal elektroonika ja programmeerimise algõppes.
  • Interaktiivsed valgusinstallatsioonid.