Praktika 3: Nupp, Switch ja Photoresistor ja öölamp
Aruanne
Katse 3.1: -Nupp, Switch ja Photoresistor-
1. – Näidis- Nuppu kasutamine
Komponendid:

Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Kood:
// Nuppud.
-----Kood-----
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
}
}
2. – Näidis- Slideswitch’i kasutamine
Skeem:

Kood:
const int button1Pin = 2; // nupp1 on ühendatud viiguga 2
const int button2Pin = 3; // nupp2 on ühendatud viiguga 3
const int ledPin = 13; // LED on ühendatud viiguga 13
void setup() {
pinMode(button1Pin, INPUT); // määrame nupu viigu sisendiks
pinMode(button2Pin, INPUT);
pinMode(ledPin, OUTPUT); // määrame LED viigu väljundiks
}
void loop() {
int button1State = digitalRead(button1Pin); // loeme nupu 1 oleku
int button2State = digitalRead(button2Pin); // loeme nupu 2 oleku
// LED süttib, kui ainult üks nupp on alla vajutatud (LOW)
if ((button1State == LOW || button2State == LOW) &&
!(button1State == LOW && button2State == LOW)) {
digitalWrite(ledPin, HIGH); // LED sisse
} else {
digitalWrite(ledPin, LOW); // LED välja
}
}
Katse 3.2: -Photoresistor-
Komponendid:

Kirjeldus:
Ühendada kõigepealt maketeerimislaua ühte äärde (nagu joonisel) fototakisti nii, et üks jalg oleks ühendatud toitega ning teine — läbi takisti maandusesse ja analoogsisendi viigule. Seejärel paigutada LED maketeerimislaua teise otsa, et selle valgus ei mõjutaks fototakistit. Valguse intensiivsuse jälgimiseks avada Serial Monitor rohelise tööriistariba paremas ääres oleva luubiikooni kaudu.
Skeem:

Kood:
const int sensorPin = 0; // Fototakisti ühendatud A0 viigule
const int ledPin = 9; // LED ühendatud PWM-viigule D9
int lightLevel, high = 0, low = 1023;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Serial Monitori käivitamine
}
void loop() {
lightLevel = analogRead(sensorPin); // Loeme valguse taseme (0–1023)
// Valige ainult üks meetod:
manualTune(); // käsitsi piiride seadistus
// autoTune(); // automaatne kalibreerimine
analogWrite(ledPin, lightLevel); // Muudame LEDi heledust vastavalt valguse tasemele
// Kui tahad vastupidist efekti (nt öölambi loogika):
// analogWrite(ledPin, 255 - lightLevel);
Serial.print("Valguse tase: ");
Serial.println(lightLevel); // Väljund Serial Monitori
delay(1000);
}
void manualTune() {
// Teisendame 300–800 vahemiku väärtused 0–255 vahemikku (mida silmale sobivam)
lightLevel = map(lightLevel, 300, 800, 0, 255);
lightLevel = constrain(lightLevel, 0, 255); // Piirame väärtuse kindlatesse piiridesse
}
void autoTune() {
// Salvestame reaalajas madalaima ja kõrgeima väärtuse
if (lightLevel < low) low = lightLevel;
if (lightLevel > high) high = lightLevel;
// Kalibreerime vahemiku vastavalt reaalsetele oludele
lightLevel = map(lightLevel, low + 10, high - 30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
Ülesanne 3: Öölamp
Komponendid:

x1

x1

x1

x3 220Ω x1 10 kΩ

x12

x1
Kirjeldus:
ototakisti ja takisti moodustavad pingejaguri, mille signaal loetakse A1 kaudu. Potentsiomeeter on ühendatud A0-le ning seda kasutatakse režiimi valimiseks. RGB LED on ühendatud PWM-viikudele D11 (punane), D10 (roheline) ja D9 (sinine). Sõltuvalt valgustasemest reguleeritakse LED-i eredust. Potentsiomeetriga saab valida kolme töörežiimi: LED välja, helesinine valgus või vahelduvad värvitoonid. Kõik komponendid on toidetud Arduino 5V ja GND kaudu.
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:



Kood:
int PIN_RED = 11;
int PIN_GREEN = 10;
int PIN_BLUE = 9;
int PIN_POT = A0;
int PIN_LDR = A1;
int brightness, maxVal = 0, minVal = 1023;
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
pinMode(PIN_BLUE, OUTPUT);
Serial.begin(9600);
}
void loop() {
int ldrValue = analogRead(PIN_LDR); // Loeme valgusanduri väärtuse
int potValue = analogRead(PIN_POT); // Loeme potentsiomeetri väärtuse
int currentMode = map(potValue, 0, 1023, 1, 3); // Määrame režiimi potentsiomeetri järgi
currentMode = constrain(currentMode, 1, 3); // Piirame režiimi vahemikku
brightness = ldrValue; // Algne heledusväärtus
autoCalibration(); // Kalibreerime valguse vahemiku
Serial.print("ldrValue: ");
Serial.print(ldrValue);
Serial.print(" | brightness: ");
Serial.println(brightness);
switch (currentMode) {
case 1:
// Režiim 1 — valgus on välja lülitatud
analogWrite(PIN_RED, 0);
analogWrite(PIN_GREEN, 0);
analogWrite(PIN_BLUE, 0);
break;
case 2:
// Režiim 2 — helesinine (roheline + sinine)
analogWrite(PIN_RED, 0);
analogWrite(PIN_GREEN, brightness);
analogWrite(PIN_BLUE, brightness);
break;
case 3:
// Režiim 3 — juhuslikud värviüleminekud
int valR = random(110, 190);
int valG = random(60, 130);
int valB = 255;
// Skaleerime värvid vastavalt heledusele
int outR = (valR * brightness) / 255;
int outG = (valG * brightness) / 255;
int outB = (valB * brightness) / 255;
analogWrite(PIN_RED, outR);
analogWrite(PIN_GREEN, outG);
analogWrite(PIN_BLUE, outB);
delay(250);
break;
}
delay(120);
}
void autoCalibration() {
// Uuendame min ja max väärtused
if (brightness < minVal) {
minVal = brightness;
}
if (brightness > maxVal) {
maxVal = brightness;
}
// Kaardistame väärtused vahemikku 0-255 väikese korrektsiooniga
brightness = map(brightness, minVal + 8, maxVal - 25, 0, 255);
brightness = constrain(brightness, 0, 255);
}
Video:
Interaktiivne Arduino skeem
Kasutamisvõimalused tavaelus
Automaatne öölamp
- Lamp lülitub ise pimedas sisse ja reguleerib oma eredust vastavalt ruumi valgustasemele — ideaalne öökapile või lastetuppa, et mitte pimedas kobada.
Energiat säästev valguslahendus
- Kui päeval on piisavalt valgust, jäävad LED-id automaatselt välja; alles hämaras hakkavad tööle. See aitab hoida elektrit kokku.
Valguse meeleoluvalgusti
- Potentsiomeetri abil saab valida värvirežiimi või muuta heledust — näiteks lõõgastava sinaka valguse jaoks enne magamaminekut.
Turvavalgustus
- Sobib kasutada treppidel, koridorides või rõdul, kus valgus süttib automaatselt, kui ümberringi on pime, vähendades komistamise riski.
Lastetoa “unelamp”
- Lastele, kes kardavad pimedust, saab öölamp automaatselt valgust anda nii, et see ei oleks liiga ere ega häiriks und.
Dekoratiivne efektvalgustus
Kolmanda režiimi (juhuslikud värviüleminekud) saab kasutada näiteks peol, et luua huvitavat valgusefekti.