#define pinX A0
#define pinY A1
#include <LiquidCrystal.h>
// Инициализируем объект-экран, передаём использованные
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int ledPin = 13; // выход для светодиода
const int inputPin = 2; // вход от датчика
int pirState = LOW; // состояние датчика
bool ledOn = false; // включение светодиода
bool timeOn = false; // время для начала включения светодиода
unsigned long currentMillis;
int val = 0; // переменная для чтения состояния датчика
const int sel = 3;
int seconds = 2;
int x;
int delay_num;
void setup()
{
pinMode(ledPin, OUTPUT); // выход для светодиода
pinMode(inputPin, INPUT); // вход для датчика
pinMode(pinX, INPUT);
pinMode(pinY, INPUT);
pinMode(sel, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.clear();
}
void loop()
{
x = analogRead(pinX);
if(x>=1020){
if(seconds == 2){
seconds = 2;
}else{
seconds--;
}
}
if(x<=10){
if(seconds == 10){
seconds = 10;
}else{
seconds++;
}
}
lcd.setCursor(0,0);
lcd.print("Time, sec: ");
lcd.print(seconds);
lcd.print(" ");
val = digitalRead(inputPin);
if (val == HIGH) // есть сигнал от датчика
{
if (pirState == LOW)
{
ledOn = true;
timeOn = true;
pirState = HIGH;
}
}
else
{
if (pirState == HIGH)
{
pirState = LOW;
}
}
delay_num = 1000 * seconds;
if((ledOn == true) && (timeOn == true)){
currentMillis = millis();
digitalWrite(ledPin, HIGH);
timeOn = false;
}
else if((ledOn == true) && (timeOn == false)){
unsigned long ms = millis();
if(ms-currentMillis > delay_num){
digitalWrite(ledPin, LOW);
ledOn = false;
}
}
delay(100);
}