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
niekto kto rozumie raspberry a jazyku python ?
Moderátori: psichac, Moderátori
- lucky62
- 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 ?
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
Chester Bennington
Re: niekto kto rozumie raspberry a jazyku python ?
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
-
- Ultimate člen
- Príspevky: 2573
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: niekto kto rozumie raspberry a jazyku python ?
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.
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
Re: niekto kto rozumie raspberry a jazyku python ?
nevedel som že "while true" je ako keby "void loop" potreboval by som nejakú dobrú príručku pythonu zameraný práve na tieto GPIO piny
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 :
funguje aj tlačidlo na reset aj tlačidlo na vypínanie teraz potrebujem pridať volume up a volume down
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)
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington
Chester Bennington
-
- Ultimate člen
- Príspevky: 2573
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: niekto kto rozumie raspberry a jazyku python ?
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
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 7 Odpovedí
- 3342 Zobrazení
-
Posledný príspevok od používateľa wreathlover
-
- 11 Odpovedí
- 1644 Zobrazení
-
Posledný príspevok od používateľa miroja
-
- 3 Odpovedí
- 591 Zobrazení
-
Posledný príspevok od používateľa martin knocik