3. Nuppude ja Slideswitch’i kasutamise võimalus
Nupp
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Nupp – 2
- LED – 1 (punane)
- Takisti – 3
- Juhe – 7
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
const int button1Pin = 2; //viik kunu on ühebdatud nupp1
const int button2Pin = 3; //viik kuhu on ühendatud nupp2
const int ledPin = 13;
void setup()
{
pinMode(button1Pin, INPUT); //algväärtuse nupu viigu sisendiks
pinMode(button2Pin, INPUT); //algväärtuse nupu viigu sisendiks
pinMode(ledPin, OUTPUT); //algväärtuse LED viigu väljundiks
}
void loop()
{
int button1State, button2State; //nupu oleku muutujad
button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse(HIGH või LOW)
button2State = digitalRead(button2Pin);
if (((button1State == LOW) || (button2State == LOW)) // kui nupu on alla vajutatud
&& !
((button1State == LOW) && (button2State == LOW))) // kui nupude on alla vajutatud
{
digitalWrite(ledPin, HIGH); // lülitame LED sisse
}
else
{
digitalWrite(ledPin, LOW); // lülitame LED välja
}
}
3.2. Photoresistor
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Photoresistor – 1
- LED – 1 (punane)
- Takisti – 2
- Juhe – 6
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
const int sensorPin = 0;
const int ledPin = 9;
int lightLevel, high = 0, low = 1023;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // //Serial monitori seadistamine
}
void loop()
{
// AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).
// AnalogWrite(), kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse
// Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.
// Constrain() saed muutujale kindlad piirväärtused.
// Näiteks: kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 0:.
// lightLevel = constrain(lightLevel, 0, 255);
manualTune(); //
//autoTune(); //
analogWrite(ledPin, lightLevel);
// Выражение выше, будет изменять яркость светодиода вместе с уровнем освещенности. Чтобы сделать наоборот, заменить в analogWrite(ledPin, lightLevel) "lightLevel" на "255-lightLevel". Теперь у нас получился ночник!
Serial.print(lightLevel); // prindime tulemused Serial Monitori (вывод данных с фоторезистора (0-1023))
Serial.println("");
delay(1000);
}
void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)).
lightLevel = constrain(lightLevel, 0, 255);
}
void autoTune()
{
if (lightLevel < low)
{
low = lightLevel;
}
if (lightLevel > high)
{
high = lightLevel;
}
lightLevel = map(lightLevel, low+10, high-30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
Valgusfoor öö ja päeva režiimides
Töö kirjeldus
Koodi kirjutamine, virtuaalse skeemi loomine koodi testimiseks ja valmis tulemus päris skeemil.
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Photoresistor – 1
- Potentsiomeeter – 1
- LED – 3 (punane, kollane, roheline)
- Takisti – 1
- Juhe – 12
Töö protsess
Kood laaditakse Arduino plaadile. See loeb potentsiomeetri asendit ja vastavalt selle väärtusele aktiveerib ühe neljast valgusefektist.
Potentsiomeetri pööramine muudab LED-ide töörežiimi:
- Käivitatakse autode režiim, kus punane, kollane ja roheline LED süttivad vaheldumisi.
- Käivitatakse jalakäijate režiim, kus punane ja roheline LED süttivad vaheldumisi.
- Aktiveeritakse fototakisti, mis lülitab kas päevarežiimi (punane, kollane ja roheline LED süttivad vaheldumisi) või öörežiimi (ainult kollane vilgub).
- Kõik LED-id on välja lülitatud.
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
const int RED = 11;
const int YELLOW = 12;
const int GREEN = 13;
const int sensorPin = A0;
const int potPin = A1;
int lightLevel = 0;
int sensorValue = 0;
void setup() {
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(potPin);
int mode = map(sensorValue, 0, 1023, 0, 4);
Serial.print("Mode: ");
Serial.println(mode);
switch (mode) {
case 0:
car();
break;
case 1:
people();
break;
case 2:
day_night();
break;
case 3:
off();
break;
default:
off();
break;
}
}
void car() {
digitalWrite(RED, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
delay(3000);
digitalWrite(YELLOW, HIGH);
delay(300);
digitalWrite(RED, LOW);
delay(1000);
digitalWrite(GREEN, HIGH);
delay(300);
digitalWrite(YELLOW, LOW);
delay(3000);
digitalWrite(YELLOW, HIGH);
delay(300);
digitalWrite(GREEN, LOW);
delay(1000);
digitalWrite(RED, HIGH);
delay(300);
digitalWrite(YELLOW, LOW);
delay(3000);
}
void people() {
digitalWrite(RED, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
delay(2500);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
delay(2500);
}
void day_night() {
lightLevel = analogRead(sensorPin);
Serial.print("Light level: ");
Serial.println(lightLevel);
if (lightLevel > 500) {
digitalWrite(RED, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
delay(1000);
digitalWrite(YELLOW, LOW);
delay(1000);
}
else {
digitalWrite(RED, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
delay(3000);
digitalWrite(YELLOW, HIGH);
delay(300);
digitalWrite(RED, LOW);
delay(1000);
digitalWrite(GREEN, HIGH);
delay(300);
digitalWrite(YELLOW, LOW);
delay(3000);
digitalWrite(YELLOW, HIGH);
delay(300);
digitalWrite(GREEN, LOW);
delay(1000);
digitalWrite(RED, HIGH);
delay(300);
digitalWrite(YELLOW, LOW);
delay(3000);
}
}
void off() {
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
delay(500);
}
Video
https://drive.google.com/file/d/12EJd6HYKMDQxF7aZ3lmd35XQnyng-KL7/view?usp=sharing
Kasutamisvõimalused tavaelus.
Mängudes ja simulatsioonides

