• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Raspberry Pi - oprogramowanie przycisku w bashu

VPS Starter Arubacloud
0 głosów
414 wizyt
pytanie zadane 11 lutego 2020 w Inne języki przez kingmajster Użytkownik (520 p.)

Hej. W internecie można łatwo znaleźć jak wyzwalać akcję po wciśnięciu przycisku podłączonego do pinów GPIO w Pythonie. Natomiast jak przechwycić wciśnięcie przycisku bezpośrednio w skrypcie Bash?

Zna ktoś odpowiedni warunek?

Przykładowy kod w Pythonie:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

while True:
      if GPIO.input(23) == GPIO.HIGH:
            print("Wcisnieto przycisk")

Coś takiego próbowałem w bashu, ale nie działa:

#!/bin/sh
gpio -g mode 23 in

while true
do
      if  [gpio -g read 23 == "1"]
      then
         echo "Wcisnieto przycisk"
      fi
done

 

1 odpowiedź

0 głosów
odpowiedź 11 lutego 2020 przez reaktywny Nałogowiec (42,140 p.)

Możesz odpalać mały skrypt Pythona i zwracać "informację" do basha na różne sposoby:

- zwracając kod wyjścia (exit code) - ale to nie jest najładniejsze wyjście

- zapis do pliku i monitorowanie zmian z Basha.

- wrzucając na standardowy strumień odpowiednie znaki czy cały tekst

Są pewnie inne sposoby, ale chyba ten ostatni wydaje się być najrozsądniejszy (z trzech powyższych).

Ale tu jest link jak bezpośrednio w Bashu obsługiwać GPIO:

https://medium.com/coinmonks/controlling-raspberry-pi-gpio-pins-from-bash-scripts-traffic-lights-7ea0057c6a90

 

 

 

komentarz 12 lutego 2020 przez kingmajster Użytkownik (520 p.)

Chcę mieć ten skrypt w bashu, dlatego, że w skrypcie napisanym w Pythonie nie działa mi funkcja subprocess.call("./druk.sh"), która odpala skrypt w bashu obsługujący drukarkę, więc pomyślałem, żeby całość napisać w bashu. Normalnie po uruchomieniu skryptu z konsoli wszystko działa, natomiast problem z tą funkcją jest, gdy chcę uruchomić go automatycznie po starcie malinki, umieściłem link do niego w /etc/rc.local i po uruchomieniu programu i przyciśnięciu przycisku wywala błąd z tą funkcją.

edit. Pod link, który podałeś już zaglądałem, ale nie mam tam przykładu z przyciskiem. Ja potrzebuje obsłużyć wejście, a nie wyjście.

Podobne pytania

0 głosów
1 odpowiedź 132 wizyt
0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 12 lipca 2017 w Sprzęt komputerowy przez Undisputed Gaduła (3,040 p.)
0 głosów
0 odpowiedzi 993 wizyt
pytanie zadane 28 września 2017 w Python przez Undisputed Gaduła (3,040 p.)

92,967 zapytań

141,931 odpowiedzi

321,163 komentarzy

62,299 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...