Ülesanne nuppudega
skeem:

kirjeldus:
Meil on kaks nuppu, millest üks vastutab lambi sisselülitamise eest ja teine on vastutav selle väljalülitamise eest. Peamine adea on see, et siis kasutaja tahab valgust või mitte
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
}
}
Ülesanne Photoresistoriga
skeem:

kirjeldus
siin on fotoresistor. Fotoresistori kasutatakse ddedektorit valguse ja teha midagi, siis on see tume või valgus. Siin töötab fotoresistor nii: kui on pime, siis süttib lamp, kui on pime, siis lülitab lamp välja.
kood:
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);
katse 3
skeem:

Töö kirjeldus:
öövalgustus kahe režiimiga: päevarežiim ja öörežiim
Kasutatud komponendid:
- Arduino Uno
- 3x ledid
- Fotoristor
- Arendusplaat
- 3x 220kΩ takistit
- 1x 10kΩ takisti
- 8x Juhtme
Töö protsess:
see öine valgus töötab koosneb 3 ledist, mõnest resistrsist ja fotorestorist. Põhiidee on see, et lambid põlevad siis, kui on pime, ja lülituvad välja siis, kui on pime.
kood:
const int ldrPin = A1; // Photoresistor (LDR) connected to A1
const int ledPin1 = 10; // LED 1 (Digital)
const int ledPin2 = 11; // LED 2 (Digital)
const int ledPin3 = 12; // LED 3 (PWM for brightness)
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600); // Start serial communication
}
void loop() {
// Read light level from LDR (0 = bright, 1023 = dark)
int lightLevel = analogRead(ldrPin);
// --- Control LED 1 (ON in complete darkness) ---
if (lightLevel > 800) {
digitalWrite(ledPin1, HIGH); // Turn ON LED 1
} else {
digitalWrite(ledPin1, LOW); // Turn OFF LED 1
}
// --- Control LED 2 (ON in moderate darkness) ---
if (lightLevel > 500) {
digitalWrite(ledPin2, HIGH); // Turn ON LED 2
} else {
digitalWrite(ledPin2, LOW); // Turn OFF LED 2
}
// --- Control LED 3 (PWM brightness, dim when dark) ---
// Map LDR reading (200-800) to PWM brightness (0-255)
int brightness = map(lightLevel, 200, 800, 0, 255);
brightness = constrain(brightness, 0, 255); // Limit to 0-255
analogWrite(ledPin3, brightness); // Set LED 3 brightness
// Print light level to Serial Monitor
Serial.print("Light Level: ");
Serial.println(lightLevel);
delay(100); // Small delay for stability
}
Uued funktsioonid:
if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.
Video:
Uued funktsioonid:
if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

