Merhaba arkadaşlar, Bu foruma yeni katıldım o yüzden kurallara pek hakim değil yanlışım olursa affedin.
Bir python projesi üzerinde çalışıyorum. push button ile alakalı bir sorum olacak.
Benim bir adet butonum var ve bu butona basıldığı sürece bir led yansın istiyorum buraya kadar * her şey tamam. Ancak bana birde bu led'in ne kadar süre yandığı lazım yani mesela led 2 saat yandı diyelim bunu output olarak görmek istiyorum.
Örnek:
Butona basıldı --->> 2 dakika geçti -->> buton bırakıldı --->>
Output :
led 2 dakika yanık kaldı.
bu konuda bana yardımcı olursanız çok sevinirim.
Şimdiden teşekkürler.
Yanlış anlamadıysam time modülünün time fonksiyonuyla yapabilirsiniz. Örneğin
import time
def selam():
print(selam)
start=time.time()
selam()
fin=time.time() - start
print(fin)
Ayrıca başlıklarınızda "Yardım, acil" benzeri kelimeler kullanmadan içeriği açıklayıcı cümleler kurmaya dikkat edin.
Alıntı yapılan: cosmicowl - 06 Eylül 2018 - 18:04:42
Yanlış anlamadıysam time modülünün time fonksiyonuyla yapabilirsiniz. Örneğin
import time
def selam():
print(selam)
start=time.time()
selam()
fin=time.time() - start
print(fin)
Ayrıca başlıklarınızda "Yardım, acil" benzeri kelimeler kullanmadan içeriği açıklayıcı cümleler kurmaya dikkat edin.
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
yazdığım kodu burda paylaşıyorum. Sizin dediğiniz modülü nereye eklemeliyim ?
Fonksiyonu çağırmadan önce ve sonra gösterdiğim gibi zaman tanımlamanız lazım. Fonksiyondan sonraki zamandan önceki zamanı çıkarınca geçen süreyi bulursunuz :) Kodlarınızı bir fonksiyon içine yazıp yapabilirsiniz veya import işlemi bittikten hemen sonra ve son satırda olabilir:
import RPi.GPIO as GPIO
import time
basla= time.time()
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
bitir=time.time()
gecensure=bitir-basla
#print(gecensure)
Alıntı yapılan: cosmicowl - 07 Eylül 2018 - 14:23:27
Fonksiyonu çağırmadan önce ve sonra gösterdiğim gibi zaman tanımlamanız lazım. Fonksiyondan sonraki zamandan önceki zamanı çıkarınca geçen süreyi bulursunuz :) Kodlarınızı bir fonksiyon içine yazıp yapabilirsiniz veya import işlemi bittikten hemen sonra ve son satırda olabilir:
import RPi.GPIO as GPIO
import time
basla= time.time()
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
bitir=time.time()
gecensure=bitir-basla
#print(gecensure)
Dediğiniz şekilde yaptım ve çalıştı çok teşekkür ederim yardımlarınız için. Şöyle bir sorum daha olacak. Burda geçen süreyi çıkarma işlemi şeklinde bulduğumuz gibi şöyle bişey yapılabilir mi ?
mesela ;
Butona basıldı --->> Led yandı --->> Buton bırakıldı
output : Led 07.09.2018 15:20 ile 07.09.2018 15:25 arası Açık kaldı.
yani tarih ve saat bilgisi verilerek çalışma süresi ekrana yansıtılabilir mi ?
Datetime modülü ile yapılabilir.
import RPi.GPIO as GPIO
import time
import datetime
now= datetime.datetime.now()
tarih1 = datetime.datetime.strftime(now,'%c')
basla= time.time()
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
bitir=time.time()
gecensure=bitir-basla
tarih2= datetime.datetime.strftime(now,'%c')
print("Led {} ile {} arası Açık kaldı.".format(tarih1,tarih2))
#print(gecensure)
Çıktıyı beğenmezseniz: https://belgeler.yazbel.com/python-istihza/standart_moduller/datetime.html
Alıntı yapılan: cosmicowl - 07 Eylül 2018 - 15:38:01
Datetime modülü ile yapılabilir.
import RPi.GPIO as GPIO
import time
import datetime
now= datetime.datetime.now()
tarih1 = datetime.datetime.strftime(now,'%c')
basla= time.time()
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
bitir=time.time()
gecensure=bitir-basla
tarih2= datetime.datetime.strftime(now,'%c')
print("Led {} ile {} arası Açık kaldı.".format(tarih1,tarih2))
#print(gecensure)
Çıktıyı beğenmezseniz: https://belgeler.yazbel.com/python-istihza/standart_moduller/datetime.html
çıktı güzeldi. çok teşekkür ederim.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Eylül 2018 - 16:34:54
Alıntı yapılan: cosmicowl - 07 Eylül 2018 - 15:38:01
Datetime modülü ile yapılabilir.
import RPi.GPIO as GPIO
import time
import datetime
now= datetime.datetime.now()
tarih1 = datetime.datetime.strftime(now,'%c')
basla= time.time()
GPIO.setmode(GPIO.BCM)
blinkCount = 99999
count= 0
LEDPin = 22
buttonPin = 5
GPIO.setup(LEDPin, GPIO.OUT )
GPIO.setup(buttonPin , GPIO.IN , pull_up_down = GPIO.PUD_UP)
buttonPress = True
LedState = False
try:
while count < blinkCount:
buttonPress = GPIO.input (buttonPin)
if buttonPress == False and LedState == False:
GPIO.output(LEDPin , True )
print ("LED ON")
LedState = True
sleep(1)
elif buttonPress == False and LedState == True:
GPIO.output(LEDPin, False)
print ("LED OF")
LedState = False
count +=1
sleep(0.5)
sleep(0.1)
finally:
GPIO.cleanup()
bitir=time.time()
gecensure=bitir-basla
tarih2= datetime.datetime.strftime(now,'%c')
print("Led {} ile {} arası Açık kaldı.".format(tarih1,tarih2))
#print(gecensure)
Çıktıyı beğenmezseniz: https://belgeler.yazbel.com/python-istihza/standart_moduller/datetime.html
Ya da burdan sorayım. Bu tarihleri/saatleri bir grafik olarak ekrana çıkartmak mümkün mü ? internette biraz araştırdım matlab plot modülleri varmış ama denemelerim sonuçsuz kaldı.
Kullanıcıya grafik göstermek için bazı modüller var siz küçük bir şey istediğinizden tkinter kullanabilirsiniz. Daha güzel görünen arayüzler için pyqt ve pygtk yı araştırabilirsiniz.