breeze17
Yeni Üye
- Katılım
- 3 Temmuz 2023
- Mesajlar
- 9
Merhabalar benim küçük yapmam gereken bir projem var kodu chatgpt de ve biraz bilgim ile yazdırdım fakat bir hata var onu çözemiyorum yardımcı olabilir misiniz
Proje şu şekilde olacak: 128x32 ekrana saat ve dakikayı yazdırıyorum DS1307 den gelen veri ile ve 2 butonumuz var 1.butona basarak Başlangıç saat ayarlama Başlangıç dakika ayarlama var bunları 2.buton ile yapıyorum ardından Bitiş saat ayarlama ve bitiş dakika ayarlama kısmında 2.buton ile yapıyorum ve Ayarladığım başlangıç saati ve dakikası DS1307 den gelen veri ile eşit olunca röle çalışacak Bitiş saati eşit olunca röle kapanacak
Sorun: Saatleri buton ile ayarlamasını yapıyorum ama başlangıç saati gelince röle çalışmıyor yardımcı olabilir misiniz
Proje şu şekilde olacak: 128x32 ekrana saat ve dakikayı yazdırıyorum DS1307 den gelen veri ile ve 2 butonumuz var 1.butona basarak Başlangıç saat ayarlama Başlangıç dakika ayarlama var bunları 2.buton ile yapıyorum ardından Bitiş saat ayarlama ve bitiş dakika ayarlama kısmında 2.buton ile yapıyorum ve Ayarladığım başlangıç saati ve dakikası DS1307 den gelen veri ile eşit olunca röle çalışacak Bitiş saati eşit olunca röle kapanacak
Sorun: Saatleri buton ile ayarlamasını yapıyorum ama başlangıç saati gelince röle çalışmıyor yardımcı olabilir misiniz
Kod:
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
int genislik = 128;
int yukseklik = 32;
int adres = 0x3C;
Adafruit_SSD1306 ekran(genislik, yukseklik, &Wire);
RTC_DS1307 rtc;
const int buton1Pin = 2; // 1. buton (Menüye girme ve ayarlamayı onaylama için)
const int buton2Pin = 3; // 2. buton (Saat ve dakika ayarlamak için)
const int rolePin = 7; // Röle pini
enum Mod { Bekleme, BaslangicSaatAyar, BaslangicDakikaAyar, BitisSaatAyar, BitisDakikaAyar };
Mod mod = Bekleme;
int ayarlananBaslangicSaat = 0;
int ayarlananBaslangicDakika = 0;
int ayarlananBitisSaat = 0;
int ayarlananBitisDakika = 0;
unsigned long butonSonBasmaZamani = 0;
unsigned long debounceSuresi = 200; // Debouncing süresi (milisaniye cinsinden)
bool buton1BirKereBasildi = false;
bool buton2BirKereBasildi = false;
bool roleDurumu = false; // Röle durumu
void setup() {
ekran.begin(SSD1306_SWITCHCAPVCC, adres);
ekran.clearDisplay();
ekran.display();
rtc.begin();
//rtc.adjust(DateTime(__DATE__, __TIME__));
pinMode(buton1Pin, INPUT_PULLUP);
pinMode(buton2Pin, INPUT_PULLUP);
pinMode(rolePin, OUTPUT);
// Başlangıçta röleyi kapalı yapın
digitalWrite(rolePin, LOW);
}
void loop() {
ekran.clearDisplay();
ekran.setTextSize(2);
ekran.setTextColor(SSD1306_WHITE);
unsigned long suankiZaman = millis();
// Röle kontrolü
if (mod == Bekleme) {
DateTime now = rtc.now();
if (now.hour() == ayarlananBaslangicSaat && now.minute() == ayarlananBaslangicDakika) {
// Başlangıç saati geldi, röle aç
roleDurumu = true;
digitalWrite(rolePin, HIGH);
} else if (now.hour() == ayarlananBitisSaat && now.minute() == ayarlananBitisDakika) {
// Bitiş saati geldi, röle kapat
roleDurumu = false;
digitalWrite(rolePin, LOW);
}
}
// Ekranı güncelle
ekran.setCursor(0, 0);
if (mod == Bekleme) {
DateTime now = rtc.now();
ekran.print("Saat: ");
ekran.print(now.hour(), DEC);
ekran.print(":");
ekran.print(now.minute(), DEC);
} else if (mod == BaslangicSaatAyar) {
ekran.print("Baslangic Saat Ayarla: ");
ekran.print(ayarlananBaslangicSaat);
} else if (mod == BaslangicDakikaAyar) {
ekran.print("Baslangic Dakika Ayarla: ");
ekran.print(ayarlananBaslangicDakika);
} else if (mod == BitisSaatAyar) {
ekran.print("Bitis Saat Ayarla: ");
ekran.print(ayarlananBitisSaat);
} else if (mod == BitisDakikaAyar) {
ekran.print("Bitis Dakika Ayarla: ");
ekran.print(ayarlananBitisDakika);
}
ekran.display();
// Buton kontrolü
if (digitalRead(buton1Pin) == LOW && !buton2BirKereBasildi) {
if (!buton1BirKereBasildi && suankiZaman - butonSonBasmaZamani > debounceSuresi) {
butonSonBasmaZamani = suankiZaman;
buton1BirKereBasildi = true;
if (mod == Bekleme) {
mod = BaslangicSaatAyar;
} else if (mod == BaslangicSaatAyar) {
mod = BaslangicDakikaAyar;
} else if (mod == BaslangicDakikaAyar) {
// Başlangıç saat ve dakika ayarı tamamlandı
ayarlananBaslangicSaat = rtc.now().hour();
ayarlananBaslangicDakika = rtc.now().minute();
mod = BitisSaatAyar;
} else if (mod == BitisSaatAyar) {
mod = BitisDakikaAyar;
} else if (mod == BitisDakikaAyar) {
// Bitiş saat ve dakika ayarı tamamlandı
ayarlananBitisSaat = rtc.now().hour();
ayarlananBitisDakika = rtc.now().minute();
mod = Bekleme;
}
}
} else {
buton1BirKereBasildi = false;
}
if (digitalRead(buton2Pin) == LOW && !buton1BirKereBasildi) {
if (!buton2BirKereBasildi && suankiZaman - butonSonBasmaZamani > debounceSuresi) {
butonSonBasmaZamani = suankiZaman;
buton2BirKereBasildi = true;
if (mod == BaslangicSaatAyar) {
ayarlananBaslangicSaat++;
if (ayarlananBaslangicSaat > 23) {
ayarlananBaslangicSaat = 0;
}
} else if (mod == BaslangicDakikaAyar) {
ayarlananBaslangicDakika++;
if (ayarlananBaslangicDakika > 59) {
ayarlananBaslangicDakika = 0;
}
} else if (mod == BitisSaatAyar) {
ayarlananBitisSaat++;
if (ayarlananBitisSaat > 23) {
ayarlananBitisSaat = 0;
}
} else if (mod == BitisDakikaAyar) {
ayarlananBitisDakika++;
if (ayarlananBitisDakika > 59) {
ayarlananBitisDakika = 0;
}
}
}
} else {
buton2BirKereBasildi = false;
}
}
Last edited by a moderator: