// Pin tanımlamaları
#define PIN_0 0 // PB0 - Input
#define PIN_1 1 // PB1 - Input
#define PIN_2 2 // PB2 - Input
#define PIN_3 3 // PB3 - Output (High olacak)
#define PIN_4 4 // PB4 - Output (1sn'de bir toggle, ancak belirli koşullarda LOW olacak)
#define PIN_5 5 // PB5 - Output (3sn'de bir toggle)
// Zaman kontrol değişkenleri
unsigned long previousMillis_4 = 0;
unsigned long previousMillis_5 = 0;
const long interval_4 = 250; // 1 saniye
const long interval_5 = 1500; // 3 saniye
void setup() {
// Input pinlerin ayarlanması
pinMode(PIN_0, INPUT);
pinMode(PIN_1, INPUT);
pinMode(PIN_2, INPUT);
// Output pinlerin ayarlanması
pinMode(PIN_3, OUTPUT);
pinMode(PIN_4, OUTPUT);
pinMode(PIN_5, OUTPUT);
// Başlangıç değerlerini ayarla
digitalWrite(PIN_3, LOW);
digitalWrite(PIN_4, LOW);
digitalWrite(PIN_5, LOW);
}
void loop() {
// Zaman güncelleme
unsigned long currentMillis = millis();
// Input pinlerinin durumu
int input0 = digitalRead(PIN_0);
int input1 = digitalRead(PIN_1);
int input2 = digitalRead(PIN_2);
// 0, 1 ve 2 numaralı pinlerden biri LOW ise, 3 numaralı pin HIGH olur
if (input0 == LOW || input1 == LOW || input2 == LOW) {
digitalWrite(PIN_3, HIGH);
} else {
digitalWrite(PIN_3, LOW);
}
// 0, 1 ve 2 numaralı pinlerin hepsi HIGH değilse, 4 numaralı pin her 1 saniyede bir toggle olur
if (!(input0 == HIGH && input1 == HIGH && input2 == HIGH)) {
if (currentMillis - previousMillis_4 >= interval_4) {
previousMillis_4 = currentMillis;
digitalWrite(PIN_4, !digitalRead(PIN_4)); // Pin durumu değiştir
}
} else {
digitalWrite(PIN_4, LOW); // Hepsi HIGH olduğunda 4 numaralı pin LOW olur
}
// 0, 1 ve 2 numaralı pinlerin hepsi HIGH ise, 5 numaralı pin 3 saniyede bir toggle olacak
if (input0 == HIGH && input1 == HIGH && input2 == HIGH) {
if (currentMillis - previousMillis_5 >= interval_5) {
previousMillis_5 = currentMillis;
digitalWrite(PIN_5, !digitalRead(PIN_5)); // Pin durumu değiştir
}
} else {
digitalWrite(PIN_5, LOW); // Eğer hepsi HIGH değilse, 5 numaralı pin LOW
}
}