utku1114
Banned Member
Yine eskinde yaptığım bir proje buldum paylaşmak istedim
byte second = 0; //0-59
byte minute = 11; //0-59
byte hour = 23; //0-23
byte weekDay = 1; //1-7
byte monthDay = 24; //1-31
byte month = 10; //1-12
byte year = 16; //0-99
Tarih, gün ayarını yaptıktan sonra kodu Arduino’ya yüklüyoruz. Bu sırada ekranda tarih, saat, gün doğru bir şekilde görünecektir. Ancak Arduino’ya her reset attığınızda girdiğiniz değerler yeniden yüklenecektir. Bu nedenle Arduino’nun besleme kablosunu çıkarıyoruz. Saatin, tarihin kaldığı yerden devam etmesi için aşağıdaki talimatları uyguluyoruz.
Kodlarda void setup kısmında yer alan “setDateTime();” satırını yorum haline getiriyoruz.
//setDateTime();
byte minute = 11; //0-59
byte hour = 23; //0-23
byte weekDay = 1; //1-7
byte monthDay = 24; //1-31
byte month = 10; //1-12
byte year = 16; //0-99
Tarih, gün ayarını yaptıktan sonra kodu Arduino’ya yüklüyoruz. Bu sırada ekranda tarih, saat, gün doğru bir şekilde görünecektir. Ancak Arduino’ya her reset attığınızda girdiğiniz değerler yeniden yüklenecektir. Bu nedenle Arduino’nun besleme kablosunu çıkarıyoruz. Saatin, tarihin kaldığı yerden devam etmesi için aşağıdaki talimatları uyguluyoruz.
Kodlarda void setup kısmında yer alan “setDateTime();” satırını yorum haline getiriyoruz.
//setDateTime();
Kodlar:
C++:
#include <LiquidCrystal.h>// Kütüphanemizi Ekliyoruz
LiquidCrystal lcd(8, 7, 6, 5, 4, 3);
#include “Wire.h”
#define DS3231_ADDRESS 0x68
const int sensor = A0;
int bit_deger;
float voltaj_degeri;
float sicaklik_degeri;
int sayici=0;
byte zero = 0x00;
void setup() {
Wire.begin();
Serial.begin(9600);
setDateTime();
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
printDate();
delay(1000);
lcd.clear();
}
void setDateTime() {
byte second = 0; //0-59
byte minute = 11; //0-59
byte hour = 23; //0-23
byte weekDay = 1; //1-7
byte monthDay = 24; //1-31
byte month = 10; //1-12
byte year = 16; //0-99
Wire.beginTransmission(DS3231_ADDRESS);
Wire.write(zero); // Osilatörü durdur
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(DS3231_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS3231_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());
if(sayici<minute)
{
bit_deger = analogRead(sensor);
voltaj_degeri = (bit_deger / 1023.0) * 5000;
sicaklik_degeri = voltaj_degeri / 10.0;
}
lcd.home();
lcd.print(monthDay);
lcd.print(“/”);
lcd.print(month);
lcd.print(“/”);
lcd.print(year);
lcd.print(” “);
if (weekDay == 1)
{ lcd.print(“P.tesi”);
}
if (weekDay == 2)
{ lcd.print(“Sali”);
}
if (weekDay == 3)
{ lcd.print(“Cars.”);
}
if (weekDay == 4)
{ lcd.print(“Pers.”);
}
if (weekDay == 5)
{ lcd.print(“Cuma”);
}
if (weekDay == 6)
{ lcd.print(“C.tesi”);
}
if (weekDay == 7)
{ lcd.print(“Pazar”);
}
lcd.setCursor(0, 1);
lcd.print(hour);
lcd.print(“:”);
lcd.print(minute);
lcd.print(“:”);
lcd.print(second);
lcd.setCursor(9,1);
lcd.print(sicaklik_degeri);
lcd.print(” “);
lcd.print(“C”);
sayici=minute;
}