• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
RPi- ovládání pomocí GPIO tlačítek ? (vyřešeno)
#12
Ovládání pomocí GPIO tlačítek mám již vyřešeno 82. Nebylo to však na první pokus a musel jsem řešit komplikace se správným formátem příkazu (chyba syntaxe) a další problém byl v limitaci, kdy OpenELEC nebral více jak 20 stisků za minutu 6 .

Než se pustíte do prvního skriptíku, tak je potřeba mít nainstalovaný doplněk RPi.GPIO (je součástí repozitáře OpenELEC/LibreELEC).

Tlačítko jsem zapojil nejednoduším způsobem, to jest pin GPIO (zelený) a GND (černý).

   

Pro ty co budou začínat je vhodné si vyzkoušet zda tlačítko funguje a je správně zapojeno.
Jako příklad uvedu test tlačítka na OpenELEC zapojeného přes pin č. 7 (hardwarové značení).

Dále už jsem postupoval přes PuTTY:

1. pro pořádek jsem vytvořil složku ve které budu mít skripty uložené:
Kód:
mkdir skript

2. přejdu do složky a vytvořím soubor s názvem test.py
Kód:
cd ./skript
nano test.py

3. a do něj vložit (samozřejmě upravit podle použitého pinu)
Kód:
import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP)
print "cekam na stisk tlacitka"
GPIO.wait_for_edge(7, GPIO.FALLING)
print "tlacitko bylo stisknuto"

4. nyní si skript spustíme
Kód:
python test.py

5. v případě že máme správně zapojeno a zapsáno, dostaneme po stisknutí :
Kód:
tlacitko bylo stisknuto


Takto jednoduše si otestujeme jakékoliv tlačítko zapojené do GPIO.

Z předchozího víme že nám tlačítko funguje, takže zbývá zadat co se má stát po jeho stisknutí.
Při brouzdání po netu jsem objevil seznam vestavěných funkcí, díky kterým můžu mapovat dle libosti. Pomocí tohoto seznamu plně nahradím Keymap editor + další, např. probuzení CEC, vyčištění knihovny, vysunutí /zasunutí mechaniky, spuštění konkrétního streamu/videa, otevření vybraného doplňku ...

Kompletní seznam najdete zde: http://kodi.wiki/view/list_of_built-in_functions

Pro názornost uvedu příklad, kdy budu chtít "namapovat" tlačítka připojené k pinu č. 29, 31, 33, 35, 37 a přiřadím jim funkce: pohyb vlevo, pohyb vpravo, restart, spuštění spořiče a spuštění doplňku Sosáč.

Kód:
import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')  #cesta ke GPIO knihovne
import RPi.GPIO as GPIO  #importuji GPIO knihovnu
import time  #importuji time knihovnu pro casovaci instrukce
import os  #mimo jiné potřeba pro zadavani prikazu, v nasem pripade funkci
GPIO.setmode(GPIO.BOARD)  #pouzije se HW označení pinu

#nastaveni konkretnich pinu a pripojeni vnitrniho Pull-Up odporu(integrovan na RPi)
GPIO.setup(29, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(31, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(33, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(35, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(37, GPIO.IN, pull_up_down = GPIO.PUD_UP)

while True:  #vytvoreni nekonecne smycky, ktera neustale kontroluje, zda bylo tlacitko stisknuto
  if not ( GPIO.input(29)):  #po stisknuti tlacitka ...
      os.system('kodi-send --action="Action(left)"')  #...se spusti tento prikaz(pohyb vlevo)
  time.sleep(1)  # odruseni zakmitů při rozpínání tlacitka po dobu 1s
  if not (GPIO.input(31)):
      os.system('kodi-send --action="Action(right)"')  #pohyb vpravo
  time.sleep(1)
  if not (GPIO.input(33)):
       os.system('kodi-send --action="Reboot"')  #restart
   time.sleep(1)
  if not (GPIO.input(35)):
       os.system('kodi-send --action="ActivateScreensaver"')  #sporic obrazovky
   time.sleep(1)
  if not (GPIO.input(37)):
       os.system('kodi-send --action="RunAddon(plugin.video.sosac.ph)"')  #sposteni doplnku Sosac
   time.sleep(1)

aby se nám skript spustil automaticky po zapnutí  RPi je potřeba vytvořit soubor autostart.sh (/storage/.config/autostart.sh) a vložit do něj:

Kód:
python /storage/skript/test2.py &

samozřejmě cestu a název skriptu si upravíte podle svého.

Prozatím by to mohlo stačit , snažil jsem se popisovat celkem podrobně, aby se chytli i začínající uživatelé jako já 4 .
RPi 4B - LibreELEC
RPi Zero W - LibreELEC
 
Citovat
  


Příspěvků v tématu
RE: RPi- ovládání pomocí GPIO tlačítek ? - od Petrvald - 01.12.2016, 21:28

Přejít na fórum:


Prochází: 1 host(ů)