Ülesanne #1

Komponendid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- Juhtmed (3tk)
- 330 Ω takisti (1tk)
- LED (1tk)
void setup() {
// pinMode() määrab töörežim
pinMode(12, OUTPUT); // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).
}
void loop() {
digitalWrite(12, HIGH); // Lülita sisse
delay(1000); // Ootab 1 sek
digitalWrite(12, LOW); // Lülita välja
delay(1000); // Ootab 1 sek
}
Ülesanne #2

Komponendid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- Juhtmed (5tk)
- 330 Ω takisti (3tk)
- RGB LED (1tk)
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);
}
Valgusfoor


Video
https://drive.google.com/file/d/1Iix44vsfV2uSWuDFGBG9gElIJYqSiI9V/view?usp=sharing
Kirjeldus
Selles ülesandes on vaja luua valgusfoor autojuhtidele ja jalakäijatele. See peaks töötama kahes režiimis: päevarežiimis ja öörežiimis. Süsteem peaks saama nende režiimide vahel automaatselt vahetada.
Päevarežiim
- kui autojuhtidel põleb punane, põleb jalakäijate roheline;
- kui autojuhtidel on roheline tuli, süttib jalakäijate punane tuli;
- kui autojuhtidel on kollane sisse lülitatud, põleb jalakäijate punane.
Öörežiim
- jalakäijatel on valgusfoor välja lülitatud ja autojuhtidel vilgub kollane.
Komponendid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- Juhtmed (6tk)
- 220 Ω Takisti (5tk)
- LED (5tk: 2 punane, 2 roheline, 1 kollane)
Selgitus
Alustuseks peame deklareerima tihvtide konstandid, millega Arduino plaadil olevad LED-id on ühendatud (nt. const int RED = 11 – määrab pin 11 punase signaali jaoks):
const int RED = 11;
const int YELLOW = 10;
const int GREEN = 9;
const int GREEN1 = 5;
const int RED1 = 6;

Lisame funktsiooni setup(), et Arduino teaks, milliseid tihvte kasutatakse LED-ide signaalide väljastamiseks ja saaks neid juhtida (nt. pinMode(RED, OUTPUT) – ütleb Arduinole, et pin-i, millega punane LED on ühendatud (pin 11), kasutatakse signaali väljastamiseks, st. seda juhitakse väljundina):
void setup() {
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(GREEN1, OUTPUT);
}
pinMode() kasutatakse selleks, et teha kindlaks, kas pin töötab sisendina (andmete lugemiseks näiteks nupust) või väljundina (seadmete, näiteks LED-ide juhtimiseks).
Päevarežiim
Kõigepealt teeme nii, et autojuhtidel põleb punane ning jalakäijatel roheline (nt. digitalWrite(YELLOW, LOW) – määrab autojuhtidele kollase signaali pin (YELLOW) madalasse olekusse, mis tähendab, et kollane tuli on välja lülitatud):
digitalWrite(YELLOW, LOW); // kollane välja lülitatud
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH); // punane sisse lülitatud
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(3000);
delay() kasutatakse programmi täitmise viivitamiseks teatud aja jooksul. See peatab koodi täitmise etteantud arvu millisekundite jaoks (nt. delay(3000) – seab ootamise 3000 millisekundiks, see tähendab, et autojuhtidele on sel ajal punane tuli ja jalakäijatele roheline tuli).
digitalWrite() on funktsioon, mida kasutatakse väärtuste (HIGH või LOW) kirjutamiseks Arduino plaadi digitaalsetele tihvtidele. See võimaldab juhtida tihvtide olekut, näiteks lülitada sisse või välja valgusdioodid.
Nüüd teeme üleminekurežiim – autojuhtidel põleb punane ja kollane ning jälakäijatel punane:
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
Nüüd on autojuhtidel valgusfoor roheline ja jalakäijatel punane:
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(3000);
Loome vilkumise efekti:
for (int i=0; i<3; i++) {
digitalWrite(GREEN, LOW);
delay(700);
digitalWrite(GREEN, HIGH);
delay(700);
}
int i = 0 – antakse muutuja i algväärtusega 0
i < 3 – tingimus, tsükkel töötab seni, kuni i on väiksem kui 3
i++ – suurendab muutuja i väärtust 1 võrra pärast iga käivitamist
See kood loob vilkuva rohelise tule efekti, mis vilgub 3 korda, sisse-ja väljalülitamise vahel on 700 millisekundiline paus.
Edasi süttib autojuhtidel kollane, jalakäijatel põleb endiselt punane:
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
Jalakäijatel on roheline, autojuhtidel punane:
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(3000);
Öörežiim
Loome kollase valguse vilkumise efekti:
void night() {
for (int i=0; i<5; i++) {
digitalWrite(YELLOW, HIGH); // lülita sisse kollane
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(700);
digitalWrite(YELLOW, LOW); // lülita välja kollane
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(700);
}
}
Kood loob vilkuva kollase tule efekti, mis vilgub 5 korda – kõigepealt põleb see 700 millisekundit, seejärel lülitub välja 700 millisekundit, pärast mida funktsioon kordub kuni i < 5.
Tsükkel
Loome tsükli, et kõik toimiks automaatselt:
void loop() {
day();
delay(1000);
night();
delay(1000);
}
Kood
const int RED = 11;
const int YELLOW = 10;
const int GREEN = 9;
const int GREEN1 = 5;
const int RED1 = 6;
void setup() {
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(GREEN1, OUTPUT);
}
// valgusfoori töö tsükkel
void loop() {
day();
delay(1000);
night();
delay(1000);
}
// päevarežiim
void day() {
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(3000);
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(3000);
for (int i=0; i<3; i++) {
digitalWrite(GREEN, LOW);
delay(700);
digitalWrite(GREEN, HIGH);
delay(700);
}
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED1, LOW);
delay(3000);
}
// öörežiim
void night() {
for (int i=0; i<5; i++) {
digitalWrite(YELLOW, HIGH); // lülita sisse kollane
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(700);
digitalWrite(YELLOW, LOW); // lülita välja kollane
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED1, LOW);
delay(700);
}
}