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:
- digitalWrite(13, HIGH) – LED süttib
- delay(1000) – ootus 1 sekund
- digitalWrite(13, LOW) – LED kustub
- 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žiim | LED-de töö |
| Öörežiim | Ainult kollane LED vilgub iga 0,5 s tagant |
| Päevarežiim | Täielik valgusfoori tsükkel jalakäijate ja auto LED-idega |

