16F877A İle İlgili Acil Yardım Beyler

Başlatan tmac_21, 22 Mart 2015, 11:24:58

tmac_21

Merhaba arkadaşlar forumdaki ilk mesajım hatalıysam kusura bakmayın.  Engel algılayan robot projesi yapmaktayım . Protonda başlangıç seviyesinden  az üstünüm. PIC 16F877A , L293D-Motor sürücü - Sharp 4-30cm analog sensör , 2 DC motor var ve bunları kurdum. Motor sürücüyle motorları ileri yada geri kontrol edebiliyorum , analog sensörü picin ADC sine tanıtıp volt değerini okutabiliyorum ama bir sorunum var. Başlangıç olarak engeli görünce robotun durup 1 saniye boyunca geri gelip, 0.5 saniye boyunca sola dönmesini istiyorum ama bir türlü yapamadım. Engeli görüp hemen engeli çekince sapıtıyor. Kodum şu , Proton kullanmaktayım ilgilenlere çok teşekkür ederim.

Device=16F877A
Xtal=4
Declare Adin_Res = 10
ADCON1=%10001110   
TRISA=$01:TRISB=$00:TRISE=$00:TRISC=$00:TRISD=$00
PORTA=$00:PORTC=$00:PORTD=$00:PORTE=$00
PORTB=0

Dim adcdeger As Word
Dim volt As Float

anaprog:
   PORTB=0
   adcdeger= ADIn 0
   volt = adcdeger * (5/1023)
   High PORTD.0
   Low PORTD.1
   High PORTD.2
   Low PORTD.3

       loop:

     If volt >= 2.2 Then

         PORTD=0
         DelayMS 300

         High PORTD.1
         Low PORTD.0
         High PORTD.3
         Low PORTD.2
         DelayMS 700

         Low PORTD.3
         DelayMS 500

               If volt >= 2.2 Then GoTo loop

     EndIf

DelayMS 200

GoTo anaprog

Maxim

bu şekilde istediğinizi çok zor alırsınız
ben mesela ne yapayım koda?
devreyi benmi yaptım? ne nasıl kullanılacak nereden bileyim
proteus dosyasınıda vermeniz lazım kısacası

ete

Volt değeri 2,2 ye eşit veya büyük ise loop a giriyorsunuz. Loop sonunda analıg değer okumadan aynı komutu kullanıp sürekli loopa gönderme yapıyorsunuz kusur burada. Zira volt değeri ancak yeni bir analog okuma yaparsanız değişecektir. Yapmazsanız değeri hep aynı kalır ve programda loop içinde hapsolur.
Loop sonunda önce yeni bir analog okuma yapın sonra volt değeri 2,2 ye eşit yada büyük ise loopa gidin değilse loop dan çıkın.

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