Skocz do zawartości

Kurs Raspberry Pi - #13 - PWM, wejścia, skrypty z kamerą


Pomocna odpowiedź

@velsatis10 Witam na forum! 🙂 

Wydaje mi się, że masz starszą wersję wiring pi. Domyslnie jest zainstalowana ta kompatybilna z RPi 3 stąd masz ten błąd. Nową wersję możesz pobrać ręcznie poleceniami:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

Jeżeli wszystko będzie ok to zainstaluje się wersja 2.52:

image.thumb.png.4a71a9c5fb4c15da23e588e69c018c71.png

A tu wynik gpio -v:

image.thumb.png.b8fa0e777c019927a9f6691fe4ed11bd.png

17 godzin temu, velsatis10 napisał:

na poprzedniej częsci kursu zapalenie diody się udało dopóki nie zacząłem próbować gpio

Masz na myśli, że polecenia na plikach działały ale polecenia gpio ... (z wiring pi) już nie? Program ten przestał być rozwijany i jeszcze "jako tako" działa, dlatego sugerowane jest przerzucenie się na inne biblioteki, np. pigpio albo gpio zero. Jeżeli będziesz miał problem z odczytem wejść (przyciskami) to myślę, że gpio zero może być pomocny.

Edytowano przez Gieneq
  • Lubię! 2
Link to post
Share on other sites

Ok poradzilem sobie uzywajac polecenia raspi-gpio ale powstal drugi "problem" z buzzerem, mianowice jak ustawie pin na OUT buzzer automatycznie zaczyna piszczec i nie moge go wylaczyc zadnym poleceniem poza zmiana wartosci na in. W kursie jest mowa o zmianie wartosci value na 1 badz 0 aby sterowac buzzerem lecz u mnie te funkcje nie dzialaja

z gory serdeczne dzieki za odpowiedz

Link to post
Share on other sites

@zbirek choć wiringpi nie działa poprawnie to poprawnie działa z niego polecenie readall. Jeżeli faktycznie nic się nie ustawia to pewnie trzeba zmienić program.

Ostatnio polubiłem gpio-zero, póki co nie mam z tym problemów. 🙂 

Link to post
Share on other sites

Witam,

Mam problem z Uniwersalne wejścia w Raspberry Pi tj. zadanie z diodą oraz przyciskiem.
Nie ważne czy przed testem wydam polecenie gpio -g mode 26 up czy też nie, polecenie read zawsze odczytuje wartość "0" podczas gdy readall odczytuje czy na wejściu jest "1" czy "0".
Czy robię coś źle? Ma tutaj znaczenie tryb pinu ALT0? Próbowałem je zmienić używając polecenia gpio -g mode 26 in, lecz bez powodzenia.

W związku z tym nie działa również kolejna część zadania tj. z poleceniem gpio -g wfi 26 falling.

Poniżej wyniki z terminala:
1. Przy wyłączonym przycisku:

pi@raspberrypi:~ $ gpio -g read 26
0
pi@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT5 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT5 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | ALT0 | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+

2. Przy włączonym przycisku:

pi@raspberrypi:~ $ gpio -g read 26
0
pi@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT5 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT5 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 1 | ALT0 | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
pi@raspberrypi:~ $

 

Edytowano przez grucha532
Link to post
Share on other sites

@grucha532 a czy gdy ustawiasz GPIO jako samo wejście (bez pullup) to jest lepiej?

Dla testu sprawdź jeszcze czy jak ustawisz pullup przy pomocy plików (tak jak na początku kursu) to polecenie readall zarejestruje zmianę.

WiringPi (gpio) jest wciąż użyteczne i sam chętnie stosuję ale jest kilka rzeczy na które trzeba zwracać uwagę, głównie jeżeli chodzi o pullup - pozostałe funkcje powinny działać bez zarzutów. 

  • Lubię! 1
Link to post
Share on other sites

A mógłbyś dać wskazówkę jak ustawić pullup przy pomocy plików? "1" logiczną mogę dać tylko na wyjście, na wejście niestety nie.

pi@raspberrypi:~ $ echo 1 > /sys/class/gpio/gpio12/value
-bash: echo: write error: Operation not permitted

Dzięki z góry!

Link to post
Share on other sites

Dzięki za próbę pomocy lecz niestety nie:

pi@raspberrypi:~ $ sudo bash -c 'echo 1 > /sys/class/gpio/gpio12/value'
bash: line 0: echo: write error: Operation not permitted
pi@raspberrypi:~ $ sudo bash -c echo 1 > /sys/class/gpio/gpio12/value
1: line 0: echo: write error: Operation not permitted

 

Link to post
Share on other sites

Ok, na RPi4 możesz spróbować użyć raspi-gpio, który pozwala na ustawienie pull-up i sprawdzenie stanu pinu

raspi-gpio set 26 pu
raspi-gpio get 26

Nie jestem pewien, ale używając sysfs chyba nie można ustawić 1 używając pliku value, jeżeli pin jest w trybie IN. Aby ustawić 1 trzeba użyć echo 1 do active_low, ale jak dla mnie niestety to rozwiązanie nie działa

echo 1 > /sys/class/gpio/gpio26/active_low

na wersji gpio 2.52 mi również nie działała obsługa pinów w trybie wejść (IN). Niestety stan pinu nie zmienia się niezależnie od tego czy przycisk wciśnięty czy nie, przynajmniej sprawdzając przez plik value jak i gpio readall.

Edytowano przez ststag
Poprawa literówki, active_low nie działa, wyprowadzenie z błędu
Link to post
Share on other sites

@ststag Pullup z programem gpio dla RPi4 nie działa poprawnie na niektórych pinach, choć zdecydowana większość funkcji programu działa i się przydaje np. readall. Sam jak piszę jakiś program z wykorzystaniem GPIO to korzystam z kilku programów, gdyż każdy ma swoje mocne strony.

Przy kolejnej rewizji kursu zostanie to uwzględnione, a na razie możesz spróbować podziałać z programem pigpio i modułami Pythona np. gpio zero.

  • Lubię! 2
Link to post
Share on other sites

Pytanie.
Mam podłączone diody jak do symulatora światłem. Mam wspólną szynę GND na pinie34 dla wszystkich diod (plus buzzer). Dioda zielona i żółta są podłączone do pinów PWM (IO 18 i IO 12). Gdy wysteruję dowolną z nich wyjściem PWM to obie diody (zielona i żółta) zapalają się z taką samą mocą ( czerwona nie reaguje).  Gdy wysteruję IO 18 na wartość 1024 to obie się zapalną a następnie IO 12 na 0 to obie zgasną.
Ktoś wie czemu tak się dzieje i jak to naprawić ? jest sprzężenie sprzętowe dla obu PWM'ów? 

Link to post
Share on other sites

Wrzucę skrypt który używam teraz do wyzwolenia kamery za pomocą przycisku. W czasie oczekiwania obie diody są zgaszone. Gdy klikam przycisk to na sekundę obie się zapalają. 
 

#!/bin/sh
gpio -g mode 4 up	#przycisk
gpio -g mode 18 pwm	#dioda zielone
gpio -g mode 12 pwm 	#dioda zolta
gpio -g mode 20 out	#buzzer
gpio -g mode 21 out	#dioda czerwona
while true
do
	gpio -g write 21 0
	gpio -g pwm 18 1024
	gpio -g pwm 12 0
	gpio -g write 20 1
	if gpio -g wfi 4 falling 
		then
		gpio -g pwm 18 0
		gpio -g pwm 12 1024
		gpio -g write 21 1
		gpio -g write 20 0
		sleep 1
		raspistill -t 200 -n -o 'zdjecie-%d.jpg' -dt 
	fi
done

Restart RPI nic nie dał. 

EDIT: Czy możliwym powodem błędu jest wspólny GND?

Edytowano przez Jan3k
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.