3.1. Katse Nuppude ja Slideswitch’i kasutamise võimalus

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
}
}
Kuidas kood töötab
Kood juhib LED-tuld, mis süttib ainult siis, kui on vajutatud üks kahest nupust, aga mitte mõlemad korraga.
Funktsionid
pinMode()– määrab pordi töörežiimi (sisend või väljund)digitalRead()– loeb pordi hetkeoleku (HIGH või LOW)digitalWrite()– määrab pordi väärtuse (lülitab sisse või välja)setup()– algfunktsioon, mida käivitatakse üks kord programmi käivitamiselloop()– peatsükkel, mis kordub pidevalt
Kuidas elus kasutada
- Seda programmi saab kasutada lihtsa turvasüsteemi loomiseks, kus LED-tuli süttib, kui vajutatakse ainult ühte nuppu näiteks ukse juures.
- Seda saab kasutada ka õppematerjalina elektroonika ja programmeerimise alustamiseks, õpetades loogikat ja sisendite/väljundite kasutamist.
3.2. Katse Photoresistor

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);
}
Kuidas kood töötab
See kood juhib LED-tule eredust sõltuvalt valguse tasemest, mida mõõdab fotorresistor. Mida eredam on valgus, seda eredamalt särab LED-tuli.
Funktsionid
pinMode()– määrab pordi töörežiimi (sisend või väljund)Serial.begin()– alustab järjestikuse andmete edastamise alustamistanalogRead()– loeb analoogväärtust pordilt (vahemikus 0 kuni 1023)map()– teisendab arvu ühest vahemikust teiseconstrain()– piirab väärtuse kindlatesse piiridesseanalogWrite()– määrab PWM signaali väärtuse (vahemikus 0 kuni 255)Serial.print()– kuvab andmeid järjestikuses monitorisSerial.println()– kuvab andmeid järjestikuses monitoris uue realedelay()– teeb programmile pausisetup()– seadistamise funktsioon, mida käivitatakse üks kord käivitamiselloop()– peamine tsükkel, mis täidetakse pidevaltmanualTune()– kasutaja loodud funktsioon käsitsi ereduse seadistamiseksautoTune()– kasutaja loodud funktsioon automaatseks ereduse seadistamiseks
Kuidas elus kasutada
- Seda programmi saab kasutada automaatse valgustuse süsteemi loomiseks, kus LED-tuli kohandub keskkonna valgustusega, näiteks öösel, et muuta ruumide valgustust mugavamaks.
- Seda saab rakendada kasulike rakenduste jaoks, nagu näiteks kodu aiavalgustuse juhtimine, kus tuled süttivad ja heledust reguleeritakse vastavalt päevasest valgusest sõltuvalt.
Ülesanne 3.1 Öölamp

// Пины
const int ldrPin = A0;
const int potPin = A1;
const int ledPins[] = {8, 9, 10};
const int ledCount = 3;
void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
Serial.begin(9600);
}
void loop() {
int lightLevel = analogRead(ldrPin);
int potValue = analogRead(potPin);
// Разделим значение потенциометра на 5 зон
int mode = map(potValue, 0, 1023, 1, 5);
Serial.print("Режим: ");
Serial.print(mode);
Serial.print(" | Освещение: ");
Serial.println(lightLevel);
switch (mode) {
case 1: // Все выключены
controlLeds(0);
break;
case 2: // Один LED в зависимости от освещения
if (lightLevel < 500) controlLeds(1);
else controlLeds(0);
break;
case 3: // Два LED в зависимости от освещения
if (lightLevel < 500) controlLeds(2);
else controlLeds(0);
break;
case 4: // Три LED в зависимости от освещения
if (lightLevel < 500) controlLeds(3);
else controlLeds(0);
break;
case 5: // Все включены всегда
controlLeds(3);
break;
}
delay(100);
}
void controlLeds(int numberOn) {
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], i < numberOn ? HIGH : LOW);
}
}
Kuidas kood töötab
- Potentsiomeeter valib ühe viiest režiimist:
- Kõik LED-id on välja lülitatud.
- Üks LED süttib, kui valgust on vähe.
- Kaks LED-i süttivad, kui valgust on vähe.
- Kolm LED-i süttivad, kui valgust on vähe.
- Kõik LED-id on alati sisse lülitatud.
- Fotorresistor määrab valgustaseme ja mõjutab LED-ide süttimist režiimides 2–4.
Funktsionid
setup()- — Seadistab LED-ide pinnid ja käivitab serial-porti.
loop()- — Programmi põhitsükkel: loeb andureid, valib töörežiimi ja juhib LED-e vastavalt tingimustele.
controlLeds(int numberOn)- — Lülitab sisse määratud arvu LED-e sõltuvalt antud parameetrist.
Kuidas elus kasutada
- 1. Nutikas valgustus
Kasuta fotorresistori automaatseks valgustuse juhtimiseks:
Toas lülitub valgus sisse ainult siis, kui valgust on vähe.
Potentsiomeetri abil saab valida, mitu lampi (LED-i) süttib sõltuvalt valgustasemest.
2. Taimede valgustus
Kui toas on liiga pime, lülitub automaatselt sisse lisavalgustus taimedele.
Potentsiomeetriga saab reguleerida valgustugevust või lampide arvu.
4. Laste öölamp
Kui toas on pime, lülitub sisse üks või mitu LED-i, luues pehme valgustuse.
Vanemad saavad potentsiomeetri abil määrata heleduse režiimi