Занятие47-48
Программирование "умных"светильников
Сегодня мы будем делать бескнопочный светильник, который загорается, когда в комнате темно и гаснет, когда светло.
Для решения этой задачи мы будем использовать фоторезистор.
Фоторезистор (или LDR) VT90N2 — компонент, меняющий сопротивление в зависимости от количества света падающего на него. В полной темноте он имеет максимальное сопротивление в сотни килоом, а по мере роста освещённости сопротивление уменьшается до десятков килоом.
Чтобы посмотреть показания фоторезистора в полной темноте и на свету будем использовать программу:
#define LDR_PIN A0
void setup()
{
pinMode(LDR_PIN , INPUT);
Serial.begin(9600);
}
void loop()
{
int fr = analogRead(LDR_PIN);
Serial.print (round(fr));
Serial.print ("\n");
delay(100);
}
Чтобы посмотреть, какие показания фоторезистора выдаются на печать, надо открыть Инструменты/Монитор последовательного порта. Определяем показания в полной темноте и на свету (самое большое и самое маленькое число).
Теперь, чтобы яркость светодиода соответствовала показаниям фоторезистора ( в темноте яркость светодиода была максимальна и, наоборот, на свету - минимальна), необходимо произвести преобразования:
fr=map(fr, 540, 910, 255, 0); Здесь 540 - минимальное показание фоторезистора, а 910 - максимальное
Чтобы светодиод светился с нужной яркостью, напишем программу:
#define LED_PIN 3
#define LDR_PIN A0
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(LDR_PIN , INPUT);
}
void loop()
{
int fr = analogRead(LDR_PIN);
fr=map(fr, 540, 910, 255, 0);
analogWrite(LED_PIN, fr);
delay(100);
}
Напишем программу, в которой показания фоторезистора будут управлять бегущими огоньками на линейке светодиодов. Чем ярче свет, тем быстрее будут бежать огоньки.