Sürekli olarak ileri sayma hatası alıyorum?

G

ghost

Ziyaretçi
Arduino uno ile zaman ayarlı röle devresi Kullanılan Modüller: Arduino Uno LCD KeyPad RTC 1307 Röle Çalışma Mantığı: Başlangıç saati ile bitiş saati ayar butonları ile ayarlandıktan sonra devreye bağlı olan röle çıkışları belirlenen saatlerde aktif veya pasif oluyor. Anlık saat ile ayarlanmış olan başlangıç ve bitiş saatleri lcd üzerinden takip edilebiliyor. Elektrikler kesilse bile ayarlanmış olanlar saatler hafızadan silinmiyor. Hatalar: Saat ve dakika ayarlamaları yapılırken sürekli ileri sayma hatası henüz düzeltmeye vaktim olmadı Geliştirmek için yapılabilecekler: Günlük ve haftalık ayarlamalar yazılıma eklenebilir. ve daha çok fazla değişiklik için yardım ve fikirlerinizi yorumlarda yazabilirsiniz.

C++:
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
#include <EEPROM.h>

#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args) write(args);
#else
#define printByte(args) print(args,BYTE);
#endif

#define sag 0
#define yukari 1
#define asagi 2
#define sol 3
#define sec 4
#define yok 5

int role = 2;
int basilan_tus = 0;
int okunan_deger = 0;
int saat_adresi , saat_verisi;
int dakika_adresi , dakika_verisi;
int _saat_adresi , _saat_verisi;
int _dakika_adresi , _dakika_verisi;

uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};

LiquidCrystal ekran(8, 9, 4, 5, 6, 7);

RTC_DS1307 RTC;

byte buton_bul()
{
okunan_deger = analogRead(A0);
if (okunan_deger > 1000)
return yok;
if (okunan_deger < 55)
return sag;
if (okunan_deger < 200)
return yukari;
if (okunan_deger < 390)
return asagi;
if (okunan_deger < 560)
return sol;
if (okunan_deger < 800)
return sec;
}

void setup()
{
Serial.begin(9600);
ekran.begin(16, 2);
ekran.setCursor(0, 0);
ekran.clear();
ekran.createChar(2, clock);
Wire.begin();
RTC.begin();
pinMode(role, OUTPUT);
}

void loop()
{
ekran.setCursor(0, 1);
basilan_tus = buton_bul();
DateTime now = RTC.now();

switch (basilan_tus)
{
case sag:
{
_dakika_verisi ++;
_dakika_adresi=10;
EEPROM.write(_dakika_adresi, _dakika_verisi);
delay(200);
break;
}
case sol:
{
saat_verisi ++;
saat_adresi=11;
EEPROM.write(saat_adresi, saat_verisi);
delay(200);
break;
}
case yukari:
{
dakika_verisi ++;
dakika_adresi=12;
EEPROM.write(dakika_adresi, dakika_verisi);
delay(200);
break;
}
case asagi:
{
_saat_verisi ++;
_saat_adresi=13;
EEPROM.write(_saat_adresi, _saat_verisi);
delay(200);

break;
}
case sec:
{
_saat_adresi=13;
_saat_verisi=0;
EEPROM.write(_saat_adresi, _saat_verisi);
_dakika_verisi=0;
_dakika_adresi=10;
EEPROM.write(_dakika_adresi, _dakika_verisi);
saat_verisi=0;
saat_adresi=11;
EEPROM.write(saat_adresi, saat_verisi);
dakika_verisi=0;
dakika_adresi=12;
EEPROM.write(dakika_adresi, dakika_verisi);

ekran.clear();
break;
}
case yok:
{
ekran.setCursor(0, 0);
ekran.printByte(2);
ekran.print(" ");
ekran.print(now.hour(), DEC );
ekran.print(':');
ekran.print(now.minute(), DEC );
ekran.print(':');
ekran.print(now.second(), DEC );
ekran.setCursor(0, 1);
ekran.print(saat_verisi );
ekran.setCursor(2, 1);
ekran.print(":");
ekran.setCursor(3, 1);
ekran.print(dakika_verisi );
ekran.setCursor(9, 1);
ekran.print(_saat_verisi );
ekran.setCursor(11, 1);
ekran.print(":");
ekran.setCursor(12, 1);
ekran.print(_dakika_verisi );
break;

}

}
_dakika_verisi = EEPROM.read(10 );
saat_verisi = EEPROM.read(11 );
dakika_verisi = EEPROM.read(12 );
_saat_verisi = EEPROM.read(13 );

if ( now.hour() == saat_verisi && now.minute() == dakika_verisi)
digitalWrite(role,HIGH);
if ( now.hour() == _saat_verisi && now.minute() == _dakika_verisi)
digitalWrite(role,LOW);
}
 

Robotikforum.net Nedir?

  • Robotikforum.net 2020 yılında kurulup yayın hayatına başlayan ve Türkiye’de robotik kodlama alanının gelişimine katkıda bulunmak için bu alan ile ilgilenen bireylerin bir birleri ile yardımlaşmaları ve fikir danışmalarını sağlayarak daha iyi öğrenmek için her bir bireyin bilgisini ve tecrübesini alarak kendini geliştirebileceği ve sorularına cevap bulabileceği bir platform olarak kurulmuştur.

Bilgilendirme!!!

İçerik sağlayıcı paylaşım sitelerinden biri olan www.robotikforum.net Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.

Sayfamızı beğendin mi?