3.1. Katse Nuppude ja Slideswitch’i kasutamise võimalus
Nupule vajutades süttib LED
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
}
}

Lüliti abil lülitatakse LED sisse või välja
int swPin=4;
int ledPin=10;
int switchstate=0;
void setup()
{
pinMode(swPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
switchstate=digitalRead(swPin);
if(switchstate==HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}

3.2. Katse Photoresistor
Olenevalt valgustusest toas, pimedas toas tuled põlevad ja valgusküllane valgustus ei põle.
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);
}

Ülesanne 3 Öölamp
Töö kirjeldus
Öölamp töötab põhimõttel, et kui väljas on valge, siis see ei tööta ja kui on pime, siis põleb see värvidega. Selles on 3 värvirežiimi, mida saab nupuga vahetada. Nii on ka öõlampi sisse- ja väljalülitamise switch
Töö protsess
Fototakisti abil loeb tasu, kui palju on väljas hele ja näitab juba selle info järgi värvi intensiivsust. Režiimide vahetamise nupp töötab käsu switch…case kaudu, mis võimaldab valida erinevaid režiime. Sisse- ja väljalülitusrežiimi tegin läbi booli väärtuse, mis tähendab, et kui see liigub ühtepidi, siis RGB töötab ja vastupidi.
Kasutatud komponeendid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- Aku(9v)
- Nupp(1tk)
- Photoresistor(1tk)
- Slideswitch(1tk)
- Juhtmed (16tk)
- Takisti (3tk, 220Om),Takisti (1tk, 10KOm),Takisti (1tk, 330Om)
- RGB (1tk)
Skeem

Kood
const int SwitchPin = 13;
const int RedPin = 11;
const int GreenPin = 9;
const int BluePin = 10;
const int ButtonPin = 12;
const int sensorPin = A0;
int lightLevel, high = 0, low = 1023;
int PraeguColorMode = 0;
bool ValgusOn = false;
void setup() {
pinMode(SwitchPin, INPUT);
pinMode(RedPin, OUTPUT);
pinMode(GreenPin, OUTPUT);
pinMode(BluePin, OUTPUT);
pinMode(ButtonPin, INPUT);
Serial.begin(9600);
}
void loop()
{
lightLevel = analogRead(sensorPin);
autoTune();
if (digitalRead(SwitchPin) == HIGH) {
ValgusOn = true;
} else {
ValgusOn = false;
}
if (ValgusOn) {
switch (PraeguColorMode) {
case 0:
analogWrite(RedPin, lightLevel);
digitalWrite(GreenPin, LOW);
digitalWrite(BluePin, LOW);
break;
case 1:
digitalWrite(RedPin, LOW);
analogWrite(GreenPin, lightLevel);
digitalWrite(BluePin, LOW);
break;
case 2:
digitalWrite(RedPin, LOW);
digitalWrite(GreenPin, LOW);
analogWrite(BluePin, lightLevel);
break;
}
} else {
digitalWrite(RedPin, LOW);
digitalWrite(GreenPin, LOW);
digitalWrite(BluePin, LOW);
}
Serial.print(lightLevel);
Serial.println("");
delay(1000);
if (digitalRead(ButtonPin) == LOW) {
PraeguColorMode = (PraeguColorMode + 1) % 3;
delay(200);
}
}
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);
}
Video
https://drive.google.com/drive/folders/1nmaE9D1fqe1v0lHNmCp6az9Vk1_Nbh5l
Kus neid komponente kasutada?
Fototakisteid kasutatakse tänavavalgustuses heleduse reguleerimiseks ja vajadusel laternate sisselülitamiseks.
Akusid kasutatakse erinevate elektriseadmete ja seadmete tsükliliseks energia akumulatsiooniks (laadimine) ja autonoomseks elektritoiteks, samuti meditsiinis, tootmises, transpordis ja muudes valdkondades.