Arduino LCD Saat & Termometre C++ [Source Code]

utku1114

Banned Member
Katılım
2 Eyl 2020
Konular
107
Mesajlar
472
Tepkime puanı
223
Konum
Turkey
RC Point
0
Yine eskinde yaptığım bir proje buldum paylaşmak istedim
:notlar:
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();


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;

}
 
Üst