// Program 3 menghilangkan delay . ganti dgn millis() , multitasking mode
#define Sw1 3
#define Sw2 5
#define Pb1 2
#define Led1 10
unsigned char Status_Pb1, Status_Sw1, Status_Sw2;
unsigned char LedState;
unsigned long PreviousMillis;
unsigned int Interval = 1000; // lamanya led on off
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(Sw1, INPUT_PULLUP);
pinMode(Sw2, INPUT_PULLUP);
pinMode(Pb1, INPUT_PULLUP);
pinMode(Led1, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Status_Pb1 = digitalRead(Pb1);
Status_Sw1 = digitalRead(Sw1);
Status_Sw2 = digitalRead(Sw2);
if ((Status_Sw1 == LOW) && (Status_Sw2 == HIGH) )
{
Serial.println("Siaga 2");
}
if ((Status_Sw1 == LOW) && (Status_Sw2 == LOW) )
{
Serial.println("Siaga 1");
}
//==================================================
if (Status_Pb1 == LOW)
{
Serial.println("alarm");
while (Status_Pb1 == LOW)
{
Status_Pb1 = digitalRead(Pb1);
delay(100);
}
}
//===============================================
unsigned long CurrentMillis = millis();
if (CurrentMillis - PreviousMillis > Interval) // siklus per 1000 ms = 1detik
{
PreviousMillis = CurrentMillis;
if (LedState == LOW) {LedState = HIGH;}
else {LedState = LOW; }
digitalWrite(Led1, LedState);
}
}