niekto kto rozumie raspberry a jazyku python ?

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa ITIaster » 21 Júl 2017, 21:53

zdravím, potreboval by som pomôcť, chcem si naprogramovať tlačidlá na RPi s použitím GPIO pinov, neovládam python, iba wiring, no podarilo sa mi s pomocou uja googla naprogramovať 1 tlačidlo na vypínanie a zapínanie, no chcel by som viac tlačidiel asi 5 (vypnutie, reset, vol+, vol-, zapnuť/vypnúť BT a podobne...) no nikdy sa mi nepodarilo spojazdniť ďalšie tlačidlo proste naň nereaguje osobitne program na 1. funguje, osobitne program na 2. funguje, spolu reaguje len na 1 a to to ktorého funkcia je v programe definovaná ako prvá, druhé proste ignoruje...
veľmi by mi pomohol aspoň príklad na 2 tlačidlá (ON/OFF a RESET) ktorý by som si potom rozšíril o tie svoje veci... :)

vopred ďakujem :)
0

Používateľov profilový obrázok
lucky62
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1151
Dátum registrácie: 14 Feb 2012, 20:16
Bydlisko: Liptovský Mikuláš, SK

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa lucky62 » 22 Júl 2017, 05:31

No ukáž ten tvoj program...
0
....môj bazar....

...Nikdy sa nehádaj s blbcom...

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa ITIaster » 22 Júl 2017, 14:20

zde :

Kód: Vybrať všetko

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import subprocess

# we will use the pin numbering to match the pins on the Pi, instead of the 
# GPIO pin outs (makes it easier to keep track of things)

GPIO.setmode(GPIO.BOARD)  

# use the same pin that is used for the reset button (one button to rule them all!)
GPIO.setup(5, GPIO.IN)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP)  

oldPowerbuttonState1 = True

while True:
    #grab the current button state
    PowerbuttonState1 = GPIO.input(5)

    # check to see if button has been pushed
    if PowerbuttonState1 != oldPowerbuttonState1 and PowerbuttonState1 == False:
      subprocess.call("shutdown -h now", shell=True, 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      oldPowerbuttonState1 = PowerbuttonState1

    time.sleep(.1)

oldResetbuttonState = True

while True:
    #grab the current button state
    ResetbuttonState = GPIO.input(7)

    # check to see if button has been pushed
    if ResetbuttonState != oldResetbuttonState and ResetbuttonState == False:
      subprocess.call("shutdown -h now", shell=True, 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      oldResetbuttonState = ResetbuttonState

    time.sleep(.1)
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

Používateľov profilový obrázok
Mat77
Pokročilý člen
Pokročilý člen
Príspevky: 749
Dátum registrácie: 11 Nov 2012, 08:30
Bydlisko: Košice
Vek: 28

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa Mat77 » 22 Júl 2017, 14:33

Musíš zlúčiť oba while True cykly do jedného, pretože to je nekonečný cyklus, čo znamená, že sa k druhému nikdy nedostaneš.
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2565
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa maskrtnik01 » 22 Júl 2017, 15:09

A presunúť oldResetbuttonState pred cyklus While.
Je potrebné si uvedomiť, Python síce interpretuje riadok po riadku, ale žiaden (mne známy) jazyk nám nespustí kód, ktorý je za nekonečným cyklom.
0

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa ITIaster » 22 Júl 2017, 16:47

nevedel som že "while true" je ako keby "void loop" :D potreboval by som nejakú dobrú príručku pythonu zameraný práve na tieto GPIO piny :D

otázka: do toho "while true" si môžem takto napísať všetky tlačidlá ? hore si ich zadefinujem a do "while true" dám funkciu ?

inak Ďakujem vám, program teraz vyzerá takto :

Kód: Vybrať všetko

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BOARD)  


GPIO.setup(5, GPIO.IN)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP)  

oldPowerbuttonState1 = True
oldResetbuttonState = True


while True:
    #grab the current buttons states
    PowerbuttonState1 = GPIO.input(5)
    ResetbuttonState = GPIO.input(7)

    
    if PowerbuttonState1 != oldPowerbuttonState1 and PowerbuttonState1 == False:
      subprocess.call("shutdown -h now", shell=True, 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      oldPowerbuttonState1 = PowerbuttonState1

    if ResetbuttonState != oldResetbuttonState and ResetbuttonState == False:
      subprocess.call("sudo reboot now", shell=True, 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      oldResetbuttonState = ResetbuttonState

    time.sleep(.1)


funguje aj tlačidlo na reset aj tlačidlo na vypínanie :) teraz potrebujem pridať volume up a volume down :D
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2565
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: niekto kto rozumie raspberry a jazyku python ?

Príspevok od používateľa maskrtnik01 » 22 Júl 2017, 17:00

Pokiaľ to bude len volanie nejakej funkcie, nemal by byť problém. Problém by nastal, ak by niečo vyblokovalo program - napríklad ďalší cyklus. Alebo blokujúce volanie, t.j. funkcia ktorá na niečo čaká a až potom vráti.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok