Занятие41-42

Задача:

Ракета летит в космосе. Все приборы горят "нормально" (светодиодная шкала пульсирует: то вверх, то вниз). При встрече с НЛО подается сигнал тревоги: горят все светодиоды шкалы. Встречу с НЛО отслеживает фоторезистор. Потенциометр позволяет настроить уровень попадания света на фоторезистор.

В этой модели используются шкала светодиодов, фоторезистор и потенциометр.

Фоторезистор (или LDR) VT90N2 — компонент, меняющий сопротивление в зависимости от количества света падающего на него. В полной темноте он имеет максимальное сопротивление в сотни килоом, а по мере роста освещённости сопротивление уменьшается до десятков килоом.

Потенциометр (переменный резистор) – полупроводниковый прибор, который поворотом движка изменяет сопротивление от нуля до номинального сопротивления в 10 кОм.

Вспомогательная задача:

Ночной светильник с управляемой яркостью.

Если количество света, падающего на фоторезистор, соответствует «условной темноте» включается светодиод, а если  показания соответствуют «условному свету», то светодиод отключается. Переход от условного света к условной темноте регулируется с помощью потенциометра.                                                                                                                                                                                                                                                                                                                                        

Сначала дадим имена для пинов со светодиодом, фоторезистором и потенциометром  с помощью директив:

 

#define LED_PIN  13

#define LDR_PIN  A0

#define POT_PIN  A1

 

Далее с помощью команды pinMode (pin,OUTPUT) устанавливаем пин со светодиодом как выход, а пин с потенциометром и с фоторезистором как вход.

void setup()

{

  pinMode(LED_PIN, OUTPUT);

  pinMode(LDR_PIN  , INPUT);

  pinMode(POT_PIN, INPUT);

 

}

 

Далее считываем уровень освещенности и записываем в переменную  int lightness («светлота»)

int lightness = analogRead(LDR_PIN);

Затем считываем значение с потенциометра и записываем в переменную int threshold (порог  между темнотой и светом)

int threshold = analogRead(POT_PIN);

Зададим значение логической переменной tooDark (слишком темный), определяющей темно ли сейчас. 

boolean tooDark = (lightness < threshold);

Если показания фоторезистора меньше показаний потенциометра, это будет соответствовать тому, что сейчас темно и значение переменной tooDark будет 1, иначе значение будет равно 0.

Если слишком темно (tooDark= =1), то включаем свет и задерживаем на 0,1сек, иначе – выключаем.

 

 

if (tooDark==1)

  {

   digitalWrite(LED_PIN, HIGH);

   delay(10);

  }

  else

  {

    digitalWrite(LED_PIN, LOW);

    delay(10);

  }

 

 

 

Решение:

#define LED_PIN  13

#define LDR_PIN  A0

#define POT_PIN  A1

 

void setup()

{

  pinMode(LED_PIN, OUTPUT);

  pinMode(LDR_PIN  , INPUT);

  pinMode(POT_PIN, INPUT);

}

 

void loop()

{

  int lightness = analogRead(LDR_PIN);

  int threshold = analogRead(POT_PIN);

  boolean tooDark = (lightness < threshold);

  if (tooDark==1)

  {

   digitalWrite(LED_PIN, HIGH);

   delay(10);

  }

  else

  {

    digitalWrite(LED_PIN, LOW);

    delay(10);

  }

}