7segment tarama yöntemi ile menü olusturma

Başlatan Ömerkaya, 29 Mayıs 2021, 16:59:43

Ömerkaya

#30
Alıntı yapılan: elektro77 - 08 Haziran 2021, 08:14:03Butonlarda hızlı artırma ve azaltma özelliğini bitirdim. Ektedir.
Fakat gerçek devrede nasıl görünür bilemiyorum. Protona uyarlayıp deneme boardında bir dener misin?
Tuşa uzun basılı iken birkaç saniye sonra hızlı artırma veya azaltma başlar

elektro77 devreyi denedim butona basıldıgında 1sn bekleyip hızlı sayıyor
videosu
https://www.youtube.com/watch?v=m6iJxcOhy0A

Ömerkaya

#31
elektro77 sorun bu şekilde çözüldü deneme kartında arttır ve azalt butonları ete hocamın kodları gibi çalışıyor.  :)

;************************MENÜ***********************************************  
AYAR1:
    Sound beep, [115,9]
    GoSub DELAY1 
    EKLE=0 
;************************MENÜ...SAAT ***************************************    
AYAR_BIR:
    If SEC=1 Then 
    GoSub DELAY 
    GoTo AYAR2
    EndIf
    
    
    If ARTIR=1 Then
      DELAYS=150:EKLE=0
       While ARTIR=1
      SAAT=saat+1
     EKLE=EKLE+1:If EKLE=5 Then DELAYS=50      
    EWrite 10,[SAAT]
    If SAAT=24 Then SAAT=1      
     GoSub Gecikme
      GoSub ekran
       Wend             
    EndIf

    If AZALT=1 Then
     DELAYS=150:EKLE=0 
      While AZALT=1   
     SAAT=SAAT-1 
    EWrite 10,[SAAT] 
    If SAAT= 255 Then SAAT=0
     EKLE=EKLE+1:If EKLE=5 Then DELAYS=50 
      GoSub Gecikme
       GoSub ekran 
      Wend
    EndIf  
    GoSub ekran 
    
GoTo AYAR_BIR
ekran:  
    D=24          :GoSub AL :DISPLAY1=SAYI                                                                      
    D=0           :GoSub AL :DISPLAY2=SAYI                                                                                    
    D=SAAT Dig 1  :GoSub AL :DISPLAY3=SAYI                                                                                  
    D=SAAT Dig 0  :GoSub AL :DISPLAY4=SAYI 
    Return 


Gecikme:
For w=0 To DELAYS
  DelayMS 2
  DelayMS 2
Next
Return








elektro77

#32
Eline sağlık.
O zaman geliştirmeye devam galiba.
Sıradaki ne? Saati çalıştırmaya başlamak mı? Bunun için bir kesme daha kullanmak gerekecek.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Ömerkaya

Alıntı yapılan: elektro77 - 09 Haziran 2021, 10:22:03Eline sağlık.
O zaman geliştirmeye devam galiba.
Sıradaki ne? Saati çalıştırmaya başlamak mı? Bunun için bir kesme daha kullanmak gerekecek.

saati çalıştırdım  :) ds1820 ısı senrörüm yok onun gelmesini bekliyorum.   

Ömerkaya

menü + saat  elektro77 menüye girdiğimde saat orta ledleride yanıyor onu nasıl düzeltebiliriz. 

elektro77

Alıntı yapılan: Ömerkaya - 09 Haziran 2021, 22:06:03menü + saat  elektro77 menüye girdiğimde saat orta ledleride yanıyor onu nasıl düzeltebiliriz. 
Protonun hangi versiyonunu kullanıyorsun. Ben derleyemiyorum. Bendeki versiyon "Dig" kodunu kabul etmiyor.
Bendeki versiyon fotoda.
Eğer mümkünse setup ını elektro77@msn.com a gönderebilir misin?

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

D=Dig DAK ,1 :GoSub AL :DISPLAY3=SAYI                                                                                  
D=Dig DAK ,0 :GoSub AL :DISPLAY4=SAYI

SAYI=LookUpL D,

benim versiyonda yukarıdaki gibi yapınca hatalar düzeldi.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

#37
Alıntı yapılan: Ömerkaya - 09 Haziran 2021, 22:06:03menü + saat  elektro77 menüye girdiğimde saat orta ledleride yanıyor onu nasıl düzeltebiliriz. 
Dim LedSondur As Bit
bir bit tanımlayıp
AYAR1:
    Sound beep, [115,9]
    LedSondur =1
    GoSub DELAY1 
    EKLE=0
ayara girince biti aktif et
kayit:
    GoSub DELAY
    Sound beep, [115,9] 
kayit1: 

           
      For I=0 To 300

      SAAT=ERead 10
      DAK=ERead 12
      RELAY1_sayi =ERead 14       
      
    D=25 :GoSub AL :DISPLAY1=SAYI                                                                      
    D=14 :GoSub AL :DISPLAY2=SAYI                                                                                   
    D=12 :GoSub AL :DISPLAY3=SAYI                                                                                  
    D=29 :GoSub AL :DISPLAY4=SAYI
    DelayMS 2
    Next
    Sound beep, [115,9] 
    LedSondur =0
GoTo  BASLA
kayıt işleminden sonra biti pasif et

If SIRA=1 Then
    DIS1=0
    If ZAMAN<500 Then  'orta ledleri yakıp söndüren komutlar
    If LedSondur =1 Then PORTD=DISPLAY2    'orta led kapalı
    If LedSondur =0 Then PORTD=DISPLAY2+1    'orta led  açık
    Else
    PORTD=DISPLAY2    'orta led kapalı
    EndIf 
    DIS2=1
    EndIf

kesmenin içine de yukarıdaki şekilde yaparsan, menüye girdiğinde led sönük kalır.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Ömerkaya

Elektro77 teşekkürler düzeltip dosyayı tekrar yüklerim.

Ömerkaya

Alıntı yapılan: elektro77 - 10 Haziran 2021, 08:31:15Protonun hangi versiyonunu kullanıyorsun. Ben derleyemiyorum. Bendeki versiyon "Dig" kodunu kabul etmiyor.
Bendeki versiyon fotoda.
Eğer mümkünse setup ını elektro77@msn.com a gönderebilir misin?


benim kullandığım programı gönderiyorum.

elektro77

Teşşekür ederim. Baktım da. Lakin benim kullandığım sürüm, positron olmadan önceki son sürüm. Kod blokları biraz farklı ama  sorunsuz kullandığım bir sürüm. Artık sendekine göre uyarlayacağız. Proje senin projen.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Ömerkaya

Alıntı yapılan: elektro77 - 11 Haziran 2021, 08:56:27Teşşekür ederim. Baktım da. Lakin benim kullandığım sürüm, positron olmadan önceki son sürüm. Kod blokları biraz farklı ama  sorunsuz kullandığım bir sürüm. Artık sendekine göre uyarlayacağız. Proje senin projen.
proje herkes için elektro77 :)

Ömerkaya

#42
menü saat ds1302

ds1302 ekledim saat ve dakika ayarı yaptığımda örnek saati 20 dakikayi 29 ayarlıyorum ayarlardan cıktıgımda saat 03 dakika 12 vs oluyor onu düzeltemedim

proteusta ilk açılısta saat ve dakika  doğru ,ayardan sonra saat dakika farklı oluyor.
ds1302 hazır modül kullandım iki adet ikisindede aynı



Ömerkaya

deneme kartında çalışmasından resimler




ete

Saatin ilk açılışta doğru ayardan sonra yanlış olmasının sebebi RTC ye geri yazmada gereken işlemleri eksik yapmandan kaynaklanıyor.

Biliyorsunuz bu RTC kendi içinde saat bilgisini BCD yani binary coded desimal formatında tutuyor. Daha iyi anlamak için aşağıdaki linki okuyabilirsin.

https://etepic.com/index.php/topic,458.0.html

Bu formatta Saat bilgisi (diyelimki saniye bilgisi) iki kısımdan oluşur. Onlar hanesi ve birler hanesi. SN=45 iken Birler hanemiz 5 ve onlar hanemiz 4 rakamıdır.  Bu binary olarak %0100 0101 şeklinde RTC içinde yerleşir. Dikkat edersen Sol taraftaki 4 bit 4 rakamını gösteriyor (%0100) ve sağtaraftaki 4 bit ise (%0101) 5 rakamını göstermektedir. Halbuki 45 rakamının binary karşılığı direk olarak %0010 1101 şeklindedir. Şimdi yapılması gereken şudur. RTC den okuduğumuz bilgiyi kullanılabilir formata çevirmek için İlk 4 biti alırız. Bu birler hanesini verir %0101 bilgisi bize 5 rakamını verecektir. Sonra Soldaki 4 biti alır sağa doğru 4 bit kaydırıp onuda onlar hanesi olarak hesaplarız. (%0100 0101) AND (%11110000)>>4 böylece %0100 sayısını elde ederizki buda 4 rakamıdır. Bu onlar hanesi olacağı için desimale çevirirken 10 ile çarpar ve üzerine birler hanesini ekleriz. Böylece 45 rakamını elde ederiz.
Şimdi elimizde SN=45 bilgisi var iken bunu RTC ye yazmayı nasıl yapacağımızı düşünelim.
Once onlar hanesini çekelim. SN DIG 1 bize 10 lar hanesini vercektir. Bu 4 rakamıdır. Bunu RTC formatına çevirmek için (%0000 0100) <<4 işlemi bize %0100 0000 sonucunu verecektir.
Şimdi birler hanesini çekelim SN DIG 0 işlemi bize %0101 sonucunu verecektir. Bunu ilk düzenlediğimiz sayıya eklersek (%01000000)+(%00000101)=%0100 0101 sonucunu bize verecektir. İşte şimdi bu sayı SN bilgisi olarak RTC ye yazılabilir.
Sen prograda yer almasına rağmen tersçevirme işlemini yapan satırları kapatıp bilgileri direk RTC ye yazdırıyorsunki buda sonucun yanlış çıkmasına sebep oluyor. SOnuç olarak programdaki TERSCEVIR etiketi altındakileri kapatıp RTC ye yazılacak bilgiyi ters çevirecek ve sonra eld ettiğin ters çevcilmiş sayıları RTC ye yazdırmalısın.

Ete

Powered by EzPortal