Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Arduino da devam komutu

Başlatan Epsilon, 13 Mayıs 2019, 21:05:27

Epsilon

Arduino da yeniyim .Yapmak istediğim :

Bir tane LDR var ışık belirli bir seviyede olunca yine arduino programımın devamını  çalıştıracak.
Anlatmak istediğim normalde tutoriallerde LDR ye ışık düşünce LED yakıyorlar,ben programın devam etmesini önceden set ettiğim PWM değerinde bir pinden voltaj çıkartmasını istiyorum bunu nasıl yapabilirim?

Söz konusu program linkteki en alttaki program
https://www.picproje.org/index.php/topic,75399.0.html


Endorfin35+

Merhaba, daha once actigin konuyuda okumustum. Ne yapmak istedigini tam anlayamadim. Kod yazma konusunda biraz pratik yapman gerekli gibi geldi bana. Nacizane tavsiyem basit basit kendi kodlarini yazmaya calis. Serial.print komutu ile degiskenlerini seriport ekranindan gozlemle... kodun hepsini burda bir konua yapistirirsan insanlar inclemekte zorlanirlar yada ugrasmak istemezler mesela benim icin telefon ekrankndan kod yorumlamak sikinti :) en azindan led sayisini dusur. Anlasilirlik icin.

Soruna gelince benim bildigim pause resume gibi bir komut yok arduinoda emin olmak icin arduino sitesindeki komut referanslarini inceleyebilirsin.

Yada programini istedigin isik siddetini elde edene kadar bir while dongusu icinde bekletebilirsin.
"İşi bilen yapar, az bilen akıl verir, bilmeyen eleştirir, yapamayan çamur atar."

Epsilon

Sağolun cevap için.
Arduino da label kullanımı yani GOTO komutu varmış yeni öğrendim.

https://www.arduino.cc/reference/en/language/structure/control-structure/goto/
 

mehmet

GOTO iyi fikirmiş.

void main(void)
{
    basic:
    GOTO basic;
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

muhendisbey

Alıntı YapBir tane LDR var ışık belirli bir seviyede olunca yine arduino programımın devamını  çalıştıracak.

O kadar çok bu işi yapabileceğin komut var ki. Bunlardan bence en kolayı do-while komutu. Dediğin şart olana kadar sonsuz döngüde çalıştırabilirsin.

İkincisi if-else, şart sağlandığında ve sağlanmadığındaki durumları yazabilirsin.
Üçüncüsü switch case. Birden fazla şartın varsa şart olduğunda gerçekleştirmenin en ideal yollarından birisidir.

Kod içerisinde goto komutuyla döngü kırmak, akışı değiştirmek pek sevilen bir durum değildir. Mümkün mertebe az kullanmaya dikkat etmelisiniz.

PWM ise ayrı konu. Kod işlerken PWM üretemez gibi bir durum söz konusu değildir. Bir pinin PWM özelliği mevcutsa onu bir kez ayarladığınızda, kod akışı ne olursa olsun belirlediğiniz duty cycle ve frekansta çıkış vermeye devam eder. Siz değiştirene, kesene, reset atana kadar da bu şekilde çıkış vermeye devam eder.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Epsilon

#5
@mühendisbey  Arduino yu yeni öğreniyorum ancak ilk defa kod yazmıyorum ve o komutlar benim tam olarak işimi görmez sizin verdiğiniz örnekler mesela bir menü seçeneğinde programın 3-4 tuş alternatifinden birini beklerken kullanıbilir.Örneğin zaman ve tarih bilgisi öğrenmek  istediğinizde bir Rtc modülüne Gosub ile gönderip geri getirmek zorundasınız.PWM ile ilgilide herhangi bir sıkıntım bulunmuyor. "Bunu nasıl yapabilirim" den kasdettiğim devam etmesi ile ilgili idi. İlginiz için teşekkürler.

muhendisbey

C++'de bunun çözümü fonksiyon yazmaktır. İstediğiniz herhangi bir yerde fonksiyonu çağırarak belli komutları assembly'deki subroutine gibi çalıştırabilirsiniz.

Örneğin;rtc'yi fonksiyon olarak tanımlayıp, kodun herhangi bir yerinde çağırarak çalıştırabilirsiniz. İsterseniz değer döndürürsünüz, isterseniz döndermezsiniz o da size kalmış.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Tagli

Bu tür pek çok soruda olduğu gibi burada da muhtemelen cevap "State Machine". Bu kavram bilinmediği zaman arkadaşlar işin içinden çıkamıyorlar.
Gökçe Tağlıoğlu

Epsilon

Alıntı yapılan: Tagli - 15 Mayıs 2019, 18:00:38Bu tür pek çok soruda olduğu gibi burada da muhtemelen cevap "State Machine". Bu kavram bilinmediği zaman arkadaşlar işin içinden çıkamıyorlar.

@Tagli hocam benim bu konum için bu konuyu biraz izah edermisiniz?

Amenofis

Bunun için ekstra bişey yapmana gerek yok. loop() fonksiyonu sonsuz döngü içinde çalışıyor. Oraya ne yazarsan tekrar eder.

loop()
{
    if(Butona basıldı ise)
        voltaj değerini ayarla

    if(LDR ışık algıladı ise)
        pwm on
    else
        pwm off
}