#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
const int servo1Pin = 2; // Servo motorun bağlı olduğu pin
const int servo2Pin = 3; // Servo motorun bağlı olduğu pin
const int servo3Pin = 4; // Servo motorun bağlı olduğu pin
bool isServo1At180 = false; // Servo motorun pozisyon durumu
bool isServo2At180 = false; // Servo motorun pozisyon durumu
bool isServo3At180 = false; // Servo motorun pozisyon durumu
const int ledPin5 = 5; // beyaz led
const int ledPin6 = 6; // kırmızı led
const int ledPin7 = 7; // mavi led
const int ledPin8 = 8; // 1. kapı sarı ledi
const int ledPin9 = 9; // 2. kapı sarı ledi
const int ledPin10 = 10; // 3. kapı sarı ledi
const int kapi1buton = 11; // 1. kapı butonu
const int kapi2buton = 12; // 2. kapı butonu
const int kapi3buton = 13; // 3. kapı butonu
const int alarmbuton = A0; // alam butonu
const int isikbuton = A1; // ışık butonu
int buttonState_kapi1buton = 0;
int lastButtonState_kapi1buton = 0;
int buttonState_kapi2buton = 0;
int lastButtonState_kapi2buton = 0;
int buttonState_kapi3buton = 0;
int lastButtonState_kapi3buton = 0;
int buttonState_alarmbuton = 0;
int lastButtonState_alarmbuton = 0;
int buttonState_isikbuton = 0;
int lastButtonState_isikbuton = 0;
bool led_durum5 = LOW;
// Ledlerin yanıp sönme durumu
bool isBlinking = false;
bool isBlinking2 = false;
bool isBlinking3 = false;
bool isBlinking4 = false;
//son zamanlama
unsigned long previousMillis0 = 0;
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
unsigned long previousMillis22 = 0;
unsigned long previousMillis3 = 0;
unsigned long previousMillis4 = 0;
unsigned long previousMillis5 = 0;
unsigned long previousMillis6 = 0;
unsigned long previousMillis7 = 0;
unsigned long previousMillis8 = 0;
// LED'in yanıp sönme aralığı (ms cinsinden)
const long interval0 = 200;
const long interval1 = 202;
const long interval2 = 204;
const long interval22 = 204;
const long interval3 = 206;
const long interval4 = 208;
const long interval5 = 210;
const long interval6 = 212;
const long interval7 = 214;
const long interval8 = 218;
/////////////////////////////////////////////////////////////////////////////////
void setup() {
pinMode(ledPin5, OUTPUT); // beyaz led
pinMode(ledPin6, OUTPUT); // kırmızı ledler
pinMode(ledPin7, OUTPUT); // mavi ledler
pinMode(ledPin8, OUTPUT); // 1. kapı sarı
pinMode(ledPin9, OUTPUT); // 2. kapı sarı
pinMode(ledPin10, OUTPUT); // 3. kapı sarı
pinMode(kapi1buton, INPUT); // 1. kapı butonu
pinMode(kapi2buton, INPUT); // 2. kapı butonu
pinMode(kapi3buton, INPUT); // 3. kapı butonu
pinMode(alarmbuton, INPUT); // alam butonu
pinMode(isikbuton, INPUT); // ışık butonu
servo1.attach(servo1Pin); // Servo motoru bağla
servo1.write(0); // Servo motoru başlangıç pozisyonuna ayarla
servo2.attach(servo2Pin);
servo2.write(0);
servo3.attach(servo3Pin);
servo3.write(0);
}
/////////////////////////////////////////////////////////////////////////////////
void loop() {
unsigned long currentMillis0 = millis(); // Mevcut zamanı al
unsigned long currentMillis1 = millis();
unsigned long currentMillis2 = millis();
unsigned long currentMillis22 = millis();
unsigned long currentMillis3 = millis();
unsigned long currentMillis4 = millis();
unsigned long currentMillis5 = millis();
unsigned long currentMillis6 = millis();
unsigned long currentMillis7 = millis();
unsigned long currentMillis8 = millis();
buttonState_alarmbuton = digitalRead(alarmbuton); // Buton durumunu oku
buttonState_isikbuton = digitalRead(isikbuton); // Buton durumunu oku
buttonState_kapi1buton = digitalRead(kapi1buton); // Buton durumunu oku
buttonState_kapi2buton = digitalRead(kapi2buton); // Buton durumunu oku
buttonState_kapi3buton = digitalRead(kapi3buton); // Buton durumunu oku
/////////////////////////////////////////////////////////////////////////////////
//MAVİ KIRMIZI ALARM LEDLERİ
if (buttonState_alarmbuton != lastButtonState_alarmbuton && (currentMillis0 - previousMillis0 >= interval0)) {
previousMillis0 = currentMillis0; // Zamanlayıcıyı güncelle
if (buttonState_alarmbuton == LOW) {// Butona basılmış mı kontrol et
isBlinking = !isBlinking; // LED'in yanıp sönme durumunu değiştir
if (!isBlinking) {
digitalWrite(ledPin7, LOW); // Yanıp sönme durduysa LED'i kapat
digitalWrite(ledPin6, LOW);
}
}
}
if (isBlinking && (currentMillis1 - previousMillis1 >= interval1)) {
previousMillis1 = currentMillis1; // Zamanlayıcıyı güncelle
// LED'in durumunu değiştir
if (digitalRead(ledPin7) == LOW)
{
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin6, LOW);
} else {
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin6, HIGH);
}
}
lastButtonState_alarmbuton = buttonState_alarmbuton; // Butonun durumunu sakla
////////////////////////////////////////////////////////////////////////////////////
// KAPI 1
if (buttonState_kapi1buton != lastButtonState_kapi1buton && (currentMillis2 - previousMillis2 >= interval2)) {
previousMillis2 = currentMillis2; // Zamanlayıcıyı güncelle
if (buttonState_kapi1buton == LOW) {// Butona basılmış mı kontrol et
isBlinking2 = !isBlinking2; // LED'in yanıp sönme durumunu değiştir
if (!isBlinking2) {
digitalWrite(ledPin8, LOW); // Yanıp sönme durduysa LED'i kapat
}
}
}
if (isBlinking2 && (currentMillis3 - previousMillis3 >= interval3)) {
previousMillis3 = currentMillis3; // Zamanlayıcıyı güncelle
if (digitalRead(ledPin8) == LOW) {
digitalWrite(ledPin8, HIGH);
} else {
digitalWrite(ledPin8, LOW);
}
}
lastButtonState_kapi1buton = buttonState_kapi1buton; // Butonun durumunu sakla
////////////////////////////////////////////////////////////////////////////////////
// KAPI 2
if (buttonState_kapi2buton != lastButtonState_kapi2buton && (currentMillis5 - previousMillis5 >= interval5)) {
previousMillis5 = currentMillis5;
if (buttonState_kapi2buton == LOW) {
isBlinking3 = !isBlinking3;
if (!isBlinking3) {
digitalWrite(ledPin9, LOW);
}
}
}
if (isBlinking3 && (currentMillis6 - previousMillis6 >= interval6)) {
previousMillis6 = currentMillis6;
if (digitalRead(ledPin9) == LOW) {
digitalWrite(ledPin9, HIGH);
} else {
digitalWrite(ledPin9, LOW);
}
}
lastButtonState_kapi2buton = buttonState_kapi2buton; // Butonun durumunu sakla
////////////////////////////////////////////////////////////////////////////////////
// KAPI 3
if (buttonState_kapi3buton != lastButtonState_kapi3buton && (currentMillis7 - previousMillis7 >= interval7)) {
previousMillis7 = currentMillis7; // Zamanlayıcıyı güncelle
if (buttonState_kapi3buton == LOW) {// Butona basılmış mı kontrol et
isBlinking4 = !isBlinking4; // LED'in yanıp sönme durumunu değiştir
if (!isBlinking4) {
digitalWrite(ledPin10, LOW); // Yanıp sönme durduysa LED'i kapat
}
}
}
if (isBlinking4 && (currentMillis8 - previousMillis8 >= interval8)) {
previousMillis8 = currentMillis8; // Zamanlayıcıyı güncelle
// LED'in durumunu değiştir
if (digitalRead(ledPin10) == LOW) {
digitalWrite(ledPin10, HIGH);
} else {
digitalWrite(ledPin10, LOW);
}
}
lastButtonState_kapi3buton = buttonState_kapi3buton; // Butonun durumunu sakla
////////////////////////////////////////////////////////////////////////////////////
//AYDINBEYAZ AYDINLATMA LEDLERİ
buttonState_isikbuton = digitalRead(isikbuton); // Buton durumunu oku
// Buton durumunda değişiklik var mı kontrol et
if (buttonState_isikbuton != lastButtonState_isikbuton) {
if (currentMillis4 - previousMillis4 >= interval4) {
previousMillis4 = currentMillis4; // Zamanlayıcıyı güncelle
if (buttonState_isikbuton == LOW) { // Butona basılmış mı kontrol et
led_durum5 = !led_durum5; // LED durumunu değiştir (aç/kapa)
digitalWrite(ledPin5, led_durum5); // LED'i yeni duruma ayarla
}
}
}
lastButtonState_isikbuton = buttonState_isikbuton; // Butonun durumunu sakla
}
///////////////////////////////////////////////////////////////////////////////////
void moveServo1(int fromAngle, int toAngle) {
int stepDelay = 15; // Her adım arasındaki gecikme süresi (milisaniye cinsinden)
if (fromAngle < toAngle) {
for (int pos = fromAngle; pos <= toAngle; pos++) {
servo1.write(pos);
delay(stepDelay);
}
} else {
for (int pos = fromAngle; pos >= toAngle; pos--) {
servo1.write(pos);
delay(stepDelay);
}
}
}
void moveServo2(int fromAngle, int toAngle) {
int stepDelay = 15; // Her adım arasındaki gecikme süresi (milisaniye cinsinden)
if (fromAngle < toAngle) {
for (int pos = fromAngle; pos <= toAngle; pos++) {
servo2.write(pos);
delay(stepDelay);
}
} else {
for (int pos = fromAngle; pos >= toAngle; pos--) {
servo2.write(pos);
delay(stepDelay);
}
}
}
void moveServo3(int fromAngle, int toAngle) {
int stepDelay = 15; // Her adım arasındaki gecikme süresi (milisaniye cinsinden)
if (fromAngle < toAngle) {
for (int pos = fromAngle; pos <= toAngle; pos++) {
servo3.write(pos);
delay(stepDelay);
}
} else {
for (int pos = fromAngle; pos >= toAngle; pos--) {
servo3.write(pos);
delay(stepDelay);
}
}
}