Skocz do zawartości

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


Komentator

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.

 

 

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

@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.

Link do komentarza
Share on other sites

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
Link do komentarza
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

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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

 

Link do komentarza
Share on other sites

@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ść.

Link do komentarza
Share on other sites

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.