Çözüldü Arduino zamanlayıcı olarak kullanma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

YusufYlmz

Hectopat
Katılım
12 Temmuz 2020
Mesajlar
237
Çözümler
1
Merhaba Arduino Leonardo hakkında birkaç sorum olacak. Öncelikle Arduino'ya bir DC motor takmam gerekiyor ve bu motorun gün içinde 50 dakika çalışıp 10 dakika durması gerekiyor. 24 saat boyunca böyle çalışmalı. Bunu nasıl yapabilirim?

Bir diğer sorum, Arduino'yu zaman ayarlı Switch olarak kullanabilir miyim? Yani tek yapması gereken zamanı geldiğinde düğmeye basacak, sonra bırakacak gibi.
 
Son düzenleme:
Çözüm
Vay be ben de son sınıfım elektrik veya bilgisayar istiyorum, kazanacağız inşallah.

Hayırlısı olsun hocam, inşallah.

Hocam, bu sefer kodu gerçekten hallettim galiba içime de sindi.

Kod'u yüklerken kodda değiştirmeniz gereken yerler var, oraları zaten yorum satırıyla belli ettim nereleri değiştirebilir nereleri değiştiremezsiniz kod üzerinde belirteceğim.

Kod saat 4-23 arası çalışıyor saat 00.00 olduğunda röleyi kapatıyor 4-23 arası boyunca 15dk çalışıp 5dk duracak şekilde yazdım fakat siz çalışma ve bekleme süresini ayarlayabileceksiniz.

Hatta çalışma saat aralığını da galiba ayarlanabilir yapabilirim.

Son düzeltmeleri yapayım kodu paylaşacağım.

C++:
#define ROLE 9 // röle pinini ayarlayabilirsiniz.

boolean role_tipi = 1; // eğer devre tersine çalışıyor ise değeri 0 yapın.

byte saat = 13; // saati ayarlayabilirsiniz (09 değil 9 şeklinde girin)

byte dakika = 7; // dakikayı ayarlayabilirsiniz (06 değil 6 şeklinde girin)

byte saniye; // ayarlamanıza gerek yok.

byte calisma = 15; // xdk çalışma süresi (dakika cinsinden yazınız) [MAKS DEĞER 255]
byte bekleme = 5; //xdk bekleme süresi (dakika cinsinden yazınız) [MAKS DEĞER 255]

byte baslangic = 4; // başlangıç saatini ayarlayabilirsiniz.
byte bitis = 24; // bitiş saatini ayarlayabilirsiniz (gece yarısı için 24 yazın)

long cals = (calisma * 60); // xdk çalışma süresi (dk saniye cinsine çevrilir) otomatik değişir.
long bekl = (bekleme * 60); // xdk bekleme süresi (dk saniye cinsine çevrilir) otomatik değişir.

void watch() // saat kodu burayı değiştirmeyin!
{
 saniye++;
 delay(1000);

 if (saniye == 60)
 {
 dakika++;
 saniye = 0;
 }
 else if (dakika == 60)
 {
 saat++;
 dakika = 0;
 saniye = 0;
 }
 else if (saat == 24)
 {
 saat = 0;
 dakika = 0;
 saniye = 0;
 }
}

void setup()
{
 pinMode(ROLE, OUTPUT);

}

void loop()
{
 watch(); // saatin çalıştığı watch fonksiyonunu çağırıyoruz ve saat işlemeye başlıyor.

 if (saat >= baslangic && saat < bitis) // başlangıç saati gelince çalışp bitiş saatinde durduran bunu yaparken 15dk çalışıp 5dk duran kod.
 {
 for (int a = 0; a < cals; a++)
 {
 digitalWrite(ROLE, role_tipi);
 watch();
 if (!(saat >= baslangic && saat < bitis)) // eğer çalışma saatleri dışındaysa döngüden çık.
 break;
 }

 for (int b = 0; b < bekl; b++)
 {
 digitalWrite(ROLE, !(role_tipi));
 watch();
 if (!(saat >= baslangic && saat < bitis)) // eğer çalışma saatleri dışındaysa döngüden çık.
 break;
 }
 }

 else // çalışma saatleri dışında röleyi kapatan kod.
 {
 digitalWrite(ROLE, !(role_tipi));
 }

}

Hocam, kodun üst tarafında "ayarlayabilirsiniz" yazan yerleri ayarlayabilirsiniz.

Kodu birkaç dk denedim ve düzgünce çalıştı kodu deneyip geri dönüş sağlayın.

Kodu yüklemeden önce saat ve dakikayı ayarlayın saniye kısmını ayarlamanıza gerek yok tavsiyem dakikayı 1dk ileri yapın.
@K.Makise acaba Arduino kartını jack girişinden besleyip, DC motorun bir bağlantısını "vin" pinine diğer bağlantısını bir giriş-çıkış pinine bağlasak dijital pine 0 verip motoru çalıştırabilir miyiz? Gelen akım giriş-çıkış pinine zarar verir diye tahmin ediyorum ama eğer denediyseniz tecrübenizi paylaşırsanız sevinirim.

Tam olarak anlamadım demek istediğinizi fakat bir pine 0 yani Low verdiğinizde o pin gnd olarak davranıyor. Yani iki PIN'i çıkış olarak atayıp birini 1 diğerini 0 yaparsanız motor bir yöne tersini yaparsanız tersi yöne döner.
 
@K.Makise
Arduino.png
Kastettiğim devre buna benziyordu. Karta zarar verebilir gibi görünüyor.
 
@K.Makise Eki Görüntüle 1901816 kastettiğim devre buna benziyordu. Karta zarar verebilir gibi görünüyor.

Sanmıyorum, 9 numaralı pine Logic 0 yani Low verdiğinizde motorun çalışması lazım.

Fakat pek verimli olmayacaktır çünkü Arduino maksimum 200mAh akım verebiliyor zaten bu yüzden motor sürücüler kullanılmakta.

Fakat kargo fiyatları artmış aras 20 küsurdü 43TL olmuş.

İki gün önce burada bahsi geçen 5V 1 kanal röle sipariş verdim 1 tanesi 16TL fakat bana 50 TL'ye maal oluyordu ben de alacaksam birkaç tane alayım verdiğim paraya değsin dedim.
 
Son düzenleme:
Hocam geçte olsa malzemeler tamam. Kod kısmını da YouTube'deki kaynaklardan halledebilirim ancak nasıl besleyebileceğimi tam olarak çözemedim. Bağlantılar konusunda yardımcı olur musunuz?

Hocam geçte olsa malzemeler tamam. Kod kısmını da YouTube'deki kaynaklardan halledebilirim ancak nasıl besleyebileceğimi tam olarak çözemedim. Bağlantılar konusunda yardımcı olur musunuz?

Denemek için röleyi Arduino'ya bağladım, kodu da yazdım, röle sorunsuz çalışıyor ışıkları yanıyor anahtar sesi de geliyor ancak hem LED hem de motor bağlamayı denedim, ikisini de çalıştırmadı. Neden olabilir acaba?

Hocam geçte olsa malzemeler tamam. Kod kısmını da YouTube'deki kaynaklardan halledebilirim ancak nasıl besleyebileceğimi tam olarak çözemedim. Bağlantılar konusunda yardımcı olur musunuz?

Denemek için röleyi Arduino'ya bağladım, kodu da yazdım, röle sorunsuz çalışıyor ışıkları yanıyor anahtar sesi de geliyor ancak hem LED hem de motor bağlamayı denedim, ikisini de çalıştırmadı. Neden olabilir acaba?

Bağlantıları düzgün yapamamışım şu an da çalışıyor. Şimdi kafam da bir iki soru kaldı, kullandığım pil azaldıkça voltajı da az da olsa düşüyor, bunun stabil olmaması devre de herhangi bir şeye zarar verir mi?
Arduino'yu pil ile beslemek için nasıl bir bağlantı yapmam gerekiyor ve dediğim gibi pilin voltajının değişmesi Arduino'ya zarar verir mi?
Sadece bu sistem de Arduino pili aşağı yukarı ne kadar sürede tüketir?
Resmini attığım motor devresinde ki butona röleyi nasıl bağlamam gerekiyor?

Çok soru soruyorum ama sonradan sıkıntı çıkmasını istemiyorum :D
 

Dosya Ekleri

  • WhatsApp Görsel 2023-08-14 saat 23.32.03.jpg
    WhatsApp Görsel 2023-08-14 saat 23.32.03.jpg
    113 KB · Görüntüleme: 34
Son düzenleme:
Hocam geçte olsa malzemeler tamam. Kod kısmını da YouTube'deki kaynaklardan halledebilirim ancak nasıl besleyebileceğimi tam olarak çözemedim. Bağlantılar konusunda yardımcı olur musunuz?

Denemek için röleyi Arduino'ya bağladım, kodu da yazdım, röle sorunsuz çalışıyor ışıkları yanıyor anahtar sesi de geliyor ancak hem LED hem de motor bağlamayı denedim, ikisini de çalıştırmadı. Neden olabilir acaba?

Bağlantıları düzgün yapamamışım şu an da çalışıyor. Şimdi kafam da bir iki soru kaldı, kullandığım pil azaldıkça voltajı da az da olsa düşüyor, bunun stabil olmaması devre de herhangi bir şeye zarar verir mi?
Arduino'yu pil ile beslemek için nasıl bir bağlantı yapmam gerekiyor ve dediğim gibi pilin voltajının değişmesi Arduino'ya zarar verir mi?
Sadece bu sistem de Arduino pili aşağı yukarı ne kadar sürede tüketir?
Resmini attığım motor devresinde ki butona röleyi nasıl bağlamam gerekiyor?

Çok soru soruyorum ama sonradan sıkıntı çıkmasını istemiyorum :D

Öncelikle motorun düğmesine lehim yapmak ile başlayalım.

Motor kartını dikey şekilde tutun ve düğmenin sağ ve sol tarafındaki ikişer pinden birine birer kablo lehimleyin. Bu kabloların biri rölenin COM girişine diğeri ise NO girişine takılacak.

Elinizdeki 18650 pil yaklaşık 4.2v ve 1.2 ila 2'a civarına olmalı. Arduino'nun en düşük voltajı 5V diye biliyorum bu voltajdan aşağısı dengesizliğe sebep olabilir.

Bu projeyi kullanacağınız yerde elektrik var ise bir 5V telefon şarj cihazı ile Arduino'yu besleyebilirsiniz.

Tek bir 18650 pil fazla dayanmayacaktık benim tahminim 1.5-3 saat arası dayanır belki daha fazla da dayanabilir ama bir günü çıkaracağını sanmıyorum.

Motoru yaklaşık ne kadar çalıştırdığını biliyor musunuz?

Ayrıca kod konusunda gerçekten yardımcı olabilirim.

O pilin Arduino üzerindeki gnd pinlerinden birine eksi kısmını, vin pinine de artı kısmını girip bir test de yapabilirsiniz. Sizin için 5dk aralıklar ile röleyi açıp kapayacak bir kod yazabilirim.
 
Son düzenleme:
Öncelikle motorun düğmesine lehim yapmak ile başlayalım.

Motor kartını dikey şekilde tutun ve düğmenin sağ ve sol tarafındaki ikişer pinden birine birer kablo lehimleyin. Bu kabloların biri rölenin COM girişine diğeri ise NO girişine takılacak.

Elinizdeki 18650 pil yaklaşık 4.2v ve 1.2 ila 2'a civarına olmalı. Arduino'nun en düşük voltajı 5V diye biliyorum bu voltajdan aşağısı dengesizliğe sebep olabilir.

Bu projeyi kullanacağınız yerde elektrik var ise bir 5V telefon şarj cihazı ile Arduino'yu besleyebilirsiniz.

Tek bir 18650 pil fazla dayanmayacaktık benim tahminim 1.5-3 saat arası dayanır belki daha fazla da dayanabilir ama bir günü çıkaracağını sanmıyorum.

Motoru yaklaşık ne kadar çalıştırdığını biliyor musunuz?

Ayrıca kod konusunda gerçekten yardımcı olabilirim.

O pilin Arduino üzerindeki gnd pinlerinden birine eksi kısmını, vin pinine de artı kısmını girip bir test de yapabilirsiniz. Sizin için 5dk aralıklar ile röleyi açıp kapayacak bir kod yazabilirim.

Tamamdır lehimi birazdan yapabilirim
Peki Arduino'yu adaptör ile beslesem, motor üzerinde ki motoru çalıştıran pilin Arduino'ya zararı olmaz değil mi? Ya da tam tersi.
Ve o pilin paralel bağlı olanından var bir çift. Resimde ki motoru 1 saat götürüyor, çiftli olanın biraz daha uzun götürmesini umuyorum.
Kodu şu şekil de deneme amaçlı yazdım ve çalıştı

Void setup() {
PinMode(9, OUTPUT);

}

Void loop() {
DigitalWrite(9, HIGH); (Düzelt e basınca otomatik değişti kelimeler)
Delay(9000);
DigitalWrite(9, Low);
Delay(50);

}

Ancak daha komplike işlemlere geçtiğim zaman yardım almam gerekecek muhtemelen :)

Tamamdır lehimi birazdan yapabilirim
Peki Arduino'yu adaptör ile beslesem, motor üzerinde ki motoru çalıştıran pilin Arduino'ya zararı olmaz değil mi? Ya da tam tersi.
Ve o pilin paralel bağlı olanından var bir çift. Resimde ki motoru 1 saat götürüyor, çiftli olanın biraz daha uzun götürmesini umuyorum.
Kodu şu şekil de deneme amaçlı yazdım ve çalıştı

Void setup() {
PinMode(9, OUTPUT);

}

Void loop() {
DigitalWrite(9, HIGH); (Düzelt e basınca otomatik değişti kelimeler)
Delay(9000);
DigitalWrite(9, Low);
Delay(50);

}

Ancak daha komplike işlemlere geçtiğim zaman yardım almam gerekecek muhtemelen :)

Hocam lehimi yaptım ama düğmenin sağ veya sol ucunun hangisinin COM A, hangisinin NO veya NC ye geldiğinin bir önemi var mı?
 

Dosya Ekleri

  • WhatsApp Görsel 2023-08-15 saat 12.53.22.jpg
    WhatsApp Görsel 2023-08-15 saat 12.53.22.jpg
    204,4 KB · Görüntüleme: 101
Son düzenleme:
Tamamdır lehimi birazdan yapabilirim.
Peki Arduino'yu adaptör ile beslesem, motor üzerinde ki motoru çalıştıran pilin Arduino'ya zararı olmaz değil mi? Ya da tam tersi.
Ve o pilin paralel bağlı olanından var bir çift. Resimde ki motoru 1 saat götürüyor, çiftli olanın biraz daha uzun götürmesini umuyorum.
Kodu şu şekil de deneme amaçlı yazdım ve çalıştı.

Void setup() {
Pinmode(9, output);

}

Void loop() {
Digitalwrite(9, hıgh); (düzelt e basınca otomatik değişti kelimeler)
Delay(9000);
Digitalwrite(9, Low);
Delay(50);

}

Ancak daha komplike işlemlere geçtiğim zaman yardım almam gerekecek muhtemelen :)

Hocam lehimi yaptım ama düğmenin sağ veya sol ucunun hangisinin com A, hangisinin no veya nc ye geldiğinin bir önemi var mı?

Hayır com ve no girişine o iki ucu rastgele takabilirsiniz. Ayrıca motorun pili Arduino'ya bağlı değil röleye bağlı yani bir zarar vermez Arduino'ya.
Yazdığınız kod 9 saniye çalışıp 50ms durması için yazılmış kodda sorun yok fakat daha düzenli ileriye dönük yazılabilir.
Örnek bir kod:

C++:
unsigned long calisma = 9000; // Çalışma süresi için bir değişken değeri 9sny.
unsigned long bekleme = 50; // Bekleme süresi için bir değişken değeri 50ms.
#define ROLE 9 // Rölenin takılı olduğu pine ROLE ismini verdik.

void setup()
{

 pinMode(ROLE,OUTPUT); // Röle pinini çıkış olarak ata.

}

void loop()
{
 digitalWrite(ROLE,1); //Röleyi aktif hale getir.
 delay(calisma); // Calisma değişkeni kadar bekle.
 digitalWrite(ROLE,0); // Röleyi pasif hale getir.
 delay(bekleme); // Bekleme değişkeni kadar bekle.

}

Void Setup'un üst tarafındaki değişkenlerin değerini değiştirerek süreyi ve röle pinini ayarlayabilirsiniz.
 
Hayır com ve no girişine o iki ucu rastgele takabilirsiniz. Ayrıca motorun pili Arduino'ya bağlı değil röleye bağlı yani bir zarar vermez Arduino'ya.
Yazdığınız kod 9 saniye çalışıp 50ms durması için yazılmış kodda sorun yok fakat daha düzenli ileriye dönük yazılabilir.
Örnek bir kod:

C++:
unsigned long calisma = 9000; // Çalışma süresi için bir değişken değeri 9sny.
unsigned long bekleme = 50; // Bekleme süresi için bir değişken değeri 50ms.
#define ROLE 9 // Rölenin takılı olduğu pine ROLE ismini verdik.

void setup()
{

 pinMode(ROLE,OUTPUT); // Röle pinini çıkış olarak ata.

}

void loop()
{
 digitalWrite(ROLE,1); //Röleyi aktif hale getir.
 delay(calisma); // Calisma değişkeni kadar bekle.
 digitalWrite(ROLE,0); // Röleyi pasif hale getir.
 delay(bekleme); // Bekleme değişkeni kadar bekle.

}

Void Setup'un üst tarafındaki değişkenlerin değerini değiştirerek süreyi ve röle pinini ayarlayabilirsiniz.

Tamamdır teşekkürler, kodu şimdi girmeyeceğim aklımda bir iki şey var tam netleştiğin de danışacağım size.
 

Technopat Haberler

Yeni konular

Geri
Yukarı