Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[YENİ] Python ile bir motoru belirli saniye de belirli yöne çevirme.
#1
Resimde ki devrede BMC18'e bir buton bağlanacak. Butona basınca motor 10sn boyunca bir yöne dönecek ve duracak. Daha sonra tekrar basınca bu sefer de diğer yöne doğru 10sn dönecek ve duracak. Python dilinde nasıl yazılması gerekiyor?

Ara
Cevapla
#2
Geçenlerde raspberry pi ile ilgili sorularını görmüştüm, o cihazla ilgili bir mesaim olmadığı için herhangi bir yorumda bulunmak istemedim. Ama burada
(07-02-2019, Saat: 20:07)vayvan Nickli Kullanıcıdan Alıntı:  Python dilinde nasıl yazılması gerekiyor?
diye sorulan soruya cevaben bir şeyler yazmak isterim. Fakat kullanılan cihaz veya onun için yazılmış kütüphanelerden bihaber olduğumu da tekrar vurgulamak isterim.

10 saniyede bir motorun yön değiştirerek döndüğünü hayal eden biri TEMEL OLARAK ekrana şunu bastırmak ister diye düşündüm. Demek istediğiniz bunun gibi bir şey miydi?

PHP Kod:
import time
from threading import Thread


directions 
= ["Right""Left"

def engine(direction):
    
# ilgili kodlar buraya
    
print "Engine Running: %s" direction
    
    
while True:
    
Thread(target=engineargs=(directions[0],)).start()
    
time.sleep(10)
    
directions.reverse() 
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#3
(07-02-2019, Saat: 23:56)gecemor Nickli Kullanıcıdan Alıntı:  Geçenlerde raspberry pi ile ilgili sorularını görmüştüm, o cihazla ilgili bir mesaim olmadığı için herhangi bir yorumda bulunmak istemedim. Ama burada
(07-02-2019, Saat: 20:07)vayvan Nickli Kullanıcıdan Alıntı:  Python dilinde nasıl yazılması gerekiyor?
diye sorulan soruya cevaben bir şeyler yazmak isterim. Fakat kullanılan cihaz veya onun için yazılmış kütüphanelerden bihaber olduğumu da tekrar vurgulamak isterim.

10 saniyede bir motorun yön değiştirerek döndüğünü hayal eden biri TEMEL OLARAK ekrana şunu bastırmak ister diye düşündüm. Demek istediğiniz bunun gibi bir şey miydi?

PHP Kod:
import time
from threading import Thread


directions 
= ["Right""Left"

def engine(direction):
    
# ilgili kodlar buraya
    
print "Engine Running: %s" direction
    
    
while True:
    
Thread(target=engineargs=(directions[0],)).start()
    
time.sleep(10)
    
directions.reverse() 
10 sn kendi kafasına göre değil de ben butona bastıkça dönecek. Basacağım  10sn dönecek ve duracak sonra tekrar basınca diğer tarafa 10sn döencek ve duracak

gecemor daha önce yazdığım bir kod. Belki kütüphaneler için fikir verir.

PHP Kod:
import RPi.GPIO as GPIO
import time
 
GPIO
.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
 
GPIO.setup(5GPIO.OUT)
GPIO.setup(18GPIO.INpull_up_down=GPIO.PUD_DOWN)
 
def blink(pin):
    print(
"led yandi..")
    
GPIO.output(pinTrue)
    
time.sleep(0.1)
    print(
"led sondu...")
    
GPIO.output(pinFalse)
    
time.sleep(0.1)
    return
 
try:
    while 
True:
        
butonOku GPIO.input(18)
        if 
butonOku == True:
            print(
"Butona basildi...")
            for 
i in range (0,2):
                
blink(5)
             
        else:
            print(
"Butona basilmadi...")
            
GPIO.output(5False)
         
except KeyboardInterrupt:
    print (
"Cikis yapildi.")
    
GPIO.cleanup() 
Ara
Cevapla
#4
tamam işte değişen pek bir şey olmyacak ki, ilgili kütüphanelerden anladığım kadarıyla while döngüsünde port dinleme gibi buton dinleniyor.

butonOku = GPIO.input(18)

bu "True" değerini verdiğinde butona basılmış olsa gerek ki

if butonOku == True:
..........print("Butona basildi...")

şeklinde while içinde kullanım yapılmış. Aynı şekilde verdiğim örneğe uyarlanabilir.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#5
(08-02-2019, Saat: 19:18)gecemor Nickli Kullanıcıdan Alıntı:  tamam işte değişen pek bir şey olmyacak ki, ilgili kütüphanelerden anladığım kadarıyla while döngüsünde port dinleme gibi buton dinleniyor.

butonOku = GPIO.input(18)

bu "True" değerini verdiğinde butona basılmış olsa gerek ki

if butonOku == True:
..........print("Butona basildi...")

şeklinde while içinde kullanım yapılmış. Aynı şekilde verdiğim örneğe uyarlanabilir.

Saniye ayarını nasıl yapıyoruz tam olarak? Ben takıldım kaldım bu konuda. Bir kod verirseniz deneme şansım olabilir.
Ara
Cevapla
#6
Ben kabaca bu şekilde ifa ettim, eğer while döngüsünün motor calisirken devam etmesi gereken bir durum varsa "engine" fonksiyonunu çağırmak için Threading kullanılabilir.

PHP Kod:
import time
# ilgili kutuphaneler


directions = ["Right""Left"


def engine(direction):
    
# motorun calismasi icin ilgili kodlar buraya gelecek
    
print("Engine Running: %s" direction)
    
# motorun yonu 'direction' degiskenidir, bu directions listesinden ayarlanabilir
    
time.sleep(10)
    
# time.sleep sonrasinda motoru durdurmak icin gereken kodlar buraya
    
directions.reverse() # bir sonraki sefere listenin tersi left ise right gelmesi icin
    
    
while True:
    
butonOku GPIO.input(18)
    if 
butonOku:
        
engine(direction[0]) 
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#7
PHP Kod:
import RPi.GPIO as GPIO
from time import sleep

GPIO
.setup(5GPIO.OUT)
GPIO.setup(18GPIO.INpull_up_down=GPIO.PUD_DOWN)

Motor GPIO.output(5)
 
def setup
():
    
GPIO.setmode(GPIO.BCM)                # GPIO numarası
    
GPIO.setup(Motor,GPIO.OUT)  
    
directions 
= ["Right""Left"] 

def engine
(direction):

    # Going forwards
    
GPIO.output(Motor,GPIO.HIGH)
    print("Engine Running: %s" direction# motorun yonu 'direction' degiskenidir, bu directions listesinden ayarlanabilir
    
    time.sleep(10)    # Stop
    
GPIO.output(Motor,GPIO.LOW)
    directions.reverse() # bir sonraki sefere listenin tersi left ise right gelmesi icin
    
    
while True:
    butonOku GPIO.input(18)
    if butonOku:
        engine(direction[0]) 
        
        def destroy
():    
    
GPIO.cleanup()

if 
__name__ == '__main__':     # Program start from here
    
setup()
    try:
            loop()
      except KeyboardInterrupt:
        
destroy() 
Böyle bir şey yaptım ama doğru mudur?
Ara
Cevapla
#8
Bir kaç girinti hatası gördüm, sanırım kopyalayıp buraya yapıştırırken oldu. Onun haricinde eğer çalıştırma-durdurma ve buton okuma komutları doğruysa çalışıyor olması gerek.

ben yine de girinti hatasız kodu tekrar yazıyorum.

PHP Kod:
import RPi.GPIO as GPIO
from time import sleep

GPIO
.setup(5GPIO.OUT)
GPIO.setup(18GPIO.INpull_up_down=GPIO.PUD_DOWN)

Motor GPIO.output(5)
 
def setup():
    
GPIO.setmode(GPIO.BCM# GPIO numarasi
    
GPIO.setup(Motor,GPIO.OUT)  
    
directions = ["Right""Left"

def engine(direction):
    
# Going forwards
    
GPIO.output(Motor,GPIO.HIGH)
    print(
"Engine Running: %s" direction# motorun yonu 'direction' degiskenidir, bu directions listesinden ayarlanabilir

    
time.sleep(10# Stop
    
GPIO.output(Motor,GPIO.LOW)
    
directions.reverse() # bir sonraki sefere listenin tersi left ise right gelmesi icin
    
    
while True:
    
butonOku GPIO.input(18)
    if 
butonOku:
        
engine(direction[0]) 
        
def destroy():    
    
GPIO.cleanup()

if 
__name__ == '__main__':     # Program start from here
    
setup()
    try:
        
loop()
    
except KeyboardInterrupt:
        
destroy() 
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#9
(09-02-2019, Saat: 20:50)gecemor Nickli Kullanıcıdan Alıntı:  Bir kaç girinti hatası gördüm, sanırım kopyalayıp buraya yapıştırırken oldu. Onun haricinde eğer çalıştırma-durdurma ve buton okuma komutları doğruysa çalışıyor olması gerek.

ben yine de girinti hatasız kodu tekrar yazıyorum.

PHP Kod:
import RPi.GPIO as GPIO
from time import sleep

GPIO
.setup(5GPIO.OUT)
GPIO.setup(18GPIO.INpull_up_down=GPIO.PUD_DOWN)

Motor GPIO.output(5)
 
def setup():
 
   GPIO.setmode(GPIO.BCM# GPIO numarasi
 
   GPIO.setup(Motor,GPIO.OUT 
    
directions 
= ["Right""Left"

def engine(direction):
    
# Going forwards
    
GPIO.output(Motor,GPIO.HIGH)
    print(
"Engine Running: %s" direction# motorun yonu 'direction' degiskenidir, bu directions listesinden ayarlanabilir

    
time.sleep(10# Stop
    
GPIO.output(Motor,GPIO.LOW)
    
directions.reverse() # bir sonraki sefere listenin tersi left ise right gelmesi icin
 
   
    
while True:
    
butonOku GPIO.input(18)
    if 
butonOku:
        
engine(direction[0]) 
        
def destroy():    
    GPIO
.cleanup()

if 
__name__ == '__main__'    # Program start from here
    
setup()
    try:
        
loop()
    
except KeyboardInterrupt:
        
destroy() 
GPIO out başta iki kere yazıldı ya. Onda bir sıkıntı olur mu?
Ara
Cevapla
#10
valla hiç bilmiyorum ki modülün kullanımını, elimde raspberry pi de yok. O yüzden sadece modülü yükleyip tatbik edebileceğim bir ortam olsa zaten yükleyip bir kaç deneme yapardım. Artık o sizin deneme yanılma yöntemiyle keşfedeceğiniz veya cihazı ve kütüphaneyi kullanan birinin vereceği bir bilgi.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  15gb .myd uzantılı dosya python ile okutma perry 1 771 27-11-2022, Saat: 17:59
Son Yorum: perry
Question Python Dili Soru & Cevap gecemor 1,493 1,021,354 08-11-2022, Saat: 11:18
Son Yorum: Antonyobanderas
  GÜNCEL Python request , c# request e göre çok yavaş ne yapabilirim perry 12 2,245 28-09-2022, Saat: 20:27
Son Yorum: krast
  YENİ Python Pyqt5 memory leak sorunu perry 3 839 28-09-2022, Saat: 11:33
Son Yorum: gecemor
  YENİ PYTHON ads approval CaglarDevv 2 1,062 04-07-2022, Saat: 01:23
Son Yorum: CaglarDevv

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme