Bağımsız Tuş Sıralaması (Adetli) ?

Başlatan Ser-Er_bilgi_islem, 17 Şubat 2011, 12:02:59

Ser-Er_bilgi_islem

İyi Günler..
Arkadaşlar


Benim PicBasic Konusunda bir yerde takıldım
Acaba Bana Bu Konuda Yardımcı Olabilirmisiniz.
Sıralamayı yapamıyorum.

3 tane buton 1 pedal  bir adet switch miz var


BT1       BT2        BT3      PDL         SW1     

mesela örnek
BT2 ye  1 defa bastık
BT1 e 3 defa bastım 
BT3 e  2 defa bastım
veya tekrardan BT2 3 sefer bastım
bunların sıralaması yok
en fazla her buton için 10 ar adet basabiliriz.
yani ilk önce bt3 e de basabilirim bt2 yede basabilirm
yukarıdaki örneğe göre bana
bu şekilde sıralaması lazım

bt2 bt1 bt1 bt1 bt3 bt3 bt2 bt2 bt2

bu aralara daha sonra sw leriri ilave edilecek.
benim takıldığım yer bu sıralayı nasıl yapabilirim.

veya bu sıralamayı eprom a aynı şekilde sıra ile kaydedip okuyabilirmiyim.

hangi tuşa ve kaç sefer bastıysam o kadar işlem yapacak.




Örnek 2
BT1 e 3 sefer
BT3 e 1 sefer bastıysam;

basla:
pedal
çalış bt1(1) <----- sefer   
sw
dur
pedal
çalış bt1(2) <----- sefer   
sw
dur
pedal bt1(3) <----- sefer   
sw
dur
pedal
calıs bt3(1) <----- sefer   
sw
sw
dur

goto basla
 


Bana bu konuda yardımcı olabilirmisiniz.
İyi Çalışmalar.

Erkan ATAY

eseneren

eeproma yazar okursun, maksadını tam olarak anlamadım bıraz acarsan yardımcı olmak ısterım.
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

Ser-Er_bilgi_islem

kısaca şöyle açıklayayım


BUTONLAR:
BT1 VEYA BT2 VEYA BT3  BAS

İLK ÖNCE HAGİSİNE BASILDI İSE
BUNU GİT EPROM UN 1.ADRESİNE YAZ

TEKRAR BUTONLARA DÖN
İKİNCİ HANGİSİNE BASILDIYSA
BUNUDA EPROM UN 2 ADRESİNE YAZ
DONGU PEDALA BASANA KADAR DEVAM EDECEK

YANİ HANGİ BUTONA BASTIYSAM
ONU EPROMA YAZ

BURADA BUTONLARA NUMARADA VEREBİLİRZ

BT1 İÇİN 1
BT2 İÇİN 2
BT3 İÇİN 3

EPROM ADA

EEPROM [BT1 BT1 BT1 BT2 BT2 BT1 BT3 ]     
GİBİ KAYDEDEBİLİRMİYİZ.

BURAYA HANGİ BUTAONA BASTIYSAM EKLEYECEK

HER SEFERINDE
EPROMA GIT SON ADRESE HANGI BUTONA BASILDIYSA ONU EKLE

BENIM BURADA EPROMA YAZMASI ŞART DEĞİL
BELEĞİNDEDE YAPABİLİR.
EPROMA KAYIT EDERSEM
ELEKTRİKLER KESİLDİĞİNDE TEKRARDAN SON PROGRAMLAMAYI  DEVAM ETTİRMESİ

OKUMA YAPARKENDE
EPROMA GIT
BIRINCI ADRESI OKU
İŞLEMİ YAP
İKİNCİ ADRESİ OKU
İŞLEMİ YAP
ÜÇÜNÇÜYÜ OKU
......
......

İŞLEM BU ŞEKİLDE DEVAM EDECEK...



İLGİLENEN ARKADAŞLARA ŞİMDİDEN TEŞEKKÜRLER...
Erkan ATAY


















ete

Bu kadar kısır bilgi ile ne bu konuda yardım alabilir nede aldığın yardımı değerlendirebilirsin.
Bu işin çözümü önce bir şema hazırlamanda. Daha sonra bir senaryo yaratmanda ve bu bilgiler ışığında alacağın yardımlada işini halletmende.

Açıkladığın kadarı ile işin nasıl yapılacağını sana açıklamıştım ama anlamadığın anlaşılıyor. Yeniden açıklıyorum.
İşin içinde ;
-bir işlem sırası
- bir işlem adedi meselesi var.
O halde bu iki faktöre göre gendine bir algoritma bulman gerekiyor.
Tabiiki belli olmayanlar neler hemen söyleyeyim,
Butonların ne olduğunu anladık. Basılacak butonlar bunlar. Ancak Pedal ve Switch nedir ve işlem sırasındaki yerleri nelerdir.
Çünki verdiğin örnek işlem sırasında önce bir pedal yapıyorsun ardından basılan butona göre ilgili işlem birimine gidiyorsun ve ardından switch yapıyorsun ne anlama geliyorsa ve sonra birde Dur diye bir işlemin var. Bunların neler olduğunu anlatman lazım.
Birde programın neyi ne zamanyapacağını kim belirleyecek oda belli değil.
İşin başında B1 butonuna 3 kere bastım, sonra B2 butonuna 2 kere bastım sonra yeniden B1 butonuna 1 kere bastım.
Bu basma işinin bittiğini ve artık ilemleri yerine getir şeklindeki emri kim nasıl uygulayacak.
Neyse ben yinede sıralama ve işlem adedi işinin nasıl yapılacağını burada bir kez daha açıklıyorum.
İşin içinde bir işlem sırası var dedik. O halde işlem sırasının ne olacağının kayda alınması gerekiyor. Peki nasıl?,
İki yolu var. Her şeyden önce butonlara karşılık gelen işlemleri numaralandırmak gerekiyor. Bt1 işlemler sıra nosu 0, Bt2 işlemleri sıra nosu 1 ve Bt3 işlemleri sıra nosu 3 olsun.
Birinci yolda eepromu kayıt ortamı olarak kullanarak gerek işlem sırasını ve gerekse işlem adedini kayda almak. Bunun için işlem sırası olarak 0-9 nolu adresleri işlem adedtleri olarak ise 10-19 nolu adresleri kullanacağız Nasıl dersen;
Epromun 0 nolu adresi ilk işlem adresidir. Bu adrese ilk basılan tuşun kod numarasını gireceğiz. Diyelimki B2 tusuna bastık.
O halde epromun sıfır nolu adresine 1 bilgisi kayıt edilecek. Pararlel bilgi olarak epromun 10 nolu adresine 1 kere basıldığını gösteren 1 bilgisi de kayıt edilecektir.
İkinci defa B2 tuşuna basılmış ise yapılacak iş yalnızca 10 nolu eprom adresindeki 1 değerini 2 ye çevirmek olacaktır.
BU aşamdan sonra diyelimki B1 tuşuna bastın. Farklı bir tuş (B2 değil) farklı işlem demektir. Ohalde epromun 1 nolu adresine B1 tuşunun kodu olan 0 bilgisi ve 11 nolu eprom adresine de 1 bilgisi yazılacaktır.
Diyelimki şimdi B3 butonuna bastın o halde bir önceki B1 olduğu için farkli işlem demek olup epromun 2 nolu adresine 2 bilgisi ve epromun 12 nolu adresine ise 1 bilgisi yazılacaktır.
Bu işlemler bittikten sonra bir şekilde işlemleri yerine getirme kısmına geçilecek ve orada ;
- 0 nolu eprom adresini oku hangi bilgi var 1 bilgisi var demekki işlem B2 butonuna ait işlem olacaktır. Peki kaç kere icra edilecek ? hemen 10 nolu eprom adresine bakılacak ve oradan alına bilgi adedi kadar B2 buton işlemi yerine getirelecektir.
- SOnra 1 nolu eprom adresi okunacak ve ordaki işlem numarası ile 11 nolu adresteki kadar adetde işlem yapılacaktır.
Bu böyle devam ederek yürüyecek ve sonunda gerekirse 9 nolu eprom adresine kadar yürünecektir.

Bu iş ikinci şekilde dizi değişkenleri kullanılarak yapılabilir. Eprom sisteminin aynısı ancak kayıt ortamı eprom değil deişkenler olacaktır.
Öncelikle bri SIRA[10] şeklinde bir dizi değişkeni tanımlamak gerekir. Bu işlem sırasını belirleyecektir.
İkinci olarak ISLEM[10] şeklinde birde işlem için bir değişken belirlemek gerekiyor.
Şimdi bunun çalışma şeklini senin örneğine göre verelim; Neydi senin örnek;
BT2 ye  1 defa bastık
BT1 e 3 defa bastım
BT3 e  2 defa bastım
O halde değişkenlerin alacağı değerler sırası ile şöyle olacaktır;
SIRA[0]=1  ve ISLEM[0]=1
SIRA[1]=0 ve ISLEM[1]=3
SIRA[2]=2 ve ISLEM[2]=2
SIRA[3]=255 ve ISLEM[3]=255  yani işlem sonu anlamına gelecektir.
Bu sıranın ve işlemlerin yerine getirilme şekli ise ;
FOR I=0 to 9
  TEMP=SIRA[I]
  SELECT CASE TEMP
   CASE 0  'BT1 islemi
       GOSUB BT1_ISLEMI
   CASE 1 
       GOSUB BT2_ISLEMI
    CASE 2
       GOSUB BT3_ISLEMI
    CASE 255   'işlem sonu
      GOTO ATLA
    END SELECT
ATLA   
Next
...
GOTO BASLA

'-------------------------ALT PROGRAMLAR------------
BT1_ISLEMI:
    ADET=ISLEM[I]
    PEDAL
     FOR Z=1 to ADET
        GOSUB CALIS_BT1
     NEXT
    SW
    DUR
   RETURN

BT2_ISLEMI:
    ADET=ISLEM[I]
    PEDAL
     FOR Z=1 to ADET
        GOSUB CALIS_BT2
     NEXT
    SW
    DUR
   RETURN

BT3_ISLEMI:
    ADET=ISLEM[I]
    PEDAL
     FOR Z=1 to ADET
        GOSUB CALIS_BT3
     NEXT
    SW
    DUR
   RETURN


şeklinde kolaylıkla yapılabilir.  Umarım artık anlaşılmıştır.

Ete


Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

eseneren

kendi projeni yapmadan once yapılmıs projeleri inceleyip uygulamak daha mantıklı olabilir....
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

Ser-Er_bilgi_islem

ETE HOCAM YARDIMIN VE AÇIKLAMALARIN İÇİN ÇOK TEŞEKKÜR EDERİM.

SORUNUMUN 1. BÖLÜMÜNÜ AŞAGIDAKİ ÖRNEKTEKİ GİBİ ÇÖZDÜM

Clear  'tüm değişkenler sıfırlandı
LCDOut $FE,1

Pause 100
Clear
EEPROM 0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
SIRA= 0
BASLA:
IF OTO = 0 Then GoTo OTOM

OTOM:
IF SIRA = 10 THEN GOTO SON

IF BT4 = 0 Then
      WHILE BT4= 0
      WEND
      SIRA=SIRA+1
      SEC=1
      WRITE SIRA,SEC
ENDIF
                           
IF BT9 = 0 Then
      WHILE BT9= 0
      WEND
      SIRA=SIRA+1
      SEC=2
      WRITE SIRA,SEC
endIF
       
IF BT8 = 0 Then
      WHILE BT8= 0
      WEND
      SIRA=SIRA+1
      SEC=3
      WRITE SIRA,SEC
ENDIF
   

GOTO OTOM

SON:
LCDOut $FE,$C0,"SON"
GOTO SON


HOCAM BU ŞEKİLDE BENİM İSTETİĞİM GİBİ EEPROMA KAYIT YAPIYOR.
ŞİMDİ KAYITTAN OKUTUP
İŞLEMİ DEVAMINI HALLEDECEM
İLGİNİZE TEŞEKKÜRLER...

Erkan ATAY



Ser-Er_bilgi_islem

HOCAM IKINCI BOLUMUDE  ASAGIDAKI GIBI HALLETTIM
SIMDI ISTEDIGIM KADAR KAYIT YAPIYOR VE OKUYOR
SONUC MUKEMMEL
IYI CALISMALAR

START:

READ 0,KONROL
IF KONROL = 0 THEN GOTO BASLA
LOW Q1 :LOW Q2

FOR I=1 to KA
READ I,SEC[I]
TEMP=SEC[I] 
SELECT CASE TEMP   
CASE 1       
GOSUB BASLA_1   
CASE 2       
GOSUB BASLA_2   
CASE 3       
GOSUB BASLA_3
CASE 0     
GOTO ATLA   
CASE 255     
GOTO ATLA   
END SELECT
ATLA:
Next
GOTO START


Erkan ATAY