Aynı Butonla 5 Farklı Programı Çalıştırmak ?

Başlatan Acoustica, 07 Mart 2011, 21:38:55

Acoustica

Herkese Hayırlı Akşamlar,

Bir program yazmak istiyorum,ledshow yaptırmak istediğim bir program.
Butona bir kere basılınca A-PROGRAMI çalışsın 2 kere basılınca B-PROGRAMI 3kere basılınca
C-PROGRAMI çalıssın istediğimde neler öğrenmem lazım?
Şöyle söyleyeyim ETE hocamın daha ilk 4 dersine vakıf olabildim,
İF,THEN SİGORTA AYARLARI TOGGLE KOMUTU PULLUP,PULLDOWN mantığı bunları uygulayarak öğrendim.
Bazen çok hızlımı gitmeye çalışıyorum diyorum,hata ediyorda olabilirim.Ama buprogramı kafamda tasarlayabiliyorum.Şimdi
bana birisi kullanacağım komutu anlatıp mnantığı anlatırsa rahatça yazabileceğimi düşünüyorum.
Programda mecburi IF olacak çünkü eğer butona bir kere basılmış  ise diyeceğiz 1nci programa git,
2nci kere basılmış ise 2nci programa git böyle böyle 5e kadar gideceğiz,6ncı defa basınca 1 e gerei döneceğiz birden devam edeceğiz.
Mantığını kurdum ama nasıl yazacağım?
Yada çok mu hızlı gidiyorum,hemen yapayım aman öğreneyim içimde öyle bir arzu var süper olmalı süper yazmalıyım,hırs sevinç değişik analatılacak gibi değil,kendim bişiler yaptıkça daha çok haz alıyorum.Daha bir zevklenip şevkleniyorum.
Umarım kendimi analatbilmişimdir.
Yeni bir mesaja kadar herkese sağlık ve selamet diliyorum.
İyi Çalışmalar
Tufan Han Dağ
Dahilerin yüzde biri hüner, yüzde doksan dokuzu da terdir. "Thomas Edison"  Eski "TufanHan"

Maxim

buton basma işini while - wend döngüsü içinde tanımla
her basmada değer 1 artsın
led showlarınıda if li döngüler içine koy

if 1 ise bıdı bıdı
if 2 ise vıdı vıdı
...
...

ilk açılışta değer 0 olacak
mesela temp ismindeki değerimiz program çalıştı, sıfır
butona bastık 1 oldu
tekrar bastık 2 oldu
3
4
5
buton komutunun sonunada " if temp>5 then 0 "dersen temp değeri başa dönecek

Acoustica

While-wend döngüsünü iyice araştırmam gerekiyor.
Tam anlayamadım ama anlamış gibi yapayım.
While ve wendi okuduktan sonra vakıf olacağımı düşünüyorum.
İzo elektronikte vardı bir araştırayım bakayım.
Yeni mesaja kadar sağlıkve selametle..
Dahilerin yüzde biri hüner, yüzde doksan dokuzu da terdir. "Thomas Edison"  Eski "TufanHan"

Acoustica

Okudum ama anlamadım ...
Örneği tam görsem belki anlarım ama
komutu tam kavrayamadım ...
Dahilerin yüzde biri hüner, yüzde doksan dokuzu da terdir. "Thomas Edison"  Eski "TufanHan"

H@S@N

aynı sorunu bende yaşamıştım ete hoca saolsun çıkış yolunu gösterdi :) hocama sorduğum soru
"s.a arkadaşlar hayırlı çalışmalar dilerim.sizlere bir sorum olucak.kısmetse ılk projemı yapıcam.(ete hocadan ALLAH razı olsun).yapmak istediğim proje lcd ekranlı anımasyon devresi.diyelimki elimde 3 farklı animasyon var.1.animasyon,2.animasyon,3.animasyon diye.kullandığım işlemci 16f84a.malum pin sayısı kısıtlı.şuan tuş için bir adet pin kaldı boşta :)benim yapmak istediğim tus a her bastığımda diğer animasyona geçmesi ve lcd bunun gözlenmesi.bana tus kısmında yardımcı olursanız lcd de gösterme işini halledebilirim."
ete hocanın bana verdiği cevap.
"Hasan,
Önce kolay gelsin diyorum. Yapacağın iş çok zor değil. Önce bir değişken belirle Byte cinsinden olsun. Mesela SIRA diyelim.
Program ilk çalıştırıldığında değeri sıfır olsun (SIRA=0) Bunun için başla satırından evvel SIRA=0 komutunu koy.
Daha sonra tuşa her basılışta SIRA değeri 1 artsın ama animasyon adedini geçmesin. Diyelimki animasyon adedin 3 ve biz sıfır değerinide kullandığımız için SIRA değeri 2'yi aşmamalı. Aştığı zaman yeniden sıfırlanmalı.
Örnek verelim;
IF TUS=0  THEN 'yani tuşa basılmış ise
SIRA=SIRA+1
IF SIRA>2 then SIRA=0
WHILE TUS=0:WEND
ENDIF
Bu işlemden sonra geriye sıra değerine bağlı olarak programı animasyonlara yönlendirmek kalıyor.
SELECT CASE SIRA
CASE 0
Goto Animasyon_Bir
Case 1
Goto Animasyon_Iki
Case 2
Goto Animasyon_Uc
End Select
hepsi bu kadar."
satılık STM32F4-Discovery kit...

Maxim

evet neredeyse programın tamamını vermiş arkadaş

bu da örnek bir proton+ çalışması, neredeyse aynı.


Device 16F628A
Xtal 4

Config BOREN_ON, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT

'PORTA DIJITAL TANIMLI, KOMPARATORLER KAPATILMIŞ OLACAK

Dim Temp As Byte
Temp=0

Loop:

If PORTA.0 = 0 Then
DelayMS 100
Inc Temp
If Temp>5 Then Temp=0
While PORTA.0 = 0 :Wend    'PORTA.0 DA PULL-UP VAR, BUTONUN DİĞER UCU GROUND
EndIf


If Temp=1 Then
'LED SHOW1
EndIf

If Temp=2 Then
'LED SHOW2
EndIf

If Temp=3 Then
'LED SHOW3
EndIf

If Temp=4 Then
'LED SHOW4
EndIf

If Temp=5 Then
'LED SHOW5
EndIf

GoTo Loop