Skocz do zawartości

Kurs Raspberry Pi - #16 - PWM, wejścia, kamera w Pythonie


Pomocna odpowiedź

Już próbowałem w ten sposób i nie działało. Zrestartowałem malinkę i nagle wszystko działa😃. Teraz będe próbował wstawić w to miejsce komendę na robienie timelapsa.

 

 

  • 1 miesiąc później...

Cześć,
o ile się nie mylę w kodzie dotyczącym "PWM na kilku pinach jednocześnie?" brakuje dodatkowej spacji w linijkach od 22 do 33.
Po skopiowaniu kodu i dodaniu spacji wszystko działało, w innym przypadku wskazywało na błąd.
 

  • Lubię! 1

@pawel268 słusznie, dziękuję za sygnał 🙂 Były tam tabulatory, ale "zniknęły" z wersji dostępnej publicznie to jakiś błąd podczas optymalizacji strony. Już naprawiłem.

Cześć,

Fajny materiał. Miło się czytało. Gratuluje, zresztą dotyczy to chyba wszystkich kursów jakie są tu publikowane. Należą się podziękowania 😉

Mam kilka malutkich jednak uwag:

1/ Brakuje w niektórych przypadkach kilku słów wyjaśnienia do użytych konstrukcji, czy to poleceń shella czy samego pythona, przykłady:

apt list --installed | grep rpi.gpio

except KeyboardInterrupt:

2/ W ostatniej części poświęconej PWM czytamy:

"W 13. części kursu ostrzegaliśmy, że sprzętowy PWM działa jedynie na dwóch konkretnych pinach. Tym razem nie musimy się ograniczać. W Pythonie korzystamy z PWM generowanego programowo."

I dalej:

 "Wniosek z tego taki, że PWM sprzętowy faktycznie działa i możemy wykorzystywać go na dowolnych pinach!"

Chodziło zapewne o programowy.

pozdrawiam

  • Lubię! 1
  • 2 miesiące później...
(edytowany)
Cytat

Po jego uruchomieniu powinniśmy zauważyć, że obie diody zwiększają swoją jasność z minimalnie różna prędkością (wypełnienie pierwszej zwiększamy za każdym razem o 5%, a drugiej o 2%). Wniosek z tego taki, że PWM sprzętowy faktycznie działa i możemy wykorzystywać go na dowolnych pinach!

W powyższym akapicie jest chyba błąd? A nie powinno być "...że PWM programowy faktycznie działa..."?

Co do PWM to czym się różni w realizacji sprzętowy od programowego? W jaki sposób inne biblioteki wykorzystują PWM sprzętowy do wspomagania programowego i co to oznacza, że jest w ten sposób stabilniejszy?

EDIT: ok, kolega wyżej już napisał spostrzeżenie 🙂

Edytowano przez Jan3k
  • Lubię! 1
15 godzin temu, Jan3k napisał:

EDIT: ok, kolega wyżej już napisał spostrzeżenie

Tak zgadza się, ale dziękujemy za czujność 🙂 

15 godzin temu, Jan3k napisał:

że jest w ten sposób stabilniejszy

Programowo generowany sygnał można zakłócić większym obciążeniem systemu, jeżeli jest generowany w innym wątku to też może coś się stać co wpłynie na jakiś moment w sygnale. Ze sprzętowym jest inaczej bo raz ustawiony może być niezależny od programu. Gdyby np. sterować serwem to w programowym PWM jest szansa, że jakaś ścinka wydłuży sygnał i serwo się poruszy.

  • Lubię! 1
  • 11 miesiące później...

Chciałbym zapytać dlaczego po uruchomieniu programu z kamerką wyskakuje takie coś:

mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC
mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x18521e0 (ENOSPC)
mmal: mmal_connection_enable: output port couldn't be enabled
Traceback (most recent call last):
  File "aparat_fotograficzny_w_pythonie.py", line 15, in <module>
    kamera = PiCamera()
  File "/usr/lib/python3/dist-packages/picamera/camera.py", line 433, in __init__
    self._init_preview()
  File "/usr/lib/python3/dist-packages/picamera/camera.py", line 513, in _init_preview
    self, self._camera.outputs[self.CAMERA_PREVIEW_PORT])
  File "/usr/lib/python3/dist-packages/picamera/renderers.py", line 558, in __init__
    self.renderer.inputs[0].connect(source).enable()
  File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 2212, in enable
    prefix="Failed to enable connection")
  File "/usr/lib/python3/dist-packages/picamera/exc.py", line 184, in mmal_check
    raise PiCameraMMALError(status, prefix)
picamera.exc.PiCameraMMALError: Failed to enable connection: Out of resources
 

 

wkleję jeszcze kod programu, ale nie zauważyłem błędów.


from picamera import PiCamera
import time
import RPi.GPIO as gpio

gpio.setmode(gpio.BCM)
gpio.setwarnings(False)
gpio.setup(21,gpio.OUT)
gpio.setup(26, gpio.OUT)
gpio.setup(20, gpio.IN, pull_up_down=gpio.PUD_UP)

dioda = gpio.PWM(21, 50)
dioda.start(0)
gpio.output(26,gpio.HIGH)

kamera = PiCamera()

dioda.ChangeDutyCycle(80)
gpio.wait_for_edge(20, gpio.FALLING)
dioda.ChangeDutyCycle(0)
gpio.output(26,gpio.LOW)
time.sleep(5)
kamera.capture('/home/pi/foto-'+str(int(time.time()))+'.jpg')
gpio.output(26,gpio.HIGH)
gpio.cleanup()
 

W stosunku do kursu zmieniłem piny do których podłączyłem buzzer, diodę i przycisk.

dioda - 21

buzzer - 26

przycisk - 20

 

  • 6 miesiące później...

@milek200 dziękujemy za pozytywny komentarz, na dobry początek dnia 🙂 🍵

8 godzin temu, milek200 napisał:

to https://cdn.forbot.pl raczej niepotrzebne

Tak zgadza się, nie jest to potrzebne. jest to wynik błędu kompresji zdjęć na forum - algorytm wszedł tam gdzie nie powinien 😉 dziękujemy za czujność.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...