Skip to content
Home » Öölamp ülesanne konspekt

Öölamp ülesanne konspekt

Sissejuhatus

Töö kirjeldus:
Koostage diagramm LED-iga, potentsiomeetriga ja fototakistiga. Potentsiomeetri pööramiseks muutuks värv. LED-i heledus sõltub fototakistile vastuvõetava valguse intensiivsusest.

Kasutatud komponendid:
Arduino UNO plaat (1tk)
Juhtmed (12tk)
Takistid (3tk: 220 Ω, 1tk: 1kΩ)
RGB LED diood (1tk)
Potentsiomeeter (1tk, 250 kΩ)
Fototakisti (1tk)

Töö protsess:
Programmeeri öölamp reageerima valguse tasemele ning muutma värvi potentsiomeetri abil.
Ühenda LDR ja takisti analoogsisendisse (nt A1), et mõõta ümbritsevat valgust.
Ühenda RGB LED kolme digitaalse PWM-väljundiga (nt 9, 10, 11).
Ühenda potentsiomeeter analoogsisendisse (nt A0) või nupp digitaalsisendisse.

Funktsionaalsus
  • Lambi sisselülitamine: Potentsiomeetri keeramisega saab öölambi sisse ja välja lülitada.
  • Valguse juhtimine ümbritseva valguse järgi: Kasutame üks LED, reguleeritakse selle heledust vastavalt valgusele funktsiooniga analogWrite(PIN, 0..255).
  • RGB LED-i kasutamisel võimaldab potentsiomeeter valida erinevaid värve (muutes punase, rohelise ja sinise väärtusi).
Loodud režiimid
  1. Lülitatud välja
if (Value_new==1)
{
analogWrite(ledPinR, LOW);
analogWrite(ledPinG, LOW);
analogWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}

2. Roheline (sõltub valgustuse tasemest)

else if (Value_new==2)
{
digitalWrite(ledPinR, LOW);
digitalWrite(ledPinG, HIGH);
digitalWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}

3. Punane (sõltub valgustuse tasemest)

else if (Value_new==3)
{
digitalWrite(ledPinR, HIGH);
digitalWrite(ledPinG, LOW);
digitalWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}    

4. Sinine (sõltub valgustuse tasemest)

else if (Value_new==4)
{
digitalWrite(ledPinR, LOW);
digitalWrite(ledPinG, LOW);
digitalWrite(ledPinB, HIGH);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}  

5. Kõik on lülitatud sisse sõltuvalt valgustuse tasemest

else if (Value_new==5)
{
on();
}

void on()
{
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}
Uued funktsioonid, mis oli kasutatud


Valguse taseme lugemine ja reguleerimine

void loop()
{
lightLevel = analogRead(sensorPin); // valgustuse tase loetakse analoogtihvti
manualTune(); // eraldi funktsioon loetud väärtuste seadistamiseks

Fototakistilt valguse taseme lugemine

void on()
{
analogWrite(ledPinR, lightLevel); // punane LED lugemine
analogWrite(ledPinG, lightLevel); // roheline LED lugemine
analogWrite(ledPinB, lightLevel); // sinine LED lugemine
}

Loetud väärtuste teisendamine

void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 255); // teisendab valgustaseme vahemikust 300–800 vahemikku 0–255
lightLevel = constrain(lightLevel, 0, 255); // piirab vastuvõetud väärtust vahemikus 0 kuni 255 (juhul kui analooglugemine andis väärtused väljaspool määratud vahemikku)
}
Käivitav kood
const int sensorPin = 1;
const int ledPinR = 9;
const int ledPinG = 10;
const int ledPinB = 11;
const int BUTTON = 0;
int Value_new;
int lightLevel, high = 0, low = 1023;

// LED-i initsialiseerimine
void setup(){
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
}

// fotoresistori ja potentsiomeetri initsialiseerimine
void loop()
{
lightLevel = analogRead(sensorPin);
manualTune();
Value_new = analogRead(BUTTON);
Value_new=map(Value_new, 0, 1023, 0, 5); // 5 režiimid


// 1 režiim - lülitatud välja
if (Value_new==1)
{
analogWrite(ledPinR, LOW);
analogWrite(ledPinG, LOW);
analogWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}
 
// 2 režiim - lülitatud roheline
else if (Value_new==2)
{
digitalWrite(ledPinR, LOW);
digitalWrite(ledPinG, HIGH);
digitalWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}

// 3 režiim - lülitatud punane
else if (Value_new==3)
{
digitalWrite(ledPinR, HIGH);
digitalWrite(ledPinG, LOW);
digitalWrite(ledPinB, LOW);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}        
 
// 4 režiim - lülitatud sinine
else if (Value_new==4)
{
digitalWrite(ledPinR, LOW);
digitalWrite(ledPinG, LOW);
digitalWrite(ledPinB, HIGH);
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}              
 
// 5 režiim - kõik on lülitatud sisse sõltuvalt valgustuse tasemest
else if (Value_new==5)
{
on();
}
}
 
// fototakistilt valguse taseme lugemine
void on()
{
analogWrite(ledPinR, lightLevel);
analogWrite(ledPinG, lightLevel);
analogWrite(ledPinB, lightLevel);
}

// väärtuste teisendamine töö jaoks mugavaks väärtuseks
void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
Skeem Tinkercad'is & simulatsioon
Töötav skeem Arduino Uno-ga