79 lines
1.5 KiB
C++
79 lines
1.5 KiB
C++
#define button A7
|
|
#define relay A5
|
|
#define time_hold 6000
|
|
int val = 0;
|
|
int i = 0;
|
|
long previousMillis;
|
|
long previousMillis2;
|
|
bool relay_stt = false;
|
|
bool relay_stt2 = false;
|
|
bool hold = true;
|
|
String input;
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
pinMode(button, INPUT_PULLUP);
|
|
pinMode(relay, OUTPUT);
|
|
relay_stt = false;
|
|
}
|
|
|
|
void read_button()
|
|
{
|
|
val = analogRead(button);
|
|
//Serial.println(val);
|
|
if (val > 1010)
|
|
{
|
|
i++;
|
|
}
|
|
else if (val < 1010)
|
|
{
|
|
i = 0;
|
|
}
|
|
if (i > 500)
|
|
{
|
|
digitalWrite(relay, HIGH);
|
|
relay_stt = true;
|
|
relay_stt2 = true;
|
|
previousMillis = millis();
|
|
if (i == 503)
|
|
{
|
|
Serial.println("open");
|
|
}
|
|
}
|
|
}
|
|
|
|
void serial_read()
|
|
{
|
|
while (Serial.available() > 0) {
|
|
input = Serial.readStringUntil('\r');
|
|
Serial.println(input);
|
|
if (input == "1")
|
|
{
|
|
digitalWrite(relay, HIGH);
|
|
relay_stt = true;
|
|
previousMillis = millis();
|
|
Serial.println("open");
|
|
}
|
|
}
|
|
}
|
|
void loop()
|
|
{
|
|
//unsigned long currentMillis = millis();
|
|
read_button();
|
|
serial_read();
|
|
if ((millis() - previousMillis > time_hold) && relay_stt == true && val <1010)
|
|
{
|
|
relay_stt = false;
|
|
digitalWrite(relay, LOW);
|
|
Serial.println("close");
|
|
previousMillis = millis();
|
|
}
|
|
// if ((millis() - previousMillis2 > time_hold) && relay_stt2 == true)
|
|
// {
|
|
// relay_stt2 = false;
|
|
// digitalWrite(relay, LOW);
|
|
// Serial.println("Close door by usb");
|
|
// previousMillis2 = millis();
|
|
// }
|
|
}
|