const int POT_PIN = 34; // потенциометр подключен к контакту GPIO34 (ADC1_CH6)
const int RELAY_SVET_PIN = 21; // реле света подключено к контакту 21
const int PHOTO_PIN = 35; // фоторезистор подключен к коонтакту 35
const int DIOD_SVETA_PIN = 19; // диод освещения (затемнения)
int POT_Value = 0; // переменная для хранения данных от потенциометра
int PHOTO_Value = 0; // переменная для хранения данных от фоторезистора
#define RELAY_ON LOW // включение реле света (низкого уровня)
#define RELAY_OFF HIGH // выключение реле света (низкого уровня)
void setup() {
Serial.begin(9600);
pinMode (RELAY_SVET_PIN, OUTPUT); // установление режима работы пина на выход сигнала
pinMode (DIOD_SVETA_PIN, OUTPUT);
analogSetAttenuation(ADC_11db); // установить затухание АЦП на 11 дБ (до ~3,3 В на входе) (???х/з что это)
}
void loop() {
relay_svet ();
}
void relay_svet (){ // ПОДСВЕТКА
int POT_Value = analogRead(POT_PIN); // чтение данных с потенциометра
int POT_STANDART = map(POT_Value, 0, 4095, 30, 0); // приведение данных потенциометра к диапазону 0-30
int PHOTO_Value = analogRead(PHOTO_PIN); // чтение данных с фоторезистора
PHOTO_Value = constrain (PHOTO_Value, 0, 200); // извлечение из всего диапазона значений только интересующие
int PHOTO_STANDART = map(PHOTO_Value, 0, 200, 0, 30); // приведение полученных данных фоторезистора к диапазону 0-30
if (POT_STANDART < PHOTO_STANDART){ // сравнение показаний фоторезистора с целевым уровнем выставленным потенциометром и включение реле
digitalWrite(DIOD_SVETA_PIN, LOW);
digitalWrite(RELAY_SVET_PIN, RELAY_OFF);
} else {
digitalWrite(DIOD_SVETA_PIN, HIGH);
digitalWrite(RELAY_SVET_PIN, RELAY_ON);
}
//Serial.print("Potentiometr = ");
//Serial.print(POT_Value);
Serial.print(" => Photoresistor = ");
Serial.print(PHOTO_Value);
Serial.print(" => target = ");
Serial.print(POT_STANDART);
Serial.print(" => daylight = ");
Serial.println(PHOTO_STANDART);
delay(1000);
}