DS1307 ile Gerçek Zaman Saati (RTC) Yapımı ve Arduino ile Kullanımı
İsmail // 24 Temmuz 2012 // 145 yorum // kategori: Arduino Eklentileri(Shield), Arduino Projeleri
Arduino projelerimizde zaman zaman gerçek zaman saatine ihtiyaç duyarız. Saate göre açılıp kapanan röleler, tarih veya saate göre veri kaydetme gibi konularda enerji kayıplarından (elektrik kesilmesi vs.) etkilenmeyen bir saate ihtiyaç duyuyorsanız DS1307 ile bu temel devreyi kurarak ihtiyacınızı karşılayabilirsiniz.
Gerekli Malzemeler:
- 1 adet 32.768 KHz kristal
- 1 adet CR2032 pil
- 1 adet CR2032 pil yuvası
- 1 adet DS1307
- 1 adet 0.1?F kondansatör
- 3 adet 10K direnç
Yukarıda şemasını verdiğim devreyi breadboard ya da delikli bakır plakete kurduktan sonra SDA-Arduino Analog4 ve SCL-Arduino Analog5 bağlantılarını yapıyoruz. İnternette DS1307 gerçek zaman saati (RTC) pek çok kütüphane mevcut.
Aşağıda DS1307new kütüphanesi ile çalışan, (en alttaki bağlantılardan dosyalarını indirebilirsiniz.) düzenleyip sadeleştirdiğim örnek bir programı paylaşıyorum. Program eğer daha önce ayarlanmamışsa saat ve tarih verilerini sizin girdiğiniz değerlere göre DS1307 NV-RAMine kaydediyor. Daha sonra saniyede bir tarih ve saat bilgilerini serial monitorde yazdırıyor.
Programda içerisinde açıklamalarda da belirttim fakat yine yazayım. Saat ve tarihi tekrar ayarlamak için DS1307nin pil ve 5v bağlantısını kesip bir süre beklemek gerekiyor. Daha sonra sketchdeki değerleri değiştirerek saat ve tarih değerlerini ayarlayabilirsiniz.
// ################################################################################## // # Yazar : Peter Schmelzer, Oliver Kraus // # Düzenleme : İsmail BUÇGÜN // # DS1307new kütüphanesi için test programı. CR2032 pil desteği ile hazırladığınız // # DS1307 devrenizi Arduinonuzun I2C pinlerine bağladıktan sonra programı // # yükleyerek devrenizi test edebilirsiniz. // ################################################################################## #include <Wire.h> // Wire kütüphanesini ekliyoruz. #include <DS1307new.h> // DS1307new kütüphanesini ekliyoruz. // Değişkenler uint16_t startAddr = 0x0000; // NV-RAM'de saklamak için başlangıç adresi uint16_t lastAddr; // NV-RAM'de saklamak için yeni adres uint16_t TimeIsSet = 0xaa55; // Saatin tekrar ayarlanmamasına yardımcı olur. void setup() { Serial.begin(9600); // Store startAddr in NV-RAM address 0x08 RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t)); RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); if (TimeIsSet != 0xaa55) // Saat ve tarih daha önce ayarlanmış mı kontrol ediyoruz. Eğer ayarlanmamışsa // TimeIsSet değişkeni 0xaa55 değerine eşit değilse aşağıda girdiğimiz // verilerle saati ayarlamış oluruz. { RTC.stopClock(); // Bu kısımdan sketchi yüklemeden önce tarih ve saati ayarlayabilirsiniz. // Bir kez ayarlayıp yükledikten sonra tekrar tarih saat ayarı yapabilmek // için entegreye bağlı batarya bağlantısı ve Arduinodan sağladığımız // 5v enerjiyi kesip bir süre beklemek gerekiyor. Daha sonra programda tarih // ve saati ayarladıktan sonra yüklediğinizde NV-RAMe ayarladığınız tarih ve // saat bilgileri kaydedilecektir. İlk satırı (Yıl,Ay,Gün), ikinci satırı // (Saat,Dakika,Saniye) formatında yazmanız gerekiyor. RTC.fillByYMD(2011,4,8); RTC.fillByHMS(22,7,0); RTC.setTime(); TimeIsSet = 0xaa55; RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); RTC.startClock(); } else { RTC.getTime(); } Serial.println("DS1307new Kutuphanesi Test Programi"); Serial.println("Tarih Saat Formati "SS:DD:ss GG-AA-YYY DDD""); Serial.println("Her saniye alt satira gecerek o anki zamani gosterir."); Serial.println(); } void loop() { RTC.getTime(); // Saat ve Tarih verilerini al if (RTC.hour < 10) { Serial.print("0"); Serial.print(RTC.hour, DEC); } else { Serial.print(RTC.hour, DEC); } Serial.print(":"); if (RTC.minute < 10) { Serial.print("0"); Serial.print(RTC.minute, DEC); } else { Serial.print(RTC.minute, DEC); } Serial.print(":"); if (RTC.second < 10) { Serial.print("0"); Serial.print(RTC.second, DEC); } else { Serial.print(RTC.second, DEC); } Serial.print(" "); if (RTC.day < 10) { Serial.print("0"); Serial.print(RTC.day, DEC); } else { Serial.print(RTC.day, DEC); } Serial.print("-"); if (RTC.month < 10) { Serial.print("0"); Serial.print(RTC.month, DEC); } else { Serial.print(RTC.month, DEC); } Serial.print("-"); Serial.print(RTC.year, DEC); // Yılda herhangi bir değişikliğe gerek yok Serial.print(" "); switch (RTC.dow) // Haftanın günü { case 1: Serial.print("PZT"); break; case 2: Serial.print("SAL"); break; case 3: Serial.print("CAR"); break; case 4: Serial.print("PER"); break; case 5: Serial.print("CUM"); break; case 6: Serial.print("CTS"); break; case 7: Serial.print("PAZ"); break; } Serial.println(); delay(1000); // 1 saniye bekle }
DS1307new kütüphanesinde pek çok fonksiyon bulunmakta. Yukarıdaki örnekte sadece saat ve tarih verilerini ayarlama ve alma fonksiyonlarını kullanılmış. Kütüphanedeki diğer fonksiyonlar hakkındaki bilgilere kütüphane sayfasındaki Wiki bölümünden ulaşabilirsiniz.
İyi çalışmalar…
Kaynaklar:
Gerekli Olabilecek Bağlantılar:
Etiketler: arduino > Arduino Saat > Arduino Tarih > Arduino ve DS1307 > Arduino ve RTC > Arduino Zaman > DS1307 > DS1307new > Gerçek Zaman Saati > Real Time Clock > RTC
devre çalısıyor ama zaman işlemiyor.
Merhaba,
Geç cevap verdiğim için kusura bakmayın. Devreyi breadboarda kurup tekrar denedim sorunsuz çalışıyor. Tam olarak sorunu tarif edebilir misiniz?
ben bu konulara yenıyım bu devreyı lcd de nasıl gostercem serial.print yerıne lcd yazdırma parametresını kullansam olurmu ,ayrıca bu yazdgınız programı kopyala yapıstır yapsam calısırmı??
hangi arduino bordunuz var hangi lcd devresini kullanıyorsunuz. sitedeki projeleri incelediyseniz şurada lcd için kod var http://arduinoturkiye.com/arduino-uno-16×2-lcd-pcm1602b/ .
@Zafer 16×2 LCD yazısının yorumlarında Sıcaklık sensöründen alınan bilginin LCD’de görüntülenmesi ile ilgili kod yazdım. orayı DS1307’den gelen bilgi olarak değiştirirsen istediğin olmuş olur.
Elektronik Tamirci siyim. Çalışma Pano’mda Sabit Kullanabileceğim.
2×16 LCD Gösterge’li Tarih ve Zaman Dilim ini Gösterecek Digital Devre’ye ihtiyacım var.
İstediği Özellik ise.
1. Satırda Gün/Ay/Yıl Zaman Dilimi.
2. Satırda İse Saat/Dkk/Sn Zaman Dilimi
Bu İki Karakter’lerin LCD Ekran ına Ortalanması Talep Ediyorum.
Bu Konu Yardımcı Olabilecek Pic Prog İlgilerinden Dolay Teşekkür lerini Sunuyorum.
Konu İle Alakadar Olup, İrtibat Kurmak İsteyen let E-posta Adres’imden iritbat Kurabilir.
ds1302 devresi gerçekten çok yanlış eski projelerimden bağlantı şemasını veriyim;
http://u1312.hizliresim.com/1j/l/vn3sx.png
kondansatörün 1F olmasına şaşırmayın bu devre için süper kondansatör kullanılmıştır
ersen kubilay bayrak sizin verdiğiniz örnek ds1302 entegresine ait bu yazıdaki ise ds1307 dir. projelerinizde dikkat ve başarılar dilerim…
kodlar çalışıyor fakat saat değeri birkaç dakika geç yazıyor. örneğin 16.6.0 yaptığımda 16.3.0 dan başlatıyor. sebebi öğrenebilir miyim projem için çok gerekli. yardımınız için şimdiden teşekkürler…
şemadaki 10k dirençleri 4,7k ile değiştirip bir denermisiniz. (olmazsa 2.2k yapıp tekrar dene). çok bilinen bir entegre olduğu için internette bir çok yazılmış kod da var onları da pinleri kontrol edip deneyebilirsin mesela http://bildr.org/2011/03/ds1307-arduino/
yukardaki örnekte bu satırda bir hata verdi
Serial.println(“Tarih Saat Formati “SS:DD:ss GG-AA-YYY DDD””);
ama bu şekilde düzeltince çalıştırabildim
Serial.println(“Tarih Saat Formati \”SS:DD:ss GG-AA-YYY DDD\””);
güzel örnek elinize emeğinize sağlık
mrb hocam bu devreye atmega328 i bağlama olasılığımız nedir karttan haricen atmegayı devreye bağlayamayız mı ?
efecim bu sitede gördüğün herşeyi atmega328e bağlama olasılığın yüzde yüzdür yeterki sen iste.
yukarıdaki şemeada
SDA bağlantısını analog 4 pinine,
SCL bağlantısını analog 5 pinine bağlayacaksın. +5v ve gnd leri de bağlayacaksın.
şu sayfadaki 16.resimde atmega328 e nasıl bağlayacağın var
http://arduinoturkiye.com/arduino-temel-baglantilar-arduino-basic-connections/
%100 olasılıkla kolay gelsin.
merhaba bu projenin proteusta çizilmiş örneği varmı? teşekkürler.
iyi günler
ben yol bilgisayarı yapıyorum
belirttiğiniz SQW SDA SCL pinlerine ekran geliyor diğer pinleri kullanamaz mıyım? ve nasıl olur ?
arduino mega kullanıyorum
teşekkürler
şurada connection bölümüne bakın meganın r3 te farklı olabilir ama http://arduino.cc/en/Reference/SPI
Merhaba hocam,
Serial.println(?Tarih Saat Formati ?SS:DD:ss GG-AA-YYY DDD?”);
bu satırda tarih ve saati nasıl tanımlayacağız. Üstteki arkadaşın dediği şekilde de denedim aynı satırda hata verdi.
Şu anki zamanı RTC’ye gömüp otomatik saydırmam gerekiyor.
programın setup bölümünde yazıyor
// Bu kısımdan sketchi yüklemeden önce tarih ve saati ayarlayabilirsiniz.
// Bir kez ayarlayıp yükledikten sonra tekrar tarih saat ayarı yapabilmek
// için entegreye bağlı batarya bağlantısı ve Arduinodan sağladığımız
// 5v enerjiyi kesip bir süre beklemek gerekiyor. Daha sonra programda tarih
// ve saati ayarladıktan sonra yüklediğinizde NV-RAMe ayarladığınız tarih ve
// saat bilgileri kaydedilecektir. İlk satırı (Yıl,Ay,Gün), ikinci satırı
// (Saat,Dakika,Saniye) formatında yazmanız gerekiyor.
RTC.fillByYMD(2011,4,8);//<<<<<<<< buraya tarih gir RTC.fillByHMS(22,7,0);//<<<<<<<<<<<<< buraya saati gir çıktı formatı ise Serial.println(?Tarih Saat Formati \?SS:DD:ss GG-AA-YYY DDD\?");
Hocam tekrar selamlar,
Tarih ve saati arduino aracılığı ile bir LCD’ye yazdırdım verdiğiniz kodlar ile. LCD’deki zamanı nasıl anlık olarak yazdırabilirim ? Kısaca dijital saat gibi olacak fakat saat/dk/saniye saymıyor aynı kalıyor
genel mantık aşağıda ona göre duzenle, loop içindeki kodlar devamlı tekrarlanır. belirli peryotlarla gettime yaparsın sonucu biryerlerde gösterirsin
void loop()
{
RTC.getTime(); // Saat ve Tarih verilerini al
// buraya lcd veya serial monitorde göstermek için gerekli kodları yaz.
delay(1000); // 1 saniye bekle
}
halletim, çok teşekkür ederim. son bir sorum kaldı. değerlerimi lcd’ye yazdım.
sdcard shield’im var.şu şekilde dosyayı oluşturup içini dolduruyor.
File dataFile = SD.open(“data.txt”, FILE_WRITE);
ben data.txt yerine rtc’den çektiğim tarih adıyla dosya oluşturmak istiyorum.denediklerim;
(“now.day()”, FILE_WRITE);
(now.day(), FILE_WRITE);
(‘now.day()’, FILE_WRITE);
olmadı tabiki. nasıl yapabiliriz ?
string dosyaadi = String(now.day());
File dataFile = SD.open(dosyaadi, FILE_WRITE);
Teşekkürler ama olmadı artık başka bir yolla çözmeye çalışacağım.
Başka bir yönteminiz varsa yazarsanız sevinirim.
hata veriyor anlam veremedim derleme hatası…
derleme hatasını buraya koysaydın iyiydi.
şu kodu dene bi http://arduino.cc/en/Tutorial/Datalogger
Merhabalar,Ben arduino kütüphanesine ds1307 indirip koydum açınca derleme hatası veriyor (RTC_DS1307 rtc; (“RTC_DS1307” does not name a type) bu siteden
kopyalayıncada (RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));
“RTC”was not declared in this scope) hatası veriyor bir türlü anlayamadım yardım edebilirmisiniz.
Buyuk kucuk harf yazimina dikkat et.
ben kopyalıyorum Klavye ile elle mi yazmam gerekiyor buyuk kuçuk harf nerde yanlış olabilirki ayrıca bende bazı yerler yazıdaki gibi turuncuya dönmüyor örneğin setRAM
getRAM
stopClock ,fazlasıda var
RTC kutuphanesini de bulup lokal kutuphanelere eklemen gerekiyor birde. şöyle yapılıyor http://arduino.cc/en/Guide/Libraries
Meraba ,RTC devresini çalıştıırınca gerçek zamanlı saat çalışmıyor, programda girilen saatleri çalışıtıyor. ayrıca dirençleri bağlayınca ekran çıktısı almadım . sonrasında direnç değerlerini düşüürp devreyi yeniden kurunca her saniyede aynı çıktııyı aldım. ne yapmam gerekiyor, yardımcı olabilir misininz?
bence rtc bağlantılarınızı kontrol edin, saat calışmıyor bir sorun var,
programın setup kısmındaki değerleri alıyorsunuz sadece, ondan değişmiyor.
rtc nin pilini de takın arduinoıyu kapatıp açtıkça zaman ilerliyormu ilerlemiyorsa veya rastgele şeyler geliyorsa. bağlantınız olmamış demektir.
Merhaba , COM3’te sürekli şu çıktıyı alıyorum
165:165:85 165-165-2165 PZT
165:165:85 165-165-2165 PZT
arduino yu kapatıp açamadan kastınız tam olarak ne? bigisayardan gücünü kesme mi, yoksa reset atma mı. ikisini de yaptım ama yine aynı sorunla karşılaşıyorum.
proje çalışınca zaman gerçek zaman oalrak mı ilerleyecek?
bcd formattan decimal formata dönüşüm olmamış
sizce sorun nerede?
kullandığım kristalden mi kaynaklanıyor acaba?
kristal 32,768 hz lik olmalı,genel bir montaj hatanız var sanırım devrenizi anlayarak tekrardan kurun hatta yazıdaki şekli ile kurun bir çalıştırın sonra kendinize göre değişiklikleri yaparsınız.
cristalimi değiştirdim, hatta devrenin dirençlerini 4 k yaptım . ama sürekli aynı yerde hata oluyor, bcd den decimala çeviri olmuyor ve hep aşağıdaki çıktıyı veriyor.
165:165:85 165-165-2165 PZT
165:165:85 165-165-2165 PZT
yazının altındaki kütüphaneleri arduinoya kopyaladınız mı?
birde şunları
RTC.fillByYMD(2011,4,8);
RTC.fillByHMS(22,7,0);
değiştir bakalım çıkan sonuçda değişecek mi
entegremi değiştirdim, zaman doğru çalıştı. acaba buna buzzer ile alarm ekleyebilir miiyim.
ds1307 de 64byte hafıza var alarm zamanını oraya yaz arduino her açıldığında setup kısmında bu değerleri oku hafızaya al. program içinde kontrol et eşit veya büyük olduğunda buzzer çaldırırsın
İyi günler.Arduino mega ile sıcaklık ölçüm için proje üzerinde uğraşıyorum.Arduıno üzerine daha önceden yazdığım programı silmeye uğraşıyorum fakat silemiyorum.Sıkıntının arduıno programı üzerindeki yardımcı butonlardan sketch>verify/compile seçeneğine yanlışlıkla tıkladığım için olduğunu düşünüyorum.Ama kesin olarak bilmiyorum.Sorunun ne olduğunu anlayamıyorum.Yardımcı olursanız sevinirim.Teşekkür ederim.
iyi günler RTC modülde saat ve tarih verilerini enerji kesilse dahi kalması İçin EEPROM da verileri nasıl saklayabilirim
rtc modüllerde saat pili kullanılabiliyor istenirse, böylece elektrik kesilse bile saat çalışmaya devam eder rtc lerin çoğunda bir kaç byte lık silinebilir hafıza olabiliyor bazılarında ise eprom olabiliyor ds1307 de eprom yok rtc saatlerin epromlarına veya hafızalarına komut yazmak için bir yazma komutu olur hafıza adresi ve hafıza içriği byte olarak kaydedilir. ilgili rtc nin datasheet ine veya kutuphanesine bir bakmanız lazım…
bu devre ardiuno ile çalısmıyo neden
yazıdaki devreyi ve programı kontrol ettik bizde sorun yok tekrar bağlantılarınızı kontrol edin.
Merhaba, ben arduino kullanarak servo motorumun günün belirli saatlerinde rtc kullanarak çalışmasını istiyorum bunu nasıl yapabilirim acaba yardımcı olur musunuz ?
arduinoda bir çalışma planı oluşturacaksın başlama zamanı-bitiş zaman diye daha sonra her saniye değiştiğinde bu planla karşılaştıracasın, plandaki zamanın içine denk geliyorsa ledi yak veya motoru çalıştır.
ilginiz için teşekkür ederim.
merhaba,bu saati alabileceğimiz bir adres varmı.teşekkür ederim.
saygılarımla.
turkiye de şurada içinde fazladan epromlusu var http://www.direnc.net/RTC-MODUL,PR-20355.html yada ebaydan ds1307 diye aratıp dışarıdan gelmesini beklersin(şansın varsa gelir)
tarih ayarlayamıyorum nasıl bi yol izlemem gerek yardım.
#include
#include “RTClib.h”
// include the library code:
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x20,16,2);
/* ——————-
| LCD | Arduino |
——————-
LCD RS pin to digital pin 7 | RS | D7 |
LCD Enable pin to digital pin 6 | E | D6 |
LCD D4 pin to digital pin 5 | D4 | D5 |
LCD D5 pin to digital pin 4 | D5 | D4 |
LCD D6 pin to digital pin 3 | D6 | D3 |
LCD D7 pin to digital pin 2 | D7 | D2 |
LCD R/W pin to ground | R/W | GND |
——————-
*/
RTC_DS1307 RTC;
byte SW0 = A0;
byte SW1 = A1;
byte SW2 = A2;
// use for hexa in zecimal conversion
int zh, uh, ore;
int zm, um, miniti;
//#include // dht11 kütüphanesini ekliyoruz.
//#define DHT11PIN 8// DHT11PIN olarak Dijital 2’yi belirliyoruz.
//dht11 DHT11;
void setup () {
//DHT init
//dht11.begin();
// set up the LCD’s number of columns and rows:
lcd.init();
//lcd.begin(16, 2);
// Print a logo message to the LCD.
lcd.print(“www.tehnic.go.ro”);
lcd.setCursor(0, 1);
lcd.print(“creat de niq_ro”);
delay (1000);
lcd.clear();
// Serial.begin(9600);
Wire.begin();
// part code from http://tronixstuff.wordpress.com/
Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x90); // sends 0x10 (hex) 00010000 (binary) to control register – turns on square wave
Wire.endTransmission();
// end part code from http://tronixstuff.wordpress.com/
RTC.begin();
if (! RTC.isrunning()) {
/// Serial.println(“RTC is NOT running!”);
//following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
pinMode(SW0, INPUT); // for this use a slide switch
pinMode(SW1, INPUT); // N.O. push button switch
pinMode(SW2, INPUT); // N.O. push button switch
digitalWrite(SW0, HIGH); // pull-ups on
digitalWrite(SW1, HIGH);
digitalWrite(SW2, HIGH);
}
void loop () {
DateTime now = RTC.now();
lcd.setCursor(0, 0);
if ( now.hour() < 10)
{
lcd.print(" ");
lcd.print(now.hour(),DEC);
}
else
{
lcd.print(now.hour(),DEC);
}
lcd.print(":");
/////////////////////////////////////////
if ( now.minute() < 10)
{
lcd.print("0");
lcd.print(now.minute(),DEC);
}
else
{
lcd.print(now.minute(),DEC);
}
lcd.print(":");
/////////////////////////////////////////
if ( now.second() < 10)
{
lcd.print("0");
lcd.print(now.second(),DEC);
}
else
{
lcd.print(now.second(),DEC);
}
lcd.print(" ");
lcd.setCursor(0, 1);
if ( now.day() < 10)
{
lcd.print("0");
lcd.print(now.day(), DEC);
}
else
{
lcd.print(now.day(), DEC);
}
lcd.print("/");
if ( now.month() 0 ; i–) {
displayNumber01(ore*100+miniti);
}
*/
lcd.setCursor(4, 0);
if ( ore < 10)
{
lcd.print(" ");
lcd.print(ore);
}
else
{
lcd.print(ore);
}
lcd.print(":");
if ( miniti 9) minutes = minutes + 6;
if (minutes > 0x59) minutes = 0;
Serial.print(“Minutes = “);
if (minutes >= 9)// Serial.print(“0”);
Serial.println(minutes, HEX);
delay(150);
}
while(!digitalRead(SW2)) // set hours
{
hours++;
// converting hexa in zecimal:
zh = hours / 16;
uh = hours – 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes – 16 * zm ;
miniti = 10 * zm + um;
/*
for(int i = 20 ; i >0 ; i–) {
displayNumber01(ore*100+miniti);
}
*/
lcd.setCursor(4, 0);
if ( ore < 10)
{
lcd.print(" ");
lcd.print(ore);
}
else
{
lcd.print(ore);
}
lcd.print(":");
if ( miniti 9) hours = hours + 6;
if (hours > 0x23) hours = 0;
Serial.print(“Hours = “);
if (hours 0 ; i–) {
displayNumber01(ore*100+miniti);
}
// delay(150);
*/
lcd.setCursor(4, 0);
if ( ore < 10)
{
lcd.print(" ");
lcd.print(ore);
}
else
{
lcd.print(ore);
}
lcd.print(":");
if ( miniti < 10)
{
lcd.print("0");
lcd.print(miniti);
}
else
{
lcd.print(miniti);
}
//lcd.print(":");
//lcd.print("00");
}
}
/*void afisare_temperatura()//////////////////////////////////////////////////////////////////////
{
int chk = DHT11.read(DHT11PIN);
lcd.setCursor(0, 1);
//lcd.write(1);
//lcd.setCursor(2, 1);
lcd.print((float)DHT11.temperature, 0);
lcd.setCursor(2, 1);
lcd.print((char)223); //degree sign
lcd.print("C");
lcd.setCursor(5, 1);
//lcd.write(2);
//lcd.setCursor(10, 1);
lcd.print((float)DHT11.humidity, 0);
lcd.print("%");
delay(1000);
}
*/
kodun setup kısmında zaman ayarı için şu satır var
RTC.adjust(DateTime(__DATE__, __TIME__));
kolaylık olsun diye compile ettiğiniz andaki pc deki tarih ve saat bilgisini __DATE__ __TIME__ ile rtc.adjust fonksiyonuna yollamış
rtc.adjust komutunun içine istediğiniz tarih zamanı yazarsan olur. hengi formatta yazılır bılemıycem bıldığım bşr rtc kutuphanesi değil. rtc kutuphanesini yazanın bir linki vardır oraya gidip örneklere bır bakın
kütüphanesini bulamadım.
güzel menülü saat buldum nextbuton döngüsünden takılı kalıyor
bakabilirmisiniz.
//V1 – original release
//V2 – added new setting menu/gui
// added 12/24 hour operation
// changed minimum settable year to 2013
// added feature to quickly reset seconds to ’00’ by pressing the down button
#include
#include
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x20,16,2);
int seconds;
int minutes;
int hours;
int adjHours;
int dayOfWeek;
int dayOfMonth;
int month;
int year;
int nextButton = 2;
int upButton = 3;
int downButton = 4;
int buttonCount = 0; //start at zero starts clock in run mode
bool display12HrMode;
int address = 0;
byte savedMode;
void setup()
{
lcd.init();
pinMode (nextButton, INPUT);
pinMode (upButton, INPUT);
pinMode (downButton, INPUT);
Wire.begin();
//lcd.begin(16, 2);
Serial.begin(9600);
////////////////////////////////
/* force time setting:
seconds = 00;
minutes = 00;
hours = 00;
dayOfWeek = 1;
dayOfMonth = 01;
month = 01;
year = 13;
initChrono();//just set the time once on your RTC
*/
///////////////////////////////
lcd.begin(16, 2); // tells Arduino the LCD dimensions
//L
byte customCharL[8] = {
0b11000,
0b11000,
0b11000,
0b11000,
0b11000,
0b11000,
0b11111,
0b11111
};
//C
byte customCharC[8] = {
0b01111,
0b11111,
0b11000,
0b11000,
0b11000,
0b11000,
0b11111,
0b01111
};
//D
byte customCharD[8] = {
0b11110,
0b11111,
0b11011,
0b11011,
0b11011,
0b11011,
0b11111,
0b11110
};
//O
byte customCharO[8] = {
0b01110,
0b11111,
0b11011,
0b11011,
0b11011,
0b11011,
0b11111,
0b01110
};
//K
byte customCharK[8] = {
0b11011,
0b11011,
0b11110,
0b11100,
0b11100,
0b11110,
0b11011,
0b11011
};
//V
byte customCharV[8] = {
0b00000,
0b00000,
0b11011,
0b11011,
0b11011,
0b11111,
0b01110,
0b00100
};
//2
byte customChar2[8] = {
0b01110,
0b11111,
0b11011,
0b00011,
0b00110,
0b01100,
0b11111,
0b11111
};
//.
byte customCharP[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00110,
0b00110
};
lcd.createChar(0, customCharL);
lcd.createChar(1, customCharC);
lcd.createChar(2, customCharD);
lcd.createChar(3, customCharO);
lcd.createChar(4, customCharK);
lcd.createChar(5, customCharV);
lcd.createChar(6, customChar2);
lcd.createChar(7, customCharP);
lcd.setCursor(0,0);
lcd.print(” “); // print space
lcd.write((uint8_t)0); //L
lcd.write((uint8_t)1); //C
lcd.write((uint8_t)2); //D
lcd.print(” “); // print space
lcd.write((uint8_t)1); //C
lcd.write((uint8_t)0); //L
lcd.write((uint8_t)3); //O
lcd.write((uint8_t)1); //C
lcd.write((uint8_t)4); //K
lcd.print(” “); // print space
lcd.write((uint8_t)5); //V
lcd.write((uint8_t)6); //2
lcd.write((uint8_t)7); //.
lcd.write((uint8_t)3); //0
lcd.setCursor(0,1); //move cursor to start of next line
lcd.print(“Kevin Rye – 2012”);
delay(3000);
lcd.clear(); // clear LCD screen
//read 12/24 hr setting from EEPROM
savedMode = EEPROM.read(address);
if(savedMode == 0) { //0 = 12 hr mode //1 = 24 hr mode
display12HrMode = true; //savedMode value stored in EEPRMOM is 0 , so set clock to display 12 hr mode
Serial.print(“time mode is 12 hr mode”);
}
else {
display12HrMode = false; //savedMode value stored in EEPRMOM is 1 , so set clock to display 24 hr mode
Serial.print(“time mode is 24 hr mode”);
}
}
void loop()
{
//poll the DS3231 for the date and time
get_time();
get_date();
lcd.clear(); // clear LCD screen //do I need this? is this causing the ‘blink’?
lcd.setCursor(0,0);
/////////////////////////////////////////////////////
//display set menus if nextButton is pressed
if (digitalRead(nextButton) == HIGH) {
buttonCount = buttonCount + 1;
if (buttonCount == 7) {
buttonCount = 0;
}
delay(100);
}
/////////////////////////////////////////////////////
if(buttonCount == 0) {
//first line – TIME
if (display12HrMode == false) { //display 24 hour format
//display hours
if(hours < 10) {
lcd.print(" 0");
}
else {
lcd.print(" ");
}
lcd.print(hours);
lcd.print(":");
//display minutes
if(minutes < 10)
{
lcd.print("0");
}
lcd.print(minutes);
lcd.print(":");
//display seconds
if(seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
}
else { //display 12 hour format
//display hours
switch(hours){
case 0:
lcd.print(" 12");
break;
case 1:
lcd.print(" 1");
break;
case 2:
lcd.print(" 2");
break;
case 3:
lcd.print(" 3");
break;
case 4:
lcd.print(" 4");
break;
case 5:
lcd.print(" 5");
break;
case 6:
lcd.print(" 6");
break;
case 7:
lcd.print(" 7");
break;
case 8:
lcd.print(" 8");
break;
case 9:
lcd.print(" 9");
break;
case 10:
lcd.print(" 10");
break;
case 11:
lcd.print(" 11");
break;
case 12:
lcd.print(" 12");
break;
case 13:
lcd.print(" 1");
break;
case 14:
lcd.print(" 2");
break;
case 15:
lcd.print(" 3");
break;
case 16:
lcd.print(" 4");
break;
case 17:
lcd.print(" 5");
break;
case 18:
lcd.print(" 6");
break;
case 19:
lcd.print(" 7");
break;
case 20:
lcd.print(" 8");
break;
case 21:
lcd.print(" 9");
break;
case 22:
lcd.print(" 10");
break;
case 23:
lcd.print(" 11");
break;
}
lcd.print(":");
//display minutes
if(minutes < 10)
{
lcd.print("0");
}
lcd.print(minutes);
lcd.print(":");
//display seconds
if(seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
//display AM/PM
if(hours < 12) {
lcd.print(" AM");
}
else if (hours = 0) {
lcd.print(" AM");
}
else {
lcd.print(" PM");
}
}
////////////////////////////////////////////////////
//second line – date
//display day of week
lcd.setCursor(0, 1);
lcd.print(" ");
switch(dayOfWeek){
case 1:
lcd.print("Sun");
break;
case 2:
lcd.print("Mon");
break;
case 3:
lcd.print("Tue");
break;
case 4:
lcd.print("Wed");
break;
case 5:
lcd.print("Thu");
break;
case 6:
lcd.print("Fri");
break;
case 7:
lcd.print("Sat");
break;
}
lcd.print(" ");
//display month
if(month < 10){
lcd.print("0");
}
lcd.print(month);
lcd.print("/");
if(dayOfMonth < 10) {
lcd.print("0");
}
lcd.print(dayOfMonth);
lcd.print("/");
//display year
if(year < 10){
lcd.print("0");
}
lcd.print(year);
delay(200);
}
//hours
if (buttonCount == 1) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HOURS:");
lcd.setCursor(0,1);
if (display12HrMode == false) { //display 24 hour format
if (hours < 10) {
lcd.print("0");
}
lcd.print(hours);
}
else { //in 12 hr mode
switch(hours){
case 0:
lcd.print("12 AM");
break;
case 1:
lcd.print("1 AM");
break;
case 2:
lcd.print("2 AM");
break;
case 3:
lcd.print("3 AM");
break;
case 4:
lcd.print("4 AM");
break;
case 5:
lcd.print("5 AM");
break;
case 6:
lcd.print("6 AM");
break;
case 7:
lcd.print("7 AM");
break;
case 8:
lcd.print("8 AM");
break;
case 9:
lcd.print("9 AM");
break;
case 10:
lcd.print("10 AM");
break;
case 11:
lcd.print("11 AM");
break;
case 12:
lcd.print("12 PM");
break;
case 13:
lcd.print("1 PM");
break;
case 14:
lcd.print("2 PM");
break;
case 15:
lcd.print("3 PM");
break;
case 16:
lcd.print("4 PM");
break;
case 17:
lcd.print("5 PM");
break;
case 18:
lcd.print("6 PM");
break;
case 19:
lcd.print("7 PM");
break;
case 20:
lcd.print("8 PM");
break;
case 21:
lcd.print("9 PM");
break;
case 22:
lcd.print("10 PM");
break;
case 23:
lcd.print("11 PM");
break;
}
}
delay(200);
}
//mins
if (buttonCount == 2) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MINUTES:");
lcd.setCursor(0,1);
if(minutes < 10) {
lcd.print("0");
}
lcd.print(minutes);
delay(200);
}
//day of week
if (buttonCount == 3) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DAY OF WEEK:");
lcd.setCursor(0,1);
switch(dayOfWeek){
case 1:
lcd.print("Sun");
break;
case 2:
lcd.print("Mon");
break;
case 3:
lcd.print("Tue");
break;
case 4:
lcd.print("Wed");
break;
case 5:
lcd.print("Thu");
break;
case 6:
lcd.print("Fri");
break;
case 7:
lcd.print("Sat");
break;
}
delay(200);
}
//month
if (buttonCount == 4) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MONTH:");
lcd.setCursor(0,1);
if(month < 10) {
lcd.print("0");
}
lcd.print(month);
delay(200);
}
//day of month
if (buttonCount == 5) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DAY OF MONTH:");
lcd.setCursor(0,1);
if(dayOfMonth 23) hours = 0;
//send update to RTC
set_time();
}
//mins
else if ((digitalRead(upButton) == HIGH) && (buttonCount == 2)) {
minutes++;
if (minutes > 59) minutes = 0;
//reset seconds to ‘0’
seconds = 0;
//send update to RTC
set_time();
}
//day of week
else if ((digitalRead(upButton) == HIGH) && (buttonCount == 3)) {
dayOfWeek++;
if(dayOfWeek > 7) dayOfWeek = 1;
//send update to RTC
set_date();
}
//month
else if ((digitalRead(upButton) == HIGH) && (buttonCount == 4)) {
month++;
if (month > 12) month = 1;
//send update to RTC
set_date();
}
//day of month
else if ((digitalRead(upButton) == HIGH) && (buttonCount == 5)) {
dayOfMonth++;
//if feb
if (month == 2) {
if (dayOfMonth > 28) dayOfMonth = 1;
}
//if leap year
//still to do
//if month has 30 days: Apr, Jun, Sep, Nov
if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
if (dayOfMonth > 30) dayOfMonth = 1;
}
//if month has 31 days: Jan, Mar, May, Jul, Aug, Oct, Dec
if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10)) {
if (dayOfMonth > 31) dayOfMonth = 1;
}
//send update to RTC
set_date();
}
//year
else if ((digitalRead(upButton) == HIGH) && (buttonCount == 6)) {
year++;
//send update to RTC
set_date();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//pressing ‘down’ button should decrement field being set
//hours
if ((digitalRead(downButton) == HIGH) && (buttonCount == 1)) {
if (hours == 0) hours = 23;
else if ((hours > 0) && (hours 0) && (minutes <= 59)) minutes–;
//reset seconds to '0'
seconds = 0;
//send update to RTC
set_time();
}
//day of week
else if ((digitalRead(downButton) == HIGH) && (buttonCount == 3)) {
dayOfWeek–;
if(dayOfWeek < 1 ) dayOfWeek = 7;
//send update to RTC
set_date();
}
//month
else if ((digitalRead(downButton) == HIGH) && (buttonCount == 4)) {
month–;
if (month < 1) month = 12;
//send update to RTC
set_date();
}
//day of month
else if ((digitalRead(downButton) == HIGH) && (buttonCount == 5)) {
dayOfMonth–;
//if feb
if (month == 2) {
if (dayOfMonth < 1) dayOfMonth = 28;
}
//if leap year
//still to do
//if month has 30 days: Apr, Jun, Sep, Nov
if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
if (dayOfMonth < 1) dayOfMonth = 30;
}
//if month has 31 days: Jan, Mar, May, Jul, Aug, Oct, Dec
if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10)) {
if (dayOfMonth < 1) dayOfMonth = 31;
}
//send update to RTC
set_date();
}
//year
else if ((digitalRead(downButton) == HIGH) && (buttonCount == 6)) {
year–;
if (year < 13) year = 13;
//send update to RTC
set_date();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//button error handling
if ((digitalRead(upButton) == HIGH) && (digitalRead(downButton) == HIGH) && (buttonCount != 0)) {
lcd.setCursor(0,1);
lcd.print("BOOM! ");
delay(1000);
}
////////////////////////////////////////
//set seconds to '00' shortcut
if ((digitalRead(downButton) == HIGH) && (buttonCount == 0)) {
//reset seconds to '0'
seconds = 0;
//send update to RTC
set_time();
}
//toggle 12/24 mode
if ((digitalRead(upButton) == HIGH) && (buttonCount == 0)) {
//toggle 12/24 mode
display12HrMode = !display12HrMode;
if (display12HrMode == false) {
savedMode = 1; //24 hr mode
//send update to EEPROM for 24 hr mode
EEPROM.write(address, savedMode); //this sets the savedMode in EEPROM to true //24 hr mode
}
else {
savedMode = 0; //12 hr mode
//send update to EEPROM for 12 hour mode
EEPROM.write(address, savedMode); //this sets the savedMode in EEPROM to fasle //12 hr mode
}
}
} //end of loop
/////////////
//DS3231 RTC interface
void initChrono()
{
set_time();
set_date();
}
void set_date()
{
Wire.beginTransmission(104);
Wire.write(3);
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
void get_date()
{
Wire.beginTransmission(104);
Wire.write(3);//set register to 3 (day)
Wire.endTransmission();
Wire.requestFrom(104, 4); //get 5 bytes(day,date,month,year,control);
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}
void set_time()
{
Wire.beginTransmission(104);
Wire.write(0);
Wire.write(decToBcd(seconds));
Wire.write(decToBcd(minutes));
Wire.write(decToBcd(hours));
Wire.endTransmission();
}
void get_time()
{
Wire.beginTransmission(104);
Wire.write(0);//set register to 0
Wire.endTransmission();
Wire.requestFrom(104, 3);//get 3 bytes (seconds,minutes,hours);
seconds = bcdToDec(Wire.read() & 0x7f);
minutes = bcdToDec(Wire.read());
hours = bcdToDec(Wire.read() & 0x3f);
}
///////////////////////////////////////////////////////////////////////
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
meraba ben ünüverstede bı proje yapmam gerekıyo bır quadcopter yapmam lazım ama hoca hazır kart almamızı kabul etmıyo arducoper dıe bır kart var ve ardunio mega2560 tabanlı yardımcı olurmusunuz eger bıtırırsem okulu gecıcem yoksa 1 sene daha uzıcak yardımlarınızı fıkırlerınızı beklıorm
Quadcopter projesini sen mi seçtin hoca mı verdi?
önce quadkopteri yap arduino tabanlı bir kart olsun sonra kartı standart malzemelerle toparlarsın.
meraba devrenin satini ayarladıktan sonra neden bir süre beklememiz gerekiyor. yüklenen yeni saat neden hemen çalışmıyor
yeni saatin yüklenmesinde bekleme dediğiniz sanırım siz arduino kodunu yazdıktan sonra arduinoya attığınızda geçen süreden bahsediyorsunuz. programın içinde çalışırken saat ayarlama mantığı olmadığı için bu ayarlanmış zaman bilgisi programın başlangıcına yazılmış, mecburen bu yöntemle her ayar yapmak istediğinden yeni zaman bilgisini kodun içine atıp compile edip bu kodu arduino atmak için bir zaman harcamak gerekiyor. ama siz isterseniz bu kodu geliştirip 2-3 buton ekleyip saat ayarını program içinden kullanıcıya yaptırabilirsiniz. ayrıca saatin pilini bağlarsanız arduino kapalı bile olsa rtc zamanı ilerletmeye devam eder her açtığınınzda doğru zamanı görürsünüz…
saat ayarını dışarıdan eklediğim butonla birlikte kendim yapmama rağmen 2 dakika bekledikten sonra yeni saat ayarım çalışmaya devam ediyor. o 2 dakikaklık bekleme süresini ortadan kalddıramadım.
yukarıdaki kodda bu kadar zaman geçikmesi yok siz kodunzu buraya kopyalayın kontrol edelim hata nerede
ömer bey, saat konusunda yaptığınız yardımlarla projemde karşılaştığım sorunları büyük ölçüde giderdim. donanım bilginizi bir başka proje için paylaşmanızı rica edeceğim. yine arduino ilgili bir proje; ultrasonik sensör(servo motora bağlıbir şekilde) ortamı tarıyor ve tararken agıladığı engellerin geometrik şeklini ayırt ederek hangi cisim olduğunu anlıyor. mesala bir küpün ve kürenin ne olduğunu biliyor, tarama esnasında buna benzer bir bir cisim görünce o cismin konumunu belirlior. cisimlerin şekillerinin algılanmasını arduionyaya nasıl sağlatırım. bir fikriniz varsa paylaşmanızı rica ederim.
ultrasonıc sensorler genelde cisim tanıma için kullanılmaz, engel tanıma daha uygun. cismin yuzeyini cok yuksek hassasıyetle tarayamadımıgımız ıcın kup ve kureyı pek ayıramayabılırız ama labırent ıcınde dolaşan fare uygulaması yazsanız odanın boşluklarını bulup dolaşan bir şey yapmak daha uygun olur. cisim tanıma ıcın cısmın yuzeyını 5- değişik noktadan ornek alıp bu noktaları bırleştirip fıkır sahıbı olabılırsınız ama bu cısımlerın boyutu buzdolobı kadar fılan olması lazım. kucuk cısımlerı mesela bir elma ıle rubıc kupunu ayıramayabılırsınız. foruma gelin oraya yazın başka bir fikir veren de cıkabılır
aynen quad copterı hoca verdı herseyını hazırladım kasnagı falanda hazır sadece ardunıo ile programlaması kaldı yardımcı olrsanız cok ii olr nası yapacaımnı bılmıorm ve zamanımda azaldı
kart olarakda ardunio mega 2560 ı aldı doru secım yapmısmıyımmotorları falan aldım escleride aldım bırtek ardunioyu programlaması kaldı
bu yazı ds1307 ile alakalı. siz alakasız bir konu ile yazıyı tamamen bozdunuz buraya rtc ile ilgili gelen insanların hakkını yediniz bu bencillikten başka bir şey değil. foruma gelin derdiniz neyse oraya yazın ayıp yaaa. foruma giriş yaptığınızda haber verin buradaki alakasız konuları sileceğim
kusura bakmayın buraya yazmamın sebebı en fazla burdan cevap geldıı ıcın ve en sn son burdan cvp geldıı ıcın foruma yazdım ılgılenen olmadı yardıma ıhtıyacım var ayıp konusuna gelıncede bn burda ahlaksız bı kelımede konusmadım sadece yardım ısdedım burda sızden yardım ısdıyen ınsanları bu şekılde elestırmenız kırıcı doğrusu
merhaba,
http://arduinotehniq.blogspot.com.tr/2014/09/manual-adjust-for-rtc-clock-with.html
linkteki devreyi kurdum. 3 buton kontrollü ds1307 ile kurulmuş bir rtc devresi. Arduino 5V bağlantısını kesip tekrar bağladığımda ayarladığım saat bilgileri kaybolmakta ve her defasında tekrar ayarlamam gerekmekte. Bu sorunu nasıl çözebilirim?
Merhaba, arduinoda zamanlamayla alakalı uğraştığım fakat çözemediğim bir problem var mailden ulaşmanız mümkün mü acaba? şimdiden teşekkür ederim.
foruma gelin sorun yazın herkes orada…
Hocam merhaba bu uygulamayı yaptım sağolun güzel çalışıyor fakat bu rtc den gelen saate göre örneğin saat 10.00-10.20 arasında motor çalışsın diye nasıl yazabiliriz.buradaki saati ifle yazarken rtc den saat 10 diye mi bilgi geliyor yoksa hex olarak mı?sağolun hocam.hayırlı akşamlar
Hocam
RTC.fillByYMD(2011,4,8);
RTC.fillByHMS(22,7,0);
böyle yazınca doğru çalıştı.Ama
RTC.fillByYMD(2015,11,9);
RTC.fillByHMS(18,45,0);
yazınca
165:165:85 165-165-2165 PZT
165:165:85 165-165-2165 PZT diye yazıyor.Sizce sebebi ne olabilir?
yazarımız işlerinin yoğunluğu nedeni ile siteye uğramıyor forumdan sorularınızı sorabilirsiniz…
ıkı tane arduıno ile nrf24l01 modulu ile seri port ekranına yazı aktarmakdım bu aktardım yazıyı seri port ekranın lcd ekranda gözükmeyi beceremedim yardımcı olur musunuz alıcı :
#include
#include
nRF24L01p receiver(7,8);//CSN,CE
void setup(){
delay(150);
Serial.begin(9600);
Serial.println(“RX baglanti saglandi”);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
receiver.channel(90);
receiver.RXaddress(“Artur”);
receiver.init();
}
String message;
void loop(){
if(receiver.available()){
receiver.read();
receiver.rxPL(message);
if(message.length()>0)
{
Serial.println(message);
message=””;
}
}
}
gönderici:
#include
#include
nRF24L01p receiver(7,8);//CSN,CE
void setup(){
delay(150);
Serial.begin(9600);
Serial.println(“RX baglanti saglandi”);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
receiver.channel(90);
receiver.RXaddress(“Artur”);
receiver.init();
}
String message;
void loop(){
if(receiver.available()){
receiver.read();
receiver.rxPL(message);
if(message.length()>0)
{
Serial.println(message);
message=””;
}
}
}
yazının konusu dışında konu açmanın yeri sırası değil. foruma gelirseniz daha hızlı cevap bulabilirsiniz…
Merhabalar,
Devreyi aynen yaptım, library yi de uzun uğraştan sonra halledebildim ve arduino normalde iken kod çalışıyor sadece ds1307 entegresi monte olmadığı için zaman sabit kalıyor.
ds1307 entegresi ni bağlayınca çalışmıyor. A4 ve A5 analog pinlerini niye kullanıyoruz aceba? paylaştığınız code ta böyle pinler set edilmemiş. SQW, SCL ve SDA uçlarını nereye bağlıyacağımı da tam anlayamadım.
Yardımcı olabilir misiniz?
Şimdiden teşekkürler
bu kodu ve devreyi ben daha önce test etmiştim sorun yok çalışmasında. ds1307 zamanı hesaplayarak aklında tutan ve arduino ile iletişim kurup gerçek zaman ve tarihi arduinoya iletmektedr. i2c ptotocolunu kullanmaktadır yazıdaki kutuphane a4 ve a5 pinlerini devreler arasında haberleşme için kullanmaktadır bu pinleri bağlamazsanız zaman bilgisini elde edemezsiniz. bağlantılarınızı kontrol edin rtc devresine 3v pilini bağlayın rtc modulu ile arduino gnd hatları ortak olmalı eksik bir bağlantı olmasın dikkat edin.
Kullandığım LCD 16×4 ekran da aynı protokolü kullanıyor. Yani, A4 ve A5 müsait değil.
Belki MEGA kullanabilirim ama onu da çok istemiyorum.
Bir çözümünüz var mı?
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
gibi bir satır kullanıyorsanız oradaki lcd nin a4 a5 pinlerine denk gelenleri boştaki pinlere kaydırın ve o pinlerin pin nosunu kod a yazın lcd yi o pinlere bağlayın.
Sat ekranı kodlarını kopyaladım fakat derlerken aşağıdaki hataları veriyor yardımcı olurmusunuz lütfen
:In file included from C:\Users\exper\AppData\Local\Temp\arduino_d21688d77ac8679ed08ea48f7cc40f66\sketch_feb21a.ino:2:0:
C:\Users\exper\Documents\arduino-1.6.7\libraries\DS1307new/DS1307new.h:24:22: fatal error: WProgram.h: No such file or directory
#include “WProgram.h”
^
compilation terminated.
yazıyı incelediyseniz kodların altında indirilecek kütüphanelerin linkleri var en yeni tarihli lib dosyaları zip olarak orada var bilgisayarınıza indirin açtıktan sonra arduino kurulum klasörü altında lib klasörü vardır oraya kopyalayın düzelir.
Ömer hocam öncelikle yardımların için teşekürler. kütüphaneleri indirdim lib bölümüne attım bu defa da:
Serial.println(“Tarih Saat Formati “SS:DD:ss GG-AA-YYY DDD””);
hatası verdi.
Serial.println(?Tarih Saat Formati \?SS:DD:ss GG-AA-YYY DDD\?”);
şeklinde değiştirdim yine aynı. yardımcı olursan sevinirim. şimdiden teşekürler.
o kısımlar açıklama bişeler yazın geçin programın çalışmasına etkisi yok
bir de hocam kullandığım saat modülü hazır modül.
TinyRTC I2C DS1307n modülü bu programla çalışır mı?
yuarıda şeması var aldığınız modulun şemeası ile karşılaştırın aynı ise çalışması lazım.
hocam dediklerinizi yaptım kod yüklemedeki hatalar ortadan kalktı fakat modülü bağladığımda yazı çıkmıyor. bağlamadığımda ise sürekli alttaki yazı çıkıyor.
165:165:85 165-165-2165 PZT
ben bu modulu ve kodu denemiştim sorun yaşamadım. bağlantılarınız voltajları tekrar kotrol edin kullandığınız modülün bir linki varsa verin kontrol edelin. foruma gellin yazın daha hızlı olur başka uğraşanlar da var. forumda sorular anında yayınlanıyor, burada bir kaç gun gecikmeli çıkabilir projeniz boşuna zaman kaybetmesin.
http://urun.gittigidiyor.com/ev-elektronigi/arduino-ds1307-rtc-zaman-saat-modulu-pil-dahil-210231671?gclid=CJOvt_aKqcsCFUqeGwodtAwACg&ggmktg=PaidSearch*PLA*232249527*22324001847*58375852887*pla**pla-79002064407&mpch=ads&ggmktg1=PaidSearch*******&scxid=14489-145818-2357-0
hocam bu linkteki ürün.
belittiğiniz urun içinde eprom da var kullanımı farklı olabilir satın aldığınız yere sorun. yazıda sadece ds1307 urunu anlatılıyor diğer kullanımını biz bilmiyoruz denemedik
hocam a4 ve a5 nolu pimleri bağladığım zaman serialde yazı çıkmıyor. bağlantıyı kestiğim zaman ise
165:165:85 165-165-2165 PZT sürekli bu yazıyıçıkartıyor.
kullandığınız bordda eprom da var fraklı adreslerden kullanılıyor olabılır satın aldığınız yere sorun yada iade edin çalışmadığını söyleyip. foruma da gelip sorabilirsiniz elinizdekini denemiş olan olabılır.
elinize uygun borda şurada kodu ile anlatılmış bunu deneyin http://tronixstuff.com/2014/12/01/tutorial-using-ds1307-and-ds3231-real-time-clock-modules-with-arduino/
elinizdeki borddaki ds1307 entegresinin bacaklarını ölçerek tespit edin bordun hangi pinlerine çıkıyorsa o taraftaki pinleri kullanın
Merhaba,ben CR2032 pil yerine 2 adet 1.5V AA pil kullandım bu bir sorun yaratır mı? ve projemde lcd de saat ve tarih şu şekilde çıkıyor ;
saat 165:165:85 , tarih 185/185/21 bunun bir çözümü var mıdır?
Teşekkürler.
cr2032 kullan diğer piller gereksiz. saat modulundeki bağlantıları tekrar kontrol et buyuk ihtimal hatalı bir bağlantı var. yukarıdaki kodu ve bağlantıları şemasından duzgun kontrol ederek bağlarsanır ve kutuphaneleri duzgun kurarsanız çalışmaması için sebep yok.
Hocam merhabalar devreyi kurdum programda da hiç bir sıkıntı yok seri port ekranında sorunsuz çalışıyor yalnız lcd ekranına yazdırma işlemini başaramadım diğer kaynaklardan da yardım aldım fakat ekrana yazdırma işlemi buradaki programla uyumlu olmadığı için düzgün yazdırmıyor örneğin gün isimleri çıkmıyor. Lcd ye yazdıran program varsa buraya atabilir misiniz çok araştırdım fakat bulamadım programlama bilgimde olmadığı için de başaramadım.Teşekkürler
sitede lcd orneği var onları bir deneyin. foruma gelin yazın.
hocam konuyla ilgi değil ama cevaplıya bilecekseniz bir sorum olacak..
kuluçka makinesi yapıyorum tarih saat yazdırmak için DS1302 RTC.zip kutuphanesini indirdim ancak arduıno hata veriyor ne yapmam lazım başka kutuphanede yok
çözebilirseniz sevinirim
aldıgınız hata mesajını da yazsaydınız daha hızlı sonuc alabılırdık.
şuradan faydalanın http://playground.arduino.cc/Main/DS1302RTC
arduino uzerındeki herseyı kaldırın sadece rtc modulu belirtilen pinlere bağlayın ornek programmı yukleyın çalıştırmaya calısın. kutuphaneyı de kurun. sorun cıkarsa foruma gelin…
Hocam saatlerdir uğraşıyorum derleme hatalı
Verdiğiniz kütüphaneler mi eksik acaba birde buna alarm koyabilitmiıiyz
Arduino:1.6.8 (Windows 10), Kart:”Arduino/Genuino Uno”
In file included from D:\Yedek\Documents\Arduino\Ds1307new\Ds1307new.ino:2:0:
D:\Yedek\Documents\Arduino\libraries\DS1307new/DS1307new.h:24:22: fatal error: WProgram.h: No such file or directory
#include “WProgram.h”
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
kullandığın kutuphane eski versiyon arduino.ide ile çalışacak şekilde yazılmış. kutuphanenin içine girip *.h ve *.cpp dosyalrı içinde Wprogram.h yazn yereri Arduino.h olarak değiştirmen lazım. yada aynı kutuphaneien duzeltlmiş olanını bulup yuklersen duzelir.
şurada oyle yazıyor http://forum.arduino.cc/index.php?topic=147680.0
şöyle yazarak buldum https://www.google.com.tr/webhp?sourceid=chrome-instant&rlz=1C1CHZL_trTR687TR687&ion=1&espv=2&ie=UTF-8#q=wprogram.h%20no%20such%20file%20or%20directory
bu devreye alarm nasıl ekleyebilirim
Tarih saat dakika bilgileri belli. bunlari bir if le kontrol edip istedigin seyi surebilirsin. Foruma gel sor yapanlar var…
sevgili arkadaşlar ds1302 ve lcd ekran kullanarak bunu kutulayıp butonlu filan bir saat yapmayı planlıyorum. aşağıdaki koda benzer bir kod ile doğum günleri olduğunda alarm çalan, ekranda gösterip ve kırmızı led yakmasını istiyorum. kod aşağıdaki haliyle çalışıyor.
şunu sormak istiyorum. ekranın bir köşesinde en yakın doğum gününe kalan gün sayısını nasıl yazdırabilirim? (içinde 5 doğum günü olacak.)
if (t.date==30 and t.mon==08)
{
Serial.print(“*** Dogum Gununuz Kutlu Olsun *** “);
}
date time hesaplamaları için bir çok kutuphane bulabilirsiniz.
şuna bakın işe yarar http://jeelabs.org/2010/02/05/new-date-time-rtc-library/
şöyle aradım https://www.google.com.tr/webhp?sourceid=chrome-instant&rlz=1C1CHZL_trTR687TR687&ion=1&espv=2&ie=UTF-8#q=arduino+diff+dates
Teşekkür ederim. iyi günler dilerim.
devre çalışıyor teşekkürler ben gün saydırmak istiyorum hangi yolu izlemem gerekiyor teşekkürler
gün saydırmanın normal yolu datedif komutu kullanmaktı normal standart c de var ama arduinoda göremedim. bu komut iki tarihi birbirinden çıkarıp geçen zamanı verebiliyor. siz zamanı devamlı ölçerken gün ay ve gün değerlerini bir sayısal değer haline getirin ve saklayın geçen her saniye de veya siz kontrol ettikçe sakladığınız değeri kontrol edin. aklıma en kısa yol bu geliyor.
hocam devremiz budur.
kutuphaneyi indirip kodu aynen yapıstırdık.bi iste saati okuma kısmına 2 tane \ ekleyerek düzeltme yaptık.ardunio ve boardda secili eminiz.calıstırıp kodu ardunioya atıyoruz.bi hata vermiyor. ama serial port ekranında hiç bir şey goremiyoruz.void setupta yazanlar bile yazmıyor serial portta.hatamız nerede.devrenin dagınıklıgı ıcın k bakmayın.kısa kabloya sahip degılız malesef.sag olun
https://scontent-amt2-1.xx.fbcdn.net/v/t34.0-12/15226420_1903016773265140_339247713_n.jpg?oh=26319570a56a9b2978546d1f2540d1a4&oe=583C8363
– https://scontent-amt2-1.xx.fbcdn.net/v/t34.0-12/15226471_1903016779931806_1741873449_n.jpg?oh=d295f3d0679deb6487cbec9aba1c9a3e&oe=583C77A5
– https://scontent-amt2-1.xx.fbcdn.net/v/t34.0-12/15240133_1903016769931807_251058395_n.jpg?oh=fe874d33bad9c8a1f63b546152b34097&oe=583C729B
– https://scontent-amt2-1.xx.fbcdn.net/v/t34.0-12/15218464_1903016783265139_500335909_n.jpg?oh=27751ad230d71afef0344649a71b2249&oe=583B8A62
programda sorun yok 2 yorum yukarıda sorunsuz çalıştıran var. arduino duzgun çalışıyordur değilmi yeni bir programda serial.print le birşeyler yollayın ekranda görünüyor mu? ozellıkle tx bacaklarına yanlışlıkla bir kablo bağladıysanız çıkış alamayabilirsiniz.
Hocam kurdugumuz devrede hata yok degil mi ? Biraz acemiyizde boardda kurdugumuz devreyi attim yorumda, baksaniz iyi olur.normalde println ile deger alabiliyprum hoam bugun bile aldkm.
eger devre aaglamsa kablolari kontrol ederim bi
Selamlar hocam biz bu devreyi yapacagızda bize tam net bir bilgi verebilir misiniz
malzemelerin hepsi türkiyede bulunabiliyor malzeme lehimleme montaj işlerini biliyorsanız kolayca yapilabilir. ya malzemeleri tek tek alın yada hazır modul olarak alın farketmez her turlü çalışır. modül olarak alırsanız sade bir şey tercih edin yanında hafıza entegresi olanları tercih etmeyin kafa karıştırmaktan başka bişey değil. foruma da gelin
Hocam iyigünler biz tarih ve saat arduino ile birlikte çalıştıracağız bize bu proje hakında daha geniş bir fotoğraf ve devre şemasını atarsanız çok güzel olur saygılar
yukarıda şema var arduino bağlantısı da var program zaten yazılmış paylaşılmış, çok standart ve bilinen bir uygulama internette arayarak da çok fazla kaynak bulabilirsiniz. yazıyı yazan arkdaşımız işlerinin yoğunluğundan pek ilgilenemiyor, foruma da gelin sorun daha çabuk ilerlersiniz.
Hocam bİz devreyi yaptık ama çalışmadı devre şemamızda yanlışlık var bize tam devre şemasının fotoğrafını atabilirmisiniz
mevcut yazıda en tepesınde gayet açık bir şema var ona göre yapacaksınız yada hazır ds1307 modul alıp google da aratınca arduinoya bağlantısı ıle beraber gelecektır. şu an elimizde yukarıdaki bilgiler dışında başka kaynak yok ama yazıda anlatılanlar ve kod doğru. dıkkatli bir şekilde yapmaya çalışırsanız çalışması lazım. foruma gelın
Hocam şemada lcd ekran nereye bağlanıyor onu çözemedim
bu şemada lcd ekran yok sarıalmonıtore verılerı yollar ama yazının altındaki yorumlarda lcd ile kullanan olmuş orada pinler kodun içinde tanımlı bir dene olmuyorsa foruma gel.
Hocam size kot iye devre şemasını bi atsam kontrol edermisiniz
daha once turkce olarak 6 kez yazdıgım gibi foruma atın link koyun bakan yardımcı olan olacaktır. burada bır onay mekanızması oldugu ıcın vakit kaybetmeyın dıye foruma gelın dıyorum. bireysel kişisel projelere zaten tek tek yetişmemiz yapmamız mumkun değil paylaşırsanız sorunun nerede oldugunu soyleyebılırız bıldıgımız kadar
Arkadaşlar şu 165-165 görünme sorununu hallettim adım adım anlatıyorum
1)RTC nin 5v ve grd bağlantılarını kesiyoruz. haberleşme pinleri bağlı kalacak
2)RTC nin pilini de çıkartıyoruz.
3)arduino programındaki tarih ve saat kısmını ayarlıyoruz.
4)programı arduinoya atıyoruz.
5)burada 145-145 şeklinde sayılar geliyodu bende
6)sonra RTC nin 5v grd ve PİL bağlantılarını bağlıyoruz. pili bağlamayı unutmayın
7) bağlantıları yaptıktan sonra saat ayarı falan 00.00.00 şekline geliyo
8) arduinoya reset attığımızda programa girdiğimiz saat ayarından çalışmaya başlıyo
teşekkürler! gerçekten faydalı oldu.
Hocam elinize emeğinize sağlık çok güzel bir çalışma
dijital saat yapmaya çalışıyorum saat ayarını butonla girmek için ne yapabiliriz teşekürederim.
buton kullanımı ıcın once ekran olarak bırşey kullanıyormusunuz yoksa cıktıyı serıdenmı alıyorsunuz onu bılmek lazım yada herseye uyan bırsey tasarlayacaksınız.
mesela tek butonla bıle olur, butonu 1sn den fazla basınca programlama moduna gırer sonra her bastıgınızda bır dijit seçer son bastıgınızda ıse dıgıtlerı arttırırsınız tekrar uzun basınca son deger kalır ve program modundan cıkar mesela. bu işlerde patron sızsınız bu dunyayı sız oluşturuyorsunuz canınızın ıstedıgı gıbı yaparsınız oyle dusunun. tek yol yok.
öncelikle açıklamanız için teşekürederim hocam lcd 20*4 kullanıyorum buton kontrolünde sıkıntım yok tek girişten 5 butonla kontrol ediyorum test ettim çalışmasında sıkıntı yok hocam yukardaki kodları arduino’ya yükledim (arduino’yu harici için harici güç kaynağı kullandım enerjisini hiç kesmedim) yaklaşık 17 saattir çalışıyor 7 saniye gibi bir zaman kayması var ne den olabilir.
bu tip modullerın sapma oranı biraz fazla olabılır ayda 1 dk cıvarı sapar. krıstalın toleransı hava sıcaklıgı hep etkıler. daha hassar rtc modulleri deneyebılırsınız.
Teşekür ederim Ömer Bey
Merhaba Ömer bey,
Ben bu projeyi deneyip çalıştırdım. Fakat bu projeyi kullanarak Zaman ayarlı otomatik sulama sistemi yapmaya çalıştım ve kodda 3 5 satır ekledim. delay satırının hemen altına şu kodu ekledim:
if ((RTC.hour==18)&&(RTC.minute==43)&&(RTC.second==0))
{digitalWrite(vana, HIGH);
delay(60000);
digitalWrite(vana, LOW);
}
Burada yapmak istediğim şey saat 18:43:00 olduğu zaman vanayı role yardımı ile aç ve 60000 ms sonra vanayı kapat.
Kodu ekledikten sonra program çalıştı fakat sadece bilgisayara bağlı şekilde çalışıyor. Dışardan arduinoyu beslediğim zaman sistem çalışmıyor. Seri port ile çalışabiliyor. Bu neden kaynaklanıyor? Nasıl çözebilirim? Bana yardımcı olursanız memnun olurum.
hangi tip arduino kullanıyorsunuz
gün değişkenini kullanarak günde bir herhangi bir iş yapmak istiyorum. tabi bu arada farklı işlerde yapılıyor olacak nasıl yapabilirim ??
pratikte her saniye RTC zamanı okuyabilirsiniz bunu bir sayaçla biriktirin geçen saniyelerin durmuna göre yapılacak işleri sıralayabilirsiniz.
günde bir kez yapılacak işleri ise işin yapılacağı zamanını bekleyerek yapılacak işleri sıralarsınız.
bir görev zaman listesi oluşturursunuz bu bilgileri epromuna kaydedersiniz her RTC zamanını okudugunuzda bu listeyi tarayıp yapılacak işleri gerçekleştirirsiniz.
hocam kolay gelsin bu kodlari biraz degistirerek kullandim 20×4 i2c lcd’de kullandim lcd’de saat modulu’de ayri ayri calisiyor ancak 20×4 i2c ile beraber kullandigim zaman saati okumuyor yardimci olabilir misiniz:
#include “DHT.h”
#include
#include
#include
//lcd i2c baslatiliyor
LiquidCrystal_I2C_AvrI2C lcd(0x3F,20,4);
//dht ayarlari yapiliyor
#define dhtPin 12
#define DHTTYPE DHT22
DHT dht (dhtPin, DHTTYPE);
//ds1307 ayarlaniyor
uint16_t startAddr = 0x0000;
uint16_t lastAddr;
uint16_t TimeIsSet = 0xaa55;
int saniye, dakika, saat, gun, ay, yil;
char hGunu;
//role pinleri tanimlaniyor
#define isitici 2
#define fan 3
#define isik 4
#define pompa 5
#define nozzle1 6
#define nozzle2 7
#define role7 8
#define role8 9
int role;
//pir pini tanimlaniyor
#define pir 13
//su okuyucu tanimlaniyor
int su;
//sicaklik ve men icin set pinleri tanimlaniyor
int sicaklikPin, nemPin;
int setSicaklik, setNem;
int sonSetNem, sonSetSicaklik;
void setup() {
//haberlesmeler baslatiliyor
Wire.begin();
Serial.begin(9600);
dht.begin();
lcd.begin();
lcd.backlight();
//lcd’de baslangic yazilari yazdiriliyor
lcd.setCursor(0,0);
lcd.print(“Sistem basliyor.”);
lcd.setCursor(0,1);
lcd.print(“xxxx”);
lcd.setCursor(0,2);
lcd.print(“xxxx”);
lcd.setCursor(0,3);
lcd.println(“xxxxa”);
delay(5000);
//saat bilgileri aliniyor
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));
RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
////bu kisim saat ayarlarken aktif edilecek
// if(TimeIsSet != 0xaa55){
// RTC.stopClock();
//
// RTC.fillByYMD(2017,10,28);
// RTC.fillByHMS(18,00,0);
//
// RTC.setTime();
// TimeIsSet = 0xaa55;
// RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));
// RTC.startClock();
// }
// else
// RTC.getTime();
//role cikislari ayarlaniyor
for (int i=2; i < 10; i++){
pinMode(i, OUTPUT);
}
for (int i=2; i < 10; i++){
digitalWrite(i, 1);
}
}
void loop() {
//veriler toplaniyor
//BU KISIM SU OKUYUCU TAKILINCA AKTIF EDILECEK
//su seviyesi okunuyor
// su = analogRead(A0);
//sicaklik ve nem setleri aliniyor
setSicaklik = analogRead(A0);
setSicaklik = map(setSicaklik, 0, 1023, 10, 30);
setNem = analogRead(A1);
setNem = map(setNem, 0, 1023, 60, 95);
//dht
float nem = dht.readHumidity();
float sicaklik = dht.readTemperature();
//ds1307
RTC.getTime();
saniye = (RTC.second, DEC);
dakika = (RTC.minute, DEC);
saat = (RTC.hour, DEC);
gun = (RTC.day, DEC);
ay = (RTC.month, DEC);
yil = (RTC.year);
switch (RTC.dow){
case 0:
hGunu = "PAZAR";
break;
case 1:
hGunu = "PAZARTESI";
break;
case 2:
hGunu = "SALI";
break;
case 3:
hGunu = "CARSAMBA";
break;
case 4:
hGunu = "PERSEMBE";
break;
case 5:
hGunu = "CUMA";
break;
case 6:
hGunu = "CUMARTESI";
break;
}
//lcd isleniyor
if (setSicaklik != sonSetSicaklik || setNem != sonSetNem){
lcd.clear();
lcd.setCursor(0,0); lcd.print("SET: "); lcd.print(setSicaklik); lcd.print("c – SUAN"); lcd.print(sicaklik);
lcd.setCursor(0,1); lcd.print("SET: "); lcd.print(setNem); lcd.print("% – SUAN"); lcd.print(nem);
delay(200);
}
else{
lcd.clear();
lcd.setCursor(0,0); lcd.print("SAAT: "); lcd.print(saat); lcd.print(":"); lcd.print(dakika); lcd.print(":"); lcd.print(saniye);
lcd.setCursor(0,1); lcd.print("TARIH: "); lcd.print(gun); lcd.print("/"); lcd.print(ay); lcd.print("/"); lcd.print(yil);
lcd.setCursor(0,2); lcd.print("T: "); lcd.print(sicaklik); lcd.print("c / "); lcd.print("H: "); lcd.print(nem);
lcd.setCursor(0,3); lcd.print("BU GUN: "); lcd.print(hGunu);
delay(500);
}
//islemler yapiliyor
//BU KISIM NEM KONTROLU ICIN AKTIF EDILECEK
if (nem setNem)
digitalWrite(nozzle1, 1);
//BU KISIM COKLU NEM KONROLU ICIN AKTIF EDILECEK
// if (nem < setNem-10){
// if (saat = 12){
// digitalWrite(nozzle1, 1);
// digitalWrite(nozzle2, 0);
// }
// }
// else if (nem >= setNem){
// digitalWrite(nozzle1, 1);
// digitalWrite(nozzle2, 1);
// }
//BU KISIM ISITICININ SAAT ILE KULLANILMASI ISTENILEN KISIMDA AKTIF EDILECEK
// if ((saat%2) == 0)
// digitalWrite(isitici, 0);
// else
// digitalWrite(isitici, 1);
//BU KISIM FANIN SENSOR ILE KONTOLU ISTENILDIGI ZAMAN AKTIF EDILECEK
if (sicaklik > setSicaklik+10)
digitalWrite(fan, 0);
else if (sicaklik < setSicaklik-2)
digitalWrite(fan, 1);
//BU KISIM ISITICININ SENSOR ILE KONTROLU ISTENILDIGI ZAMAN AKTIF EDILECEK
if (sicaklik setSicaklik+2 )
digitalWrite(isitici, 1);
//BU KISIM ISIK ICIN AKTIF EDILECEK
if (saat > 10 && saat < 19)
digitalWrite(isik, 0);
else
digitalWrite(isik, 1);
//BU KISIM SU KONTROLU ICIN AKTIF EDILECEK
// if (su = 512)
// digitalWrite(pompa, 1);
sonSetSicaklik = setSicaklik;
sonSetNem = setNem;
}
foruma gelin
dediklerinizin aynısını yapmama rağmen karta yüklenirken hata oluştu diye bir uyarı veriyor
bu da uyarı mesajı
Arduino:1.8.5 (Windows 10), Kart:”Arduino/Genuino Uno”
C:\Users\ORDUBI~1\AppData\Local\Temp\arduino_modified_sketch_248642\sketch_jan26a.ino:45:18: warning: character constant too long for its type
Serial.println(‘Tarih Saat Formati””SS:DD:ss GG-AA-YYY DDD’);
^
Çalışmanız programın 5376 bayt (16 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 545 byte kadarını (26%) kullanıyor. Yerel değişkenler için 1503 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
avrdude: ser_open(): can’t open device “\\.\COM3”: Semafor zaman aşımı süresi geçildi.
Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
yardım edermisiniz
hocam bu arada söylemeyi unuttum ilk kodunuzda
Serial.println(“Tarih Saat Formati “SS:DD:ss GG-AA-YYY DDD””);
komutuna da hata veriyor
oncelikle mevcut kodu degısıklık yapmadan yuklemeyı deneyın.
Hocam Merhaba ben breadboard bağlamakta sorun yaşıyorum da
3,4,7,6,5 bacaklarını nasıl bağlıcağımı tam anlamadım
ve bu konuda yeniyim
sqw
scl
sda
Ne oldugu soyler misiniz
elektronıkte akıllı moduller ıle işlemci arasında ıletışim protokolleri vardır. i2c ıletişim protokolunda scl ve sda pinleri bu protokolun parcasıdır. scl module bır clock sınyalı yollamak ıcın kullanılır sda ıse verı yollama ve alma ıcın kullanılır. sqw ıse rtc modulun cıkışıdır 1hz lik kara dakga cıkışı verir. ds1307 datasheetıne ve i2c protokolunu ıncelemenızı onerırım
hocam teşekkürler cevapladığınız için onu nasıl yapcağımı çözdüm de bunu çözemiyorum yukarıda yorumlarda çözülmül ben de olmadı
admin edit: paylaştıgınız resime ulaşılamıyor.
hocam bide diğer sorum ben vusial basic serialport bunu nasıl gostercem
Hocam bu hatayı çözdüm de fazla “” işaret silince düzeliyo
ama şimdide 165 hatası düzelmiyo
arduinonun en güzel yanı adım adım insanın hatalarını gorerek ve araştırarak cozmesını saglaması. bu proje yukarıdaki gosterıldıgı gıbı yapıldıgında sorunsuz çalışıyor biraz daha baglantıları ve kodları ıncelersenız cozecegınıze emınım.
daha once vbasic ıle serıal programlama yapmış olmanız lazım o konuda cok ornek var bıraz araştırsanız daha kolay olacak.
Hocam ben foruma sorcam da nerden sorcağımı bulamıyorum yardımcı olur musunuz
ana sayfanın ustunde menu seçeneklerinde forum linki var