#define PIN_9 9    // Pompa 1 için çıkış pini (Pin 9)
#define PIN_10 10  // Pompa 2 için çıkış pini (Pin 10)
#define PIN_11 11  // Pompa 3 için çıkış pini (Pin 11)
#define PIN_12 12  // Pompa 4 için çıkış pini (Pin 12)

#include <SoftwareSerial.h>
SoftwareSerial gsm(10, 11); // RX, TX

void setup() {
  gsm.begin(9600);
  delay(2000);
  
  // Pin modlarını belirleyelim
  pinMode(PIN_9, OUTPUT);  // Pompa 1 için çıkış
  pinMode(PIN_10, OUTPUT); // Pompa 2 için çıkış
  pinMode(PIN_11, OUTPUT); // Pompa 3 için çıkış
  pinMode(PIN_12, OUTPUT); // Pompa 4 için çıkış
  
  // Başlangıçta pinleri kapalı yapalım
  digitalWrite(PIN_9, LOW);  // Pin 9 kapalı (Pompa 1 kapalı)
  digitalWrite(PIN_10, LOW); // Pin 10 kapalı (Pompa 2 kapalı)
  digitalWrite(PIN_11, LOW); // Pin 11 kapalı (Pompa 3 kapalı)
  digitalWrite(PIN_12, LOW); // Pin 12 kapalı (Pompa 4 kapalı)
  
  Serial.begin(9600);
  delay(3000);
  
  gsm.println("ATS0=1"); // Bir çalmada otomatik aç
  delay(3000);
  gsm.println("AT+DDET=1"); // DTMF'yi aç
  delay(3000);
  
  Serial.println("Sistem başladı");
}

void loop() {
  String gelen = "";
  if (gsm.available()) {
    while (gsm.available()) {
      delay(13);
      char c = gsm.read();
      gelen += c;
    }
    Serial.print("Gelen: ");
    Serial.println(gelen);
    
    // DTMF sinyaline göre pin kontrolü
    if (gelen.indexOf("+DTMF: 1") != -1) {
      Serial.println("1'e basıldı, Pin 9 çıkışı verildi");
      digitalWrite(PIN_9, HIGH);  // Pin 9 çıkışı ver (Pompa 1 açılır)
    }
    else if (gelen.indexOf("+DTMF: 2") != -1) {
      Serial.println("2'ye basıldı, Pin 9 çıkışı kapatıldı");
      digitalWrite(PIN_9, LOW);   // Pin 9 çıkışını kapat (Pompa 1 kapanır)
    }
    else if (gelen.indexOf("+DTMF: 3") != -1) {
      Serial.println("3'e basıldı, Pin 10 çıkışı verildi");
      digitalWrite(PIN_10, HIGH);  // Pin 10 çıkışı ver (Pompa 2 açılır)
    }
    else if (gelen.indexOf("+DTMF: 4") != -1) {
      Serial.println("4'e basıldı, Pin 10 çıkışı kapatıldı");
      digitalWrite(PIN_10, LOW);   // Pin 10 çıkışını kapat (Pompa 2 kapanır)
    }
  }
}
