0% found this document useful (0 votes)
24 views4 pages

#Define LVD1 11

1233

Uploaded by

Ricky Si Madara
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views4 pages

#Define LVD1 11

1233

Uploaded by

Ricky Si Madara
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#define LVD1 11

#define LVD2 12
#define SW 10
#define buz 5
#define red 7
#define green 6
#define LVD2 12
#define OUTPUT_PIN 47
#define timeouts 5000
#define TO 2000

enum Status { VALID, NOT_VALID, TIMEOUT };


int ledstate = LOW;

String receivedData = "";


bool isReceiving = false;
bool blinks = true;
bool INT = false;
bool id = false;
bool bMulaiCnt = false;
unsigned long previousMillis = 0;
unsigned long PrevMillis = 0;

int CekLoop = 0;

void IRAM_ATTR openalb()


{
blinks = true;
INT = true;
isReceiving = true;
PrevMillis = millis();
}

void setup() {
pinMode(SW, INPUT_PULLUP);
pinMode(LVD1, INPUT_PULLUP);
pinMode(LVD2, INPUT_PULLUP);
pinMode(OUTPUT_PIN, OUTPUT);
pinMode(buz, OUTPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
digitalWrite(green, HIGH);
Serial.begin(9600);
Serial1.begin(9600, SERIAL_8N1, 18, 17);
delay(200);
attachInterrupt(SW, openalb, FALLING);
}
void loop()
{
if (INT)
{
digitalWrite(buz, HIGH);
digitalWrite(green, LOW);
delay(500);
digitalWrite(buz, LOW);
digitalWrite(green, HIGH);
Serial.println("... OPEN ALB");
digitalWrite(OUTPUT_PIN, HIGH);
delay(2000);
if ((millis() - PrevMillis > timeouts) && (digitalRead(LVD1) == HIGH &&
digitalRead(LVD2) == HIGH))
{
PrevMillis = millis();
digitalWrite(OUTPUT_PIN, LOW);
blinks = false;
INT = false;
isReceiving = false;
}
}

if (blinks)
{
blink();
}
// blink=true;
Serial1.print('s');
Serial.println("sudah kirim s");
Status status = receiveSerialData(8);

if (status == VALID)
{

Serial1.print("l00AA4A4D2D4D4959");
Serial.println("sudah kirim keylogin");
Status status = receiveSerialData(1);
Serial.println(receivedData);

if (status == VALID && receivedData == "L")


{

Serial1.print("r01");
Serial.println("sudah kirim r01");
Status status = receiveSerialData(32);
Serial.println(receivedData);

if (status == VALID && receivedData == "98989898989898989898989898989898")


{
//blinks = false;
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
digitalWrite(buz, HIGH);
delay(500);
digitalWrite(buz, LOW);
Serial.println("CARD VALID... OPEN ALB");
digitalWrite(OUTPUT_PIN, HIGH);
Serial.println("CLOSE ALB..........");
status = NOT_VALID;
delay(2000);
PrevMillis = millis();
id = true;
//digitalWrite(OUTPUT_PIN, LOW);
}
else
{
Serial.println("data tidak valid");
digitalWrite(red, HIGH);
for (int i = 0; i < 2; i++)
{
digitalWrite(buz, HIGH);
delay(1000);
digitalWrite(buz, LOW);
delay(1000);
}
digitalWrite(red, LOW);

}
}
else
{
Serial.println("data tidak valid");
digitalWrite(red, HIGH);
for (int i = 0; i < 2; i++)
{
digitalWrite(buz, HIGH);
delay(1000);
digitalWrite(buz, LOW);
delay(1000);
}
digitalWrite(red, LOW);
}
}
if (id)
{
if ((digitalRead(LVD1) == LOW) || (digitalRead(LVD2) == LOW))
{
PrevMillis = millis();
}
else
{
if (millis() - PrevMillis > 4000) {
digitalWrite(OUTPUT_PIN, LOW);
digitalWrite(red, LOW);
for (int i = 0; i < 5; i++)
{
digitalWrite(green, LOW);
delay(100);
digitalWrite(green, HIGH);
delay(100);
}
isReceiving = false;
blinks = false;
id = false;
}
}
}
}

void blink()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 100)
{
previousMillis = currentMillis;
if (ledstate == LOW) {
ledstate = HIGH;
} else {
ledstate = LOW;
}
digitalWrite(green, ledstate);
}
}

Status receiveSerialData(int panjang) {

unsigned long startTime = millis();


String data = "";

while (millis() - startTime < TO) {


while (Serial1.available()) {
char c = Serial1.read();
if (c == '\r') {
continue; // Mengabaikan karakter '\r'
} else if (c == '\n') {
// Jika karakter '\n' diterima, berarti akhir dari data
receivedData = data;
if (receivedData.length() >= panjang) {
return VALID;
}
else {
return NOT_VALID;
}
}

else {
data += c; // Menambahkan karakter ke buffer
}
}
}
return TIMEOUT; // Jika waktu habis
}

You might also like