Step motor sürme yardım.

Başlatan SAKINCALI, 23 Mayıs 2014, 18:29:11

SAKINCALI

merhabalar
ilk konu başlığım yardımlarınızı bekliyorum.

sorum şu ki

pic 16F84 ile step motor sürmeye çalışıyorum
butona basılı ise belirlediğim kadar adım at ve bekle elimi butondan çekene kadar
elimi butondan çektiysem başladığın yere geri dön

bu işlemi yaptıracak komut kümesini bir türlü yapamadım yardımlarınızı bekliyorum. teşekkürler

Kabil ATICI

Ne yaptığını , daha doğrusu nereye kadar geldiğini bir göster. Yani, program ve şemayı bir ekle. elbette biri yardımcı olacaktır!!
ambar7

SAKINCALI

cevap için teşekkür ederim kendimce şöyle bişi yaptım aşşağıda kodlar mevcut butona basılı ise sağa 10 tur at ve dur butonu kontrol et buton bırakılmamışsa durmaya devam et buton bırakılmışsa sola 10 tur dön ve başladığın yere geri gel



TRISB=0
TRISA=1

PORTB=%00000000
PORTA=%00000000

SAY VAR BYTE
DEVAM VAR BYTE
  SYMBOL BUTON=PORTA.0

  BASLA:
IF BUTON=0 THEN              'İLERİ GİT
DEVAM=10                     'TUR SAYISI
FOR SAY = 1 TO DEVAM STEP 1
PORTB=%00000001
PAUSE 40
PORTB=%00000010
PAUSE 40
PORTB=%00000100
PAUSE 40
PORTB=%00001000
PAUSE 40
NEXT SAY
  ENDIF

PORTB=%00000000 '===================BURADA İŞLEMİ KESİP BUTONU KONTROL ETMESİ GEREK

IF BUTON=1 THEN               'GERİ GEL
DEVAM=10                      'TUR SAYISI
FOR SAY = 1 TO DEVAM STEP 1       
PAUSE 40
PORTB=%00001000
PAUSE 40
PORTB=%00000100
PAUSE 40
PORTB=%00000010
PAUSE 40
PORTB=%00000001
NEXT SAY
ENDIF

PORTB=%00000000

GOTO BASLA


mehmet

Geri gelince durmasını sağlamak için ikinci next komutunsan
sonra bir değişken daha kullanınız. Örneğin DUR. Bu değişken,
motor istenilen adım kadar geri gelince sistemin durmasını ve
yeni buton basımına hazır olmasını sağlayacak.
(Basic dilim kötüdür. Hata-eksik olabir.)
TRISB=0
TRISA=1

PORTB=%00000000
PORTA=%00000000

DUR VAR BYTE

SAY VAR BYTE
DEVAM VAR BYTE
  SYMBOL BUTON=PORTA.0
DUR = 0

  BASLA:
IF BUTON=0 THEN              'İLERİ GİT
DEVAM=10                     'TUR SAYISI
FOR SAY = 1 TO DEVAM STEP 1
PORTB=%00000001
PAUSE 40
PORTB=%00000010
PAUSE 40
PORTB=%00000100
PAUSE 40
PORTB=%00001000
PAUSE 40
NEXT SAY

DUR = 1

  ENDIF

PORTB=%00000000 '===================BURADA İŞLEMİ KESİP BUTONU KONTROL ETMESİ GEREK

IF BUTON=1 AND DUR=1 THEN               'GERİ GEL
DEVAM=10                      'TUR SAYISI
FOR SAY = 1 TO DEVAM STEP 1       
PAUSE 40
PORTB=%00001000
PAUSE 40
PORTB=%00000100
PAUSE 40
PORTB=%00000010
PAUSE 40
PORTB=%00000001
NEXT SAY

DUR = 0

ENDIF

PORTB=%00000000

GOTO BASLA
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

SAKINCALI

mehmet kardeşim cevap için teşekkürler söylediğin gibi denedim fakat sonuç olumsuz

butona bir kez basıp bıraktığımda önce ileri gidiyor sonra geri geliyor burası tamam normalde yaptırmak istediğimde bu zaten
fakat butona basılı tuttuğumda sadece ileri gidip butondan elimi çekene kadar beklemesi gerekirken yapmıyor
butona basılı tuttuğumda sadece ileri komutu çalışıyor ama bunu sürekli yapıyor taaki butondan elimi çekene kadar elimi çekince de olması gereken gibi geri gidiyor ve duruyor alt kısım tamam fakat buton konusunda basılı iken bir kez yapması gereken ileri komutunu sürekli yapıyor

SAKINCALI

#5
Mehmet kardesim sanırım yaptım
ileri git komutunu butona basılı iken bir kez yapması için ilk ileri komutuna

IF BUTON=0 AND DUR=0 THEN    DUR un içeriğini 0 olarak tanımladım
----
----
----
DUR = 1 burdaki dur içeriğini 1 olarak atadım işlemi gerçekleştirdi
ENDIF

butona basılı ise 10 tur at bunu bir kez yap buton bırakılmamışsa bekle bırakılmışsa geri gel ve bekle sanırım oldu teşekkürler mehmet kardeş

mehmet

Rica ederim. Konu başlığına "Çözüldü"
ilavesi yaparsanız ihtiyacı olanlar
kontrol edebilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"