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
}
}
3.2. Katse Photoresistor
Komponindid:

Ühendamine:
Ühendada kõigepealt maketeerimislaua ühte äärde sarnaselt järgneva joonisega fototakisti nii et üks jalg oleks ühendatud toite ning teine läbi maandusesse mineva takisti analoogsignaaliga. Nüüd lisada maketeerimislaua teise otsa, et LED-i valgus ei mõjutaks andurit.
Monitori jälgimiseks avada see arenduskeskkonna ülemise rohelise riba paremas ääres asuvast luubi ikoonist.

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);
}
Öölamp
Ülesanne:
Luua öölamp, mida saab nupust/potest sisse ja välja lülitada.
Valgustugevus (analogdigitalWrite (PIN ,0..255) / põlevate ledide hulk sõltub ümbritsevast valgusest (valgustakisti).
Komponendid:
- Valgustakisti
- Potentsioometr
- RGB LED
- Takisti (4)
- Juhtmed (14)
https://www.tinkercad.com/things/hBqAvYIsXyZ-oolamp
https://drive.google.com/file/d/1WDQLK7RtKjM9o32sg59ZHixn298zSnxO/view?usp=drivesdk
Minu öövalgusel on 3 režiimi, automaatne (olenevalt valgustusest), lülitub sisse ja välja.

const int sensorPin = 0;
const int sensorPin2 = 1;
const int RED_PIN = 11;
const int BLUE_PIN = 10;
const int GREEN_PIN = 9;
int value;
int PinVal = 0;
void setup()
{
pinMode(BLUE_PIN, OUTPUT);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
PinVal = analogRead(sensorPin);
value = map(PinVal, 0, 1023, 1, 3);
value = constrain(value, 1, 3);
if (value == 1)
{
Serial.println("Set to ON");
on();
value = map(PinVal, 0, 1023, 1, 3);
value = constrain(value, 1, 3);
}
if (value == 2)
{
Serial.println("Set to OFF");
off();
value = map(PinVal, 0, 1023, 1, 3);
value = constrain(value, 1, 3);
}
if (value == 3)
{
automatic();
value = map(PinVal, 0, 1023, 1, 3);
value = constrain(value, 1, 3);
}
}
void on()
{
int x;
for (x = 0; x < 768; x++)
{
ShowRGB(x);
delay(10);
}
}
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;
greenIntensity = 255 - (color - 256);
blueIntensity = (color - 256);
}
else if (color >= 512)
{
redIntensity = (color - 512);
greenIntensity = 0;
blueIntensity = 255 - (color - 512);
}
analogWrite(RED_PIN, redIntensity);
analogWrite(BLUE_PIN, blueIntensity);
analogWrite(GREEN_PIN, greenIntensity);
}
void automatic()
{
int lightLevel = analogRead(sensorPin2);
lightLevel = map(lightLevel, 300, 800, 0, 255);
lightLevel = constrain(lightLevel, 255, 0);
if (lightLevel < 100)
{
Serial.println("Night Light ON");
on();
}
else
{
Serial.println("Night Light OFF");
off();
}
delay(100);
}
void off()
{
digitalWrite(RED_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
}