Garip bir şekilde bilgisayardayken sistemi başlatınca bir problem olmuyor, hatta bilgisayardan çalıştırdıktan sonra usb bağlantısını çekince sistem çalışmaya devam ediyor.
Güç bağlantıları vb. yapıldı çalışıor.
Güç bağlantıları vb. yapıldı çalışıor.
Kod:
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 2
SoftwareSerial sim800L(rxPin, txPin);
const int ldrPin = A0; // LDR pini
String buff;
bool ldrWorking = true;
bool systemRunning = false;
unsigned long lastLDRCheckTime = 0;
String testullah;
const unsigned long LDR_CHECK_INTERVAL = 2000; // 2 saniyede bir kontrol et
void setup() {
pinMode(9, OUTPUT); // Role 1 pin
pinMode(10, OUTPUT); // Role 2 pin
pinMode(11, OUTPUT); // Role 3 pin
pinMode(12, OUTPUT); // Role 4 pin
pinMode(13, OUTPUT); // test led pin
pinMode(ldrPin, INPUT); // LDR pinini giriş
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
Serial.begin(115200);
digitalWrite(13, HIGH);
sim800L.begin(9600);
Serial.println("Initializing...");
sim800L.println("AT");
waitForResponse();
sim800L.println("ATE1");
waitForResponse();
sim800L.println("AT+CMGF=1");
waitForResponse();
sim800L.println("AT+CNMI=1,2,0,0,0");
waitForResponse();
}
void loop() {
// LDR durumunu kontrol et
if (millis() - lastLDRCheckTime >= LDR_CHECK_INTERVAL) {
ldrWorking = checkLDRStatus();
Serial.println("LDR Status: " + String(ldrWorking ? "Light Detected" : "No Light Detected"));
lastLDRCheckTime = millis();
}
while (sim800L.available()) {
buff = sim800L.readString();
Serial.println(buff);
if (buff.indexOf("basla") != -1) {
digitalWrite(9, LOW);
delay(2000); // 2 saniye bekle
digitalWrite(10, LOW);
delay(5000); // 5 saniye boyunca 10 LOW
digitalWrite(10, HIGH);
if (ldrWorking) {
// ........
systemRunning = true;
// Dur komutu gelene kadar devam et
while (buff.indexOf("dur") == -1) {
delay(5000); // 5 saniye bekle
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
delay(2000); // 2 saniye bekle
digitalWrite(9, LOW);
delay(2000); // 2 saniye bekle
digitalWrite(10, LOW);
delay(3000); // 3 saniye sonra 10 HIGH
digitalWrite(10, HIGH);
checkNewSMS(); // Yeni SMS'leri kontrol et
}
// Sistem durduğunda
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
systemRunning = false;
}
} else if (systemRunning && buff.indexOf("stop") != -1) {
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
systemRunning = false;
} else if (systemRunning && buff.indexOf("test") != -1) {
digitalWrite(9, LOW);
delay(2000);
digitalWrite(10, HIGH);
delay(2000);
digitalWrite(9, HIGH);
delay(2000);
digitalWrite(11, LOW);
Serial.println("test SMS received");
}
sim800L.println("AT+CMGDA=\"DEL ALL\"");
waitForResponse();
}
while (Serial.available()) {
buff = Serial.readString();
buff.trim();
if (buff == "s") {
sendSMS("SMS testi");
} else {
sim800L.println(buff);
}
}
}
bool checkLDRStatus() {
int ldrValue = analogRead(ldrPin);
return ldrValue <= 500; // LDR
}
void sendSMS(String message) {
sim800L.print("AT+CMGS=\"+90xxxxxxxx\"\r"); // Alıcı telefon numarası
waitForResponse();
sim800L.print(message);
sim800L.write(0x1A);
waitForResponse();
}
void checkNewSMS() {
sim800L.println("AT+CMGL=\"REC UNREAD\"");
delay(500);
while (sim800L.available()) {
buff = sim800L.readString();
Serial.println(buff);
if (buff.indexOf("+CMGL:") != -1) {
// Yeni SMS bulundu
if (buff.indexOf("basla") != -1) {
// ........
// ........
} else if (buff.indexOf("dur") != -1) {
// "dur" SMS'i geldi
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
Serial.println("Dur SMS received");
systemRunning = false; // Sistem durmasını sağla
} else if (buff.indexOf("stop") != -1) {
// ........
// ........
} else if (buff.indexOf("test") != -1) {
// ......
// ........
}
}
}
}
void waitForResponse() {
delay(1000);
while (sim800L.available()) {
Serial.println(sim800L.readString());
}
sim800L.read();
}