ACİL YARDIM..! Ultrasonikleri 5sn geçikmeli çalıştırma

Başlatan fatihsatir, 19 Şubat 2007, 02:55:47

fatihsatir

Merhabalar arkadaşlar. Sizlere hemen sorunumu anlatmak istiyorum ve bu sorunu çözebilmek için yanlızca 3 günüm var. O yüzden arkadaşların biran önce bana yardım etmelerini istiyorum. Sorunum şu benim Parallax firmasının üretmiş olduğu Ping Ultrasonik sensörlerden 3 adet kullanmaktayım. Bu ultrasonicleri yazdığım yazılıma geçikme koymadan çalıştırdığımda hiç bir sorun olmamaktadır. Yani düzgün birşekilde çalışmaktadır. Fakat 5 snlik geçikme koyduğumda ise ya hiç çalışmamakta yada 5 sn daima geçikmeli davranmaktadır. Buarada işlemci olarak basicstamp 2sx kullanmaktayım ve pbasicde yazmaktayım.
Şimdi şöle ifade edeyimki mainden önce "PAUSE 5000" dediğimde ultrasonikler tamamiyle hatalı çalışmaktadır yani zamanlamada sorunları var. Ölçüm yapamamaktadır. Bunun yerini işlemciyi 5 saniye geçiktirecek bir sayma işlemi yaptırdığımızda ise her daim mainin üzerine gitmektedir. Ben programın en başına bi saydırma işlemi yaptırmama rağmen ve programların hepsinde maine göndermeme rağmen yinede ultrosonicleri okuduktan sonra tekrar saymakta ve sonra karar vermektedir. Bu konu üzerine daha önce çalışmış arkadaşların en acil bir şekilde yardım etmelerini rica ediyorum..!


satir_fatih@hotmail.com
Dünya güzelliklerine dalıp ahiret hayatını unutma..!

ete

Anlattıkların yeterli değil. Sorun programda olduğuna göre buraya program örneğini koyman gerekir. Koymaz isen biz havadan nasıl sana yardımcı olalım. Senin yazdıklarına karşı benim şöyle demem gerekir;

Program gecikmesini ylanızca en başa yani ana programın döngü içine girmediği kısma yaz. Böylece ilk çalıştırmada bu gecikme işleme koyulur ve normal çalışma döngüsü içinde bir daha gecikme yaratılmaz. Sen bunu yap.
Muhtemelen sen diyeceksinki bunu yaptıp. Ama diğer taraftan diyorsunki bunu yaptım ama her seferinde gecikme tekrarlanıyor. İşte trik burada. Programda bir hatan var ve sen bunu görmüyorsun. Program olmadığı için bizde görmüyoruz. Sonuçta sorun çözülmemiş oluyor.

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

fatihsatir

Dostum kusura bakma gecenin saat 3:30'uydu... Programı şimdi gönderiyorum

______________________________________
' {$STAMP BS2}
' {$PBASIC 2.5}
' 23.24 ||31.01.07
' sonicmania
'---------------------(pin yerleþimi)-------------------------------------------------
ULTRA1   PIN       13                   'ultrasonic pini          (sol)  yeþil- beyaz
ULTRA2   PIN       12                   '   "        "            (orta) mavi beyaz
ULTRA3   PIN       14                   '   "        "            (sag)  mavi
OUTPUT 7                                'sag ileri motor
OUTPUT 6                                'sag geri motor
OUTPUT 5                                'sol ileri motor
OUTPUT 4                                'sol geri motor
INPUT 1                                 'ön sol     cny
INPUT 2                                 'ön sað     cny
INPUT 0                                 'arka sol   cny
INPUT 15                                'arka sað   cny

' -----[ Program baþlanhýcý]---------------------------------------------------------
' -----[ultrasonic  sabitler ]-------------------------------------------------------
Trigger         CON     5                ' trigger pulse = 10 uS
Scale           CON     $200             ' raw x 2.00 = uS
RawToIn         CON     889              ' 1 / 73.746 (with **)
RawToCm         CON     2257             ' 1 / 29.034 (with **)
IsHigh          CON     1                ' for PULSOUT
IsLow           CON     0
 

' -----[ultrasonic degiskenler ]------------------------------------------------------
rawDist1         VAR     Word
inches1          VAR     Word
cm1              VAR     Word
rawDist2         VAR     Word
inches2          VAR     Word
cm2              VAR     Word
rawDist3         VAR     Word
inches3          VAR     Word
cm3              VAR     Word
 
PAUSE 5000    "Problem ih here........................................"

  main:

    LOW 14                                ' her tarama icin ultrasonicleri önce temizle
    LOW 12
    LOW 13
    GOSUB Get_Sonar1                       ' get sensor value
    inches1 = rawDist1 ** RawToIn         ' inch'e dönüþtür
    cm1 = rawDist1 ** RawToCm
                ' cm'ye dönüþtür
    GOSUB Get_Sonar2
    inches2 = rawDist2 ** RawToIn         ' inch'e dönüþtür
    cm2 = rawDist2 ** RawToCm
    GOSUB Get_Sonar3
    inches3 = rawDist3 ** RawToIn         ' inch'e dönüþtür
    cm3 = rawDist3 ** RawToCm           ' cm'ye dönüþtür      '
   DO
    IF ((cm1>130) & (cm2>130) & (cm3>130)) THEN bul  'hepsi pasif iken , dohyo dýþý
    IF cm1 < (cm2 & cm3) THEN  kara         'ultrasonicler ... sol  yakýnsa
    IF cm2 < (cm1 & cm3) THEN  de                '              ... orta yakýnsa
    IF cm3 < (cm2 & cm1) THEN  niz          '              ... sag yakýnsa
    IF ((cm1=cm2) OR (cm1=cm3) OR (cm2=cm3)) THEN  ileri '...ikisinin esitlik durumu
    IF (IN1=1 OR IN2=1)THEN kesme1       'cnyler ... ön cnyler çizgide ise kesme1
    IF (IN0=1 OR IN15=1)THEN kesme2
     LOOP
     kara:
   DO  WHILE   cm1 <( cm2 & cm3)
    GOTO sag
     GOSUB Get_Sonar1
       GOSUB Get_Sonar2
         GOSUB Get_Sonar3
      LOOP
      GOTO main

   de:
    DO  WHILE   cm2 < (cm1 & cm3)
    GOTO ileri
     GOSUB Get_Sonar1
       GOSUB Get_Sonar2
         GOSUB Get_Sonar3
      LOOP
      GOTO main
   niz:
     DO WHILE  cm3 < (cm2 & cm1)
    GOTO sol
     GOSUB Get_Sonar1
       GOSUB Get_Sonar2
         GOSUB Get_Sonar3
     LOOP
     GOTO main
  bul:
     DO  WHILE   (cm1>130 & cm2>130 & cm3>130)   ' bu durum yokolana kadar saga don
    GOTO sag
     GOSUB Get_Sonar1
       GOSUB Get_Sonar2
         GOSUB Get_Sonar3
      LOOP
      GOTO main
ileri:
   HIGH 5
   HIGH 7                                   'ileri git .....
   LOW  4
   LOW  6
   RETURN
 sag:
    HIGH 7
    LOW 4                                 ' sag ileri motor aktif .....
    LOW 5
    LOW 6
    RETURN
 sol:
    HIGH 5
    LOW 4                                 'sol ileri motor aktif ....
    LOW 6
    LOW 7
    RETURN
kesme1:
IF cm1 <( cm2 & cm3) THEN dal1      ' rakip solda           , on cnyler icin
IF cm3 <( cm2 & cm1) THEN dal2      ' rakip sagda
LOW 5
LOW 7                               ' bu þartlar saglanmýyorsa 1.5sn. geri gel
HIGH 4
HIGH 6
PAUSE 1000
IF (IN1=0 OR IN2=0) THEN
LOW 1
LOW 2
ENDIF
RETURN
kesme2:
IF cm1 <( cm2 & cm3) THEN dal3      ' rakip solda          ,arka cnyler icin
IF cm3 <( cm2 & cm1) THEN dal4      ' rakip sagda
LOW 4
LOW 6                               'bu þartlar saglanmýyorsa 1.5sn. ileri git
HIGH 5
HIGH 7
PAUSE 1000
IF (IN0=0 OR IN15=0) THEN
LOW 0
LOW 15
ENDIF
RETURN
dal1:
LOW 5              '---------------------------sadece sol geri aktif
LOW 6
LOW 7
HIGH 4
PAUSE 1000
RETURN
dal2:
LOW 4              '---------------------------sadece sag geri aktif
LOW 5
LOW 7
HIGH 6
PAUSE 1000
RETURN
dal3:
LOW 4
LOW 6              '---------------------------sadece sol ileri aktif
LOW 7
HIGH 5
PAUSE 1000
RETURN
dal4:
LOW 4
LOW 5
LOW 6              '----------------------------sadece  sag ileri aktif
HIGH 7
PAUSE 1000
RETURN
Get_Sonar1:                                    ' make trigger 0-1-0
  ULTRA1 = IsLow
  PULSOUT ULTRA1, Trigger                     ' sensörü aktifle
  PULSIN  ULTRA1, IsHigh, rawDist1            ' measure echo pulse
  rawDist1 = rawDist1 */ Scale                ' convert to uS
  rawDist1 = rawDist1 / 2
   RETURN                                     ' remove return trip
    Get_Sonar2:
    ULTRA2 = Islow
  PULSOUT ULTRA2, Trigger                     ' sensörü aktifle
  PULSIN  ULTRA2, IsHigh, rawDist2            ' measure echo pulse
  rawDist2 = rawDist2 */ Scale                ' convert to uS
  rawDist2 = rawDist2 / 2
  RETURN                 ' remove return trip
   Get_Sonar3:
   ULTRA3 = IsLow
  PULSOUT ULTRA3, Trigger                     ' sensörü aktifle
  PULSIN  ULTRA3, IsHigh, rawDist3            ' measure echo pulse
  rawDist3 = rawDist3 */ Scale                ' convert to uS
  rawDist3 = rawDist3 / 2
RETURN
  END

_______________________________________________
Programda başa döneceği yer bulunmuyor gibi geliyor bana... Dalgalanmadanda şüphelendim ve bir kaç kondansatör attım ama fayda etmedi. Birkezde sen bakıp yardımcı olursan sevinirim.
Dünya güzelliklerine dalıp ahiret hayatını unutma..!

SENAY

işlemcin motorlardan dolayı reset alıyor olabilir. mainden önce bir butonu okutupta çalışmaya ondan sonra başlatırsanişlemcinin reset alıp almadığını kolayca anlayabilirsin. Büyük ihtimalle motorlardan dolayı işlemcin reset alıyor

SENAY

programının da şu kısımlarında soruun olabilir
Alıntı Yap
IF cm3 <( cm2 & cm1) THEN dal2

dal2:
LOW 4              '---------------------------sadece sag geri aktif
LOW 5
LOW 7
HIGH 6
PAUSE 1000
RETURN
"then"den sonra direk dal2 yazmışsın bunun gosub dal2 demen gerekir.
goto ile gönderdiğin yerden return ile geri dönüyorsun???  
Bide buna bak istersen
Alıntı Yap
IF ((cm1>130) & (cm2>130) & (cm3>130)) THEN bul
bul:
    DO  WHILE   (cm1>130 & cm2>130 & cm3>130)   ' bu durum yokolana kadar saga don
   GOTO sag
    GOSUB Get_Sonar1
      GOSUB Get_Sonar2
        GOSUB Get_Sonar3
     LOOP
     GOTO main

fatihsatir

Arkadaşlar yardımlarınız için çok teşekkür ediyorum. Fakat sorunu çözmüş durumdayım ve sizlerlede paylaşmak isiyorum. Sorun motorların çektiği akımlardan dolayı resetlenmesi değildi. Sorun programın içinde bir yerlerde en başa dönemesiydi ve daima en başta bulunan "pause 5000" bini okumasıydı.  

Senay, bu aada yazdığımız dil parallaxın kendisinin ürettiği ve basicstampler için kullanılan bir dil. C ve basice çok benziyor fakat ayırt edici yanları var. Mesela "THEN DAL" denmesi yeterli oluyor.

Arkadaşlar sorunu şu şekilde hallettim, ilk önce düşündümki eğerki mainin üzerindeki pause 5000'in bir kez okutmam gereklidir yani source code'nin en başınadöndüğünde bu programı otomatik olarak main'e tekrar geri gönderelim Bu sebepten dolayı...

' {$STAMP BS2} 
' {$PBASIC 2.5} 
' 23.24 ||31.01.07 
' sonicmania 
'---------------------(pin yerleþimi)------------------------------------------------- 
[b]IF k<2 THEN main[/b]      [b]'ikinici gelişinde gönderecek'[/b]
ULTRA1   PIN       13                   'ultrasonic pini          (sol)  yeþil- beyaz 
ULTRA2   PIN       12                   '   "        "            (orta) mavi beyaz 
ULTRA3   PIN       14                   '   "        "            (sag)  mavi 
OUTPUT 7                                'sag ileri motor 
OUTPUT 6                                'sag geri motor 
OUTPUT 5                                'sol ileri motor 
OUTPUT 4                                'sol geri motor 
INPUT 1                                 'ön sol     cny 
INPUT 2                                 'ön sað     cny 
INPUT 0                                 'arka sol   cny 
INPUT 15                                'arka sað   cny 

' -----[ Program baþlanhýcý]--------------------------------------------------------- 
' -----[ultrasonic  sabitler ]------------------------------------------------------- 
Trigger         CON     5                ' trigger pulse = 10 uS 
Scale           CON     $200             ' raw x 2.00 = uS 
RawToIn         CON     889              ' 1 / 73.746 (with **) 
RawToCm         CON     2257             ' 1 / 29.034 (with **) 
IsHigh          CON     1                ' for PULSOUT 
IsLow           CON     0 
  

' -----[ultrasonic degiskenler ]------------------------------------------------------ 
rawDist1         VAR     Word 
inches1          VAR     Word 
cm1              VAR     Word 
rawDist2         VAR     Word 
inches2          VAR     Word 
cm2              VAR     Word 
rawDist3         VAR     Word 
inches3          VAR     Word 
cm3              VAR     Word
k var vord
k=0 
  
PAUSE 5000    [b]'Bir sefer görecek![/b]

  main: 
   IF k=0 then k=k+1 [b]'OLAYI BİTİREN YER[/b]
    LOW 14                                ' her tarama icin ultrasonicleri önce temizle 
    LOW 12 
    LOW 13 
    GOSUB Get_Sonar1                       ' get sensor value 
    inches1 = rawDist1 ** RawToIn         ' inch'e dönüþtür 
    cm1 = rawDist1 ** RawToCm 
                ' cm'ye dönüþtür 
    GOSUB Get_Sonar2 
    inches2 = rawDist2 ** RawToIn         ' inch'e dönüþtür 
    cm2 = rawDist2 ** RawToCm 
    GOSUB Get_Sonar3 
    inches3 = rawDist3 ** RawToIn         ' inch'e dönüþtür 
    cm3 = rawDist3 ** RawToCm           ' cm'ye dönüþtür      ' 
   DO 
    IF ((cm1>130) & (cm2>130) & (cm3>130)) THEN bul  'hepsi pasif iken , dohyo dýþý 
    IF cm1 < (cm2 & cm3) THEN  kara         'ultrasonicler ... sol  yakýnsa 
    IF cm2 < (cm1 & cm3) THEN  de                '              ... orta yakýnsa 
    IF cm3 < (cm2 & cm1) THEN  niz          '              ... sag yakýnsa 
    IF ((cm1=cm2) OR (cm1=cm3) OR (cm2=cm3)) THEN  ileri '...ikisinin esitlik durumu 
    IF (IN1=1 OR IN2=1)THEN kesme1       'cnyler ... ön cnyler çizgide ise kesme1 
    IF (IN0=1 OR IN15=1)THEN kesme2 
     LOOP 
     kara: 
   DO  WHILE   cm1 <( cm2 & cm3) 
    GOTO sag 
     GOSUB Get_Sonar1 
       GOSUB Get_Sonar2 
         GOSUB Get_Sonar3 
      LOOP 
      GOTO main 

   de: 
    DO  WHILE   cm2 < (cm1 & cm3) 
    GOTO ileri 
     GOSUB Get_Sonar1 
       GOSUB Get_Sonar2 
         GOSUB Get_Sonar3 
      LOOP 
      GOTO main 
   niz: 
     DO WHILE  cm3 < (cm2 & cm1) 
    GOTO sol 
     GOSUB Get_Sonar1 
       GOSUB Get_Sonar2 
         GOSUB Get_Sonar3 
     LOOP 
     GOTO main 
  bul: 
     DO  WHILE   (cm1>130 & cm2>130 & cm3>130)   ' bu durum yokolana kadar saga don 
    GOTO sag 
     GOSUB Get_Sonar1 
       GOSUB Get_Sonar2 
         GOSUB Get_Sonar3 
      LOOP 
      GOTO main 
ileri: 
   HIGH 5 
   HIGH 7                                   'ileri git ..... 
   LOW  4 
   LOW  6 
   RETURN 
 sag: 
    HIGH 7 
    LOW 4                                 ' sag ileri motor aktif ..... 
    LOW 5 
    LOW 6 
    RETURN 
 sol: 
    HIGH 5 
    LOW 4                                 'sol ileri motor aktif .... 
    LOW 6 
    LOW 7 
    RETURN 
kesme1: 
IF cm1 <( cm2 & cm3) THEN dal1      ' rakip solda           , on cnyler icin 
IF cm3 <( cm2 & cm1) THEN dal2      ' rakip sagda 
LOW 5 
LOW 7                               ' bu þartlar saglanmýyorsa 1.5sn. geri gel 
HIGH 4 
HIGH 6 
PAUSE 1000 
IF (IN1=0 OR IN2=0) THEN 
LOW 1 
LOW 2 
ENDIF 
RETURN 
kesme2: 
IF cm1 <( cm2 & cm3) THEN dal3      ' rakip solda          ,arka cnyler icin 
IF cm3 <( cm2 & cm1) THEN dal4      ' rakip sagda 
LOW 4 
LOW 6                               'bu þartlar saglanmýyorsa 1.5sn. ileri git 
HIGH 5 
HIGH 7 
PAUSE 1000 
IF (IN0=0 OR IN15=0) THEN 
LOW 0 
LOW 15 
ENDIF 
RETURN 
dal1: 
LOW 5              '---------------------------sadece sol geri aktif 
LOW 6 
LOW 7 
HIGH 4 
PAUSE 1000 
RETURN 
dal2: 
LOW 4              '---------------------------sadece sag geri aktif 
LOW 5 
LOW 7 
HIGH 6 
PAUSE 1000 
RETURN 
dal3: 
LOW 4 
LOW 6              '---------------------------sadece sol ileri aktif 
LOW 7 
HIGH 5 
PAUSE 1000 
RETURN 
dal4: 
LOW 4 
LOW 5 
LOW 6              '----------------------------sadece  sag ileri aktif 
HIGH 7 
PAUSE 1000 
RETURN 
Get_Sonar1:                                    ' make trigger 0-1-0 
  ULTRA1 = IsLow 
  PULSOUT ULTRA1, Trigger                     ' sensörü aktifle 
  PULSIN  ULTRA1, IsHigh, rawDist1            ' measure echo pulse 
  rawDist1 = rawDist1 */ Scale                ' convert to uS 
  rawDist1 = rawDist1 / 2 
   RETURN                                     ' remove return trip 
    Get_Sonar2: 
    ULTRA2 = Islow 
  PULSOUT ULTRA2, Trigger                     ' sensörü aktifle 
  PULSIN  ULTRA2, IsHigh, rawDist2            ' measure echo pulse 
  rawDist2 = rawDist2 */ Scale                ' convert to uS 
  rawDist2 = rawDist2 / 2 
  RETURN                 ' remove return trip 
   Get_Sonar3: 
   ULTRA3 = IsLow 
  PULSOUT ULTRA3, Trigger                     ' sensörü aktifle 
  PULSIN  ULTRA3, IsHigh, rawDist3            ' measure echo pulse 
  rawDist3 = rawDist3 */ Scale                ' convert to uS 
  rawDist3 = rawDist3 / 2 
RETURN 
  END



Çok saçma bi algoritma.... En başa neden dönüyor çözemedim ama k değişkeni sıfırlanmıyor. Yani reset atmıyor işlemci..
Dünya güzelliklerine dalıp ahiret hayatını unutma..!

SpeedyX

IF k<2 THEN main 'ikinici gelişinde gönderecek'
k değişkenini tanımlamadan kontrol ediyorsun,

k var vord
k=0
Bu şekilde bir tanımlama çalışmaz bence, vord değil word olması gerekiyor.

IF k=0 then k=k+1 'OLAYI BİTİREN YER
k, sıfıra eşitse bir fazlasıda 1 e eşit olacaktır zaten.

Bunun bu mantıkla çalışıyor olması imkansızı başarmış olduğunuzu gösteriyor :)

(Ayrıca kod verirken forumun code taglarını kullanalım, güzel görünsün)

SENAY

Alıntı yapılan: "fatihsatir"Senay, bu aada yazdığımız dil parallaxın kendisinin ürettiği ve basicstampler için kullanılan bir dil. C ve basice çok benziyor fakat ayırt edici yanları var. Mesela "THEN DAL" denmesi yeterli oluyor.
Benim bahsettiğim de pbasic zaten. Peki bu derleyici nasıl anlıyor etiketemi gitti yoksa alt programamı gittiğini. Bu ikisinin arasında bir fark olmalı. Then'den sonra etiket kullanıldığı zaman alt programa gönderiliyormu iyice kontrol et derim.Gosub çalıştırdığında adres yığına itilir ama goto da itilmez. Sen alt programa, adresi yığına atmadan gönderirsen yığından "0" adres bilgisini çekersin ve işlemcin 0. adresten tekrar yeniden çalışmaya başlar tıpkı reset almış gibi sadece kaydedicilerinin içeriği değişmez.

SENAY

'{$STAMP BS2pe}
'{$PBASIC 2.5}
' (c) 2003 Tracy Allen, http://www.emesystems.com
' explores the PBASIC 2.5 commands 
' IF - THEN - GOSUB
' and
' IF - THEN - ELSE - ELSEIF - ENDIF
' both single line and multiline variations
' all of these are very consistent passthrough schemes
' 
' to use this program as a study guide,
' Enter alternative program cases after #DEFINE below
' then look at tokens using CTRL-M memory map window
' Scroll to the bottom of the window to the red area.


#DEFINE example=10

'  10  IF - THEN - ELSE on single line
'  11  same tokens as 20, multiline with ENDIF
'  12  same tokens as 20 and 21, written in old PBASIC using more labels

'  20  like 20, but include the ELSEIF instruction
'  21  same tokens as 30, but using IF and GOTO in old PBASIC

'  30  IF - THEN - GOSUB
'  31  same tokens as 10, but using GOTOs and labels in old PBASIC


#SELECT  example

' ---- IF - THEN - ELSE
#CASE 10		' IF-THEN-ELSE construct
  IF IN1=1 THEN HIGH 0 ELSE LOW 0
  END


#CASE 11  	' same tokens as 10, single- or multi-line are the same
  IF IN1=1 THEN
    HIGH 0
  ELSE
    LOW 0
  ENDIF
  END

#CASE 12		' same tokens as 10,11
  IF IN1=1 THEN lab1
  GOTO lab2
lab1:
  HIGH 0
  GOTO lab3
lab2:
  LOW 0
lab3:
  END


' ---- ELSIF construct

#CASE 20		' include ELSEIF construct
x VAR Byte
  IF x>100 THEN
  HIGH 0
  ELSEIF x=100 THEN HIGH 2
  ELSEIF x=99 THEN LOW 2
  ELSE     ' x<99
    LOW 0
    LOW 2
    LOW 3
  ENDIF
  END


#CASE 21       ' same tokens as 30
x VAR Byte
  IF x>100 THEN lab1   ' if condition
  GOTO lab2
lab1:          ' come here when if condition is true
  HIGH 0
  GOTO lab9    ' done with if condition true 
lab2:          ' come here when if condition is false
  IF x=100 THEN lab3     ' test 1st elseif condition
  GOTO lab4
lab3:          ' come here when 1st elseif condition is true
  HIGH 2       ' 
  GOTO lab9    ' done with 1st elseif
lab4:          ' come here when 1st elseif is false
  IF x=99 THEN lab5    ' test 2nd elseif
  GOTO lab6     
lab5:          ' come here when 2nd elseif condition is true
  LOW 2 
  goto lab9    ' done with 2nd elseif
lab6:          ' come here  when second elseif is false
  LOW 0        ' do these statements when all the others were false
  LOW 2
  LOW 3
lab9:          ' last exit point for all conditions 
  END





' ---- IF - THEN - GOSUB
#CASE 30		' pbasic 2.5 IF-THEN-GOSUB construct
  ' statements A
  IF IN1=1 THEN GOSUB fubar
  ' statements C
    END
fubar:
  ' statements
  RETURN


#CASE 31		' same tokens as 10, except using old PBASIC
                  ' the if -then-else is parsed, then the gosub
  ' statements A
 IF IN1=1 THEN lab1
 GOTO lab2
lab1:
  GOSUB fubar
lab2:
  ' statements C
  END
fubar:
  ' statements
  RETURN

Örnek kodunda burda işte
goto gosub komutlarını ve dallandıkları yerleri incele bakalım.
Bu arada MEB'in yarışmasına katılıyorsun herhalde umarım orada görüşürüz.

fatihsatir

Dostum doğru diyorsundur yazılımla ben ilgilenmiyorum çünkü, pbasicide çok iyi bildiğim söylenemez. Grubumun takım kaptanıyım fakat sensörler ve devre tasarımı üzerine çalışıyorum, yazılımı yapan başka bir arkadaştı ve direk ondan kopyaladım fakat sorunu çözmeyi sağlayan yeri ben yazdım. Biliyorum çok ama çok saçma fakat 5 saniye gerçektende bekliyor. Bende çalışacağına ümit etmiyodum fakat gerçektende geriye geldiğinde çalışıyor. Buarada dostum vord değil yanlış yazılmış word olacak kusura bakma.!

Kısmetse bugün yola çıkıyoruz MEB için inşallah orada görüşürüz bu konuyu çok daha iyi ve ayrıntılı konuşuruz ve burada anlatmak istediğini bizlere anlatırsın. Biz Karadeniz Teknik Üniversitesi adına geliyoruz, muhakkak ki görürsün bizi. Bekliyoruz orada.. Bir çayımızı içersin..:):):)

Görüşmek Üzere.... Başarılar...
Dünya güzelliklerine dalıp ahiret hayatını unutma..!