void setup() {
pinMode(13, OUTPUT); // Määrab pin 13 väljundiks
}

void loop() {
digitalWrite(13, HIGH); // Lülitab LED sisse
delay(1000); // Ootab 1 sekundi
digitalWrite(13, LOW); // Lülitab LED välja
delay(1000); // Ootab 1 sekundi
}

Funktsioonide selgitus:

  • setup() – käivitub ainult korra, kui Arduino sisse lülitatakse. Siin määratakse, et pin 13 töötab väljundina.
  • loop() – kordub lõpmatuseni. Siin toimub LED vilgutamine:
    1. digitalWrite(13, HIGH) – LED süttib
    2. delay(1000) – ootus 1 sekund
    3. digitalWrite(13, LOW) – LED kustub
    4. delay(1000) – jälle ootus

🔧 Töö põhimõte:

Arduino saadab pinget LED-ile, mis süttib, ja seejärel katkestab toite – LED kustub. Vahepeal kasutatakse delay() funktsiooni ajavahe tekitamiseks.

const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100;

void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
mainColors();
showSpectrum();
}

void mainColors() {
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);

digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);

digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
}

///Kuvab põhivärvid (punane, roheline, sinine) ja nende segud (kollane, tsüaan, magenta, valge).

HIGH lülitab värvi sisse, LOW välja.

Iga värv kuvatakse 1 sekund.

void showSpectrum() {
int x;
for (x = 0; x < 768; x++) {
showRGB(x);
delay(10);
}
}

///Kuvab 768-astmelise ülemineku RGB väärtuste vahel.

Iga samm kestab 10 ms.

void showRGB(int color) {
int redIntensity;
int greenIntensity;
int blueIntensity;

if (color <= 255) {
redIntensity = 255 – color;
greenIntensity = color;
blueIntensity = 0;
} else if (color <= 511) {
redIntensity = 0;
greenIntensity = 255 – (color – 256);
blueIntensity = (color – 256);
} else {
redIntensity = (color – 512);
greenIntensity = 0;
blueIntensity = 255 – (color – 512);
}

analogWrite(RED_PIN, redIntensity);
analogWrite(GREEN_PIN, greenIntensity);
analogWrite(BLUE_PIN, blueIntensity);
}

  • Arvutab intensiivsused iga värvi jaoks (0–255).
  • Kasutab analogWrite() (PWM) funktsiooni värvide segamiseks.
  • Tekib efektne sujuv üleminek värvitoonide vahel.

Valgusfoor

int led_red = 6;

int led_red_people = 3;

int led_yellow = 5;

int led_green = 4;

int led_green_people = 2;

const int buttonPin = 7;

boolean ledOn = HIGH;

bool nightMode = false;

void setup() {

pinMode(led_red, OUTPUT);

pinMode(led_red_people, OUTPUT);

pinMode(led_yellow, OUTPUT);

pinMode(led_green, OUTPUT);

pinMode(led_green_people, OUTPUT);

pinMode(buttonPin, INPUT_PULLUP);

}

void loop() {

// Проверка кнопки и переключение режима

if (digitalRead(buttonPin) == LOW) {

delay(200); // антидребезг

nightMode = !nightMode;

while (digitalRead(buttonPin) == LOW); // ждём отпускания

}

if (nightMode) {

// Ночной режим — мигает только жёлтый

digitalWrite(led_red, LOW);

digitalWrite(led_red_people, LOW);

digitalWrite(led_green, LOW);

digitalWrite(led_green_people, LOW);

digitalWrite(led_yellow, HIGH);

delay(500);

digitalWrite(led_yellow, LOW);

delay(500);

} else {

// Обычный режим

digitalWrite(led_red, HIGH);

digitalWrite(led_green_people, HIGH);

delay(2000);

for (int i = 0; i < 6; i++) {

ledOn = !ledOn;

digitalWrite(led_green_people, ledOn);

delay(500);

}

digitalWrite(led_yellow, HIGH);

digitalWrite(led_red, LOW);

digitalWrite(led_green_people, LOW);

digitalWrite(led_yellow, LOW);

digitalWrite(led_green, HIGH);

digitalWrite(led_red_people, HIGH);

delay(2000);

for (int i = 0; i < 6; i++) {

ledOn = !ledOn;

digitalWrite(led_green, ledOn);

delay(500);

}

digitalWrite(led_green, LOW);

digitalWrite(led_red_people, LOW);

digitalWrite(led_yellow, HIGH);

delay(700);

digitalWrite(led_yellow, LOW);

}

}

Tööpõhimõte:

1. Režiimide vahetamine:

  • Kui nupp vajutatakse, vahetatakse režiimi (päev ↔ öö)
  • Kasutatakse INPUT_PULLUP ja ootamist, kuni nupp vabastatakse

2. Öörežiim (nightMode):

  • Ainult kollane LED vilgub
  • Kõik teised LED-id on kustus

3. Päevarežiim:

  • Autodel punane tuli süttib
  • Jalakäijatel roheline
  • Jalakäijate roheline vilgub 3 sekundit
  • Kollane süttib, kõik vahetub
  • Autodel roheline, jalakäijatel punane
  • Autode roheline vilgub 3 sekundit
  • Kollane uuesti ja tsükkel kordub

Olulised funktsioonid:

  • digitalRead(buttonPin) – loeb nupu seisundi
  • digitalWrite(led, HIGH/LOW) – lülitab LED sisse/välja
  • delay(ms) – ajaviivitus
  • INPUT_PULLUP – sisseehitatud takisti, et vältida nupu võbelust
  • ledOn = !ledOn – LED-i vilgutamine

Käitumine kokkuvõttes:

RežiimLED-de töö
ÖörežiimAinult kollane LED vilgub iga 0,5 s tagant
PäevarežiimTäielik valgusfoori tsükkel jalakäijate ja auto LED-idega