Skip to content
Avaleht » Ülesanne «Öölamp»

Ülesanne “Öölamp”

Ночная лампа

Описание работы

Ночная лампа(ночник), которая работает ночью.

Основной принцип её работы выглядит так, что от уровня света попадающий в фоторезистор зависит от тусклости RGB LED(например: если света вообще нет, светодиод начинает гореть ясно, а если свет имеется, тогда наоборот).

Естественно, если свет будет, то смысла от ночника никакого нет и тратить её заряд в пустую тоже не стоит.

Конструкция будет работать и светодиод будет гореть если:

  • Имеется источник энергии(например: аккумулятор)
  • Slideswitch(переключатель) переключен на верную позицию(схож на обычный механизм “вкл/выкл”).
  • Фоторезистор не получает свет.

О том, как подробно все это дело работает, можно найти в “Отчетах” видео-отчет.

Список компонентов
  • Плата “Arduino UNO”.
  • Макет.
  • 1 потенциометр.
  • 15 провода.
  • 4 резистора(3 – 220 Ом, 1 – 10000 Ом).
  • 1 RGB LED светодиод.
  • 1 Фоторезистор.
  • 1 Slideswitch
  • 1 аккумулятор.
Код
const int RED_PIN = 13; // красная часть RGB LED
const int GREEN_PIN = 11; // зеленая часть RGB LED
const int BLUE_PIN = 12; // синяя часть RGB LED
const int switchPin = 10; // пин под Slideswitch
const int sensorPin = A0; // аналоговое соединение с потенциометром
const int photoPin = A1; // аналоговое соединение с фоторезистором
int switchState = 0; // статус Slideswitch
int sensorValue = 0; 
int photoValue = 0;
int lightLevel, high = 0, low = 1023;
int potValue = 0;

void setup()
{
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  pinMode(switchPin, INPUT); 
  Serial.begin(9600);
}

void loop()
{
  switchState = digitalRead(switchPin);
  
  if (switchState == HIGH) { // если Slideswitch включен
    sensorValue = analogRead(sensorPin);
    photoValue = analogRead(photoPin);
    
    lightLevel = map(photoValue, 0, 1023, 0, 255); 
    
    if (lightLevel < 100) { 
      potValue = analogRead(sensorPin); 
      int color = map(potValue, 0, 1023, 0, 5); 
      
      switch(color) { //настройка цвета с потенциометром
        case 0: // красный
          analogWrite(RED_PIN, 255);
          analogWrite(GREEN_PIN, 0);
          analogWrite(BLUE_PIN, 0);
          break;
        case 1: // зеленый
          analogWrite(RED_PIN, 0);
          analogWrite(GREEN_PIN, 255);
          analogWrite(BLUE_PIN, 0);
          break;
        case 2: // синий
          analogWrite(RED_PIN, 0);
          analogWrite(GREEN_PIN, 0);
          analogWrite(BLUE_PIN, 255);
          break;
        case 3: // желтый
          analogWrite(RED_PIN, 255);
          analogWrite(GREEN_PIN, 255);
          analogWrite(BLUE_PIN, 0);
          break;
        case 4: // оранжевый
          analogWrite(RED_PIN, 255);
          analogWrite(GREEN_PIN, 165);
          analogWrite(BLUE_PIN, 0);
          break;
        case 5: // белый
          analogWrite(RED_PIN, 255);
          analogWrite(GREEN_PIN, 255);
          analogWrite(BLUE_PIN, 255);
          break;
      }
    } else { // если уровень света выше порога, выключаем RGB LED
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
    }
  } else { // если Slideswitch выключен, все выключаем
    digitalWrite(RED_PIN, LOW);
    digitalWrite(GREEN_PIN, LOW);
    digitalWrite(BLUE_PIN, LOW);
  }
}
Конструкция в Tinkercad

Отчеты

Конструкция в реальности
Видеоотчеты

В видео виден сам процесс работы.

На самом видео можно увидеть, что светодиод горит при недостатке света и может менять цвета при помощи потенциометра. Еще стоит подметить что светодиод не будет гореть, если переключатель переключен в “ложное” положение.

https://drive.google.com/file/d/1vGfhKTocCtSWaZiik4xuMM9uJnsfG1ad/view?usp=sharing