arduino saat k

Arduino ile saat yapımı (DS1307)

RTC (real time Clock ) modülü ile arduinomuza zaman kavramını ekleyebilirsiniz.Bu projemizde rtc entegresi olan DS1307 entegresi ile saat ve tarihi lcdde gösterebilen bir proje yapmaya çalıştım.Kısa bilgi vermekte fayda var. DS1307 entegresi üzerinde 8 byte saklayabilen saat entegresidir.

 

ds1307Dolayısı ile üzerine monte edilen 3voltluk pil ile bu modül. Pil bitinceye kadar saati çalıştıracaktır.

DS1307 entegresi arduinomuz ile tek bir kablo aracılığıyla bilgi aktarmaktadır ama tabiiki olmazsa olmaz olan kütüphanemiz aracılığıyla bu bilgiyi işleyebilirsiniz.

arduino saat

Bu projemizde İ2C bağlantısını kullanan 16×2 LCD ve DS1307 RTC modülünü kullandım. dolayısı ile ekstra olarak herhangi bir elektronik devreye ihtiyacınız olmayacaktır.DS1307 modülünü ilk defa kullanıyorsanız o zaman aşağıdaki bağlantı şemasını yaptıktan sonra saat ve tarih ayarlaması yapmalısınız .

ds1307 lcd saat

Saat ayarlaması yapabilmek için aşağıdaki programı arduinonuza yükleyin

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00;
 
void setup(){
  Wire.begin();
  Serial.begin(9600);
  setDateTime();
}
 
void loop(){
  printDate();
  delay(1000);
}
 
void setDateTime(){
 
  byte second =      45; //0-59
  byte minute =      12; //0-59
  byte hour =        19; //0-23
  byte weekDay =     4; //1-7
  byte monthDay =    2; //1-31
  byte month =       5; //1-12
  byte year  =       13; //0-99
 
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator
 
  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
 
  Wire.write(zero);
 
  Wire.endTransmission();
 
}
 
byte decToBcd(byte val){
return ( (val/10*16) + (val%10) );
}
 
byte bcdToDec(byte val)  {
  return ( (val/16*10) + (val%16) );
}
 
void printDate(){
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();
 
  Wire.requestFrom(DS1307_ADDRESS, 7);
 
  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111);// 24 saat
  int weekDay = bcdToDec(Wire.read()); //7 gün
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());
 
  //ornek  3/1/11 23:59:59
  Serial.print(month);
  Serial.print("/");
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);
}

Daha sonra ana programımızı yükleyerek saat ve tarihi LCDnizde görebilirsiniz

#include "Wire.h"
#define DS1307_ADDRESS 0x68
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2);
void setup(){
Wire.begin();
lcd.init();                     
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("www.arduinom.org");
  delay(2000);
}
 
void loop(){
  printDate();
  delay(1000);
}
 
byte bcdToDec(byte val)  {
  return ( (val/16*10) + (val%16) );
}
 
void printDate(){
 
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111);
  int weekDay = bcdToDec(Wire.read());
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());
lcd.clear();
  //su sekide ayarlamalısınız  3/1/11 23:59:59
 lcd.setCursor(1,0);
    lcd.print("Tarih: ");
    lcd.print(monthDay);
  lcd.print("/");
  lcd.print(month);
  lcd.print("/");
  lcd.print(year);
 lcd.setCursor(0,1);
  lcd.print(" Saat :");
   lcd.print(" ");
  lcd.print(hour);
  lcd.print(":");
  lcd.print(minute);
  lcd.print(":");
  lcd.print(second);
  delay(1);
 
}

  1. Anonim 28 Şubat 2017 09:57

    Benim bitirme projem de saat yapımı.AMA Takılabilir olması gerekiyor.Aynı zamanda kronometre falan olursa iyi olur.Grafik ekran kullanmam gerekiyor.DS1307 İŞİMİ GÖRÜR MÜ

    Cevapla
  2. muratyazar 21 Ocak 2017 00:22

    lcd ile rtc nin scl sda bağlantısını ayrıntılı gösterebilimisin

    Cevapla
  3. sergen 22 Nisan 2016 18:19

    ‘class LiquidCrystal_I2C’ has no member named ‘init’ Hatası alıyorum

    Cevapla
    • Arduinocu 23 Nisan 2016 07:52

      kutuphaneleri yuklemeniz gerekmekte.

      Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.