Skocz do zawartości

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


Pomocna odpowiedź

@Kinimod135 niezabardzo wiem co chcesz zdziałać, sam nie mam doświadczenia w takich poleceniach, ale moja propozycja to wejście w Pythona. Na tej stronie masz przykła:

#!/usr/bin/env python2.7  
# demo of "BOTH" bi-directional edge detection  
# script by Alex Eames https://raspi.tv  
# https://raspi.tv/?p=6791  
  
import RPi.GPIO as GPIO  
from time import sleep     # this lets us have a time delay (see line 12)  
  
GPIO.setmode(GPIO.BCM)     # set up BCM GPIO numbering  
GPIO.setup(25, GPIO.IN)    # set GPIO25 as input (button)  
  
# Define a threaded callback function to run in another thread when events are detected  
def my_callback(channel):  
    if GPIO.input(25):     # if port 25 == 1  
        print "Rising edge detected on 25"  
    else:                  # if port 25 != 1  
        print "Falling edge detected on 25"  
  
# when a changing edge is detected on port 25, regardless of whatever   
# else is happening in the program, the function my_callback will be run  
GPIO.add_event_detect(25, GPIO.BOTH, callback=my_callback)  
  
print "Program will finish after 30 seconds or if you press CTRL+C\n"  
print "Make sure you have a button connected, pulled down through 10k resistor"  
print "to GND and wired so that when pressed it connects"  
print "GPIO port 25 (pin 22) to GND (pin 6) through a ~1k resistor\n"  
  
print "Also put a 100 nF capacitor across your switch for hardware debouncing"  
print "This is necessary to see the effect we're looking for"  
raw_input("Press Enter when ready\n>")  
  
try:  
    print "When pressed, you'll see: Rising Edge detected on 25"  
    print "When released, you'll see: Falling Edge detected on 25"  
    sleep(30)         # wait 30 seconds  
    print "Time's up. Finished!"  
  
finally:                   # this block will run no matter how the try block exits  
    GPIO.cleanup()         # clean up after yourself 

Tylko zamiast GPIO.BOTH dasz GPIO.FALLING i powinno działać, a i pullup zamiast .IN

Link to post
Share on other sites
(edytowany)

Cześć,

Dzięki wielkie za kolejny świetny kurs 🙂

Mam pytanie odnośnie podłączania elementów do gpio malinki. Ogólnie przywykłem że wszystko co podłączamy do maliny/arduino puszczamy przez rezystory żeby nie spalić malinki przez zbyt duży pobór prądu. Obecnie chcę podpiąć pamięć SPI flash do malinki przez gpio i jak czytam opisy jak ludzie to robią to widzę że wpinają się bezpośrednio nóżkanu pamięci spi flash bez żadnych rezystorów pod gpio (w zasadzie nie znalazłem żadnego projektu z rezystorami). I tu zapala mi się czerwona lampka no bo to jest wbrew temu co się do tej pory nauczyłem. Inny przypadek (też wylistowany niżej) to użycie rezystora tylko na jednej linii. Czy mógłby mi ktoś wytłumaczyć czemu ludzie nie stosują w tym przypadku rezystorów? Czy to czyste lenistwo i ryzykowanie że nic się nie stanie czy o co chodzi? @Treker masz jakiś pomysł?

Przykład tutaj:

https://www.linuxjournal.com/content/flash-roms-raspberry-pi

Inny projekt używa rezystora tylko na 1 linii:

https://blog.3d-logic.com/2017/12/01/using-raspberry-pi-to-flash-esp8266/

 

Edytowano przez Anno
Link to post
Share on other sites

@Anno wszystko zależy od tego jaki prąd płynie w danej sytuacji. W przypadku SPI mówimy o magistrali, przez którą przesyłane są cyfrowo informacje - płyną tam bardzo małe prądy. To zupełnie normalne, że w takiej sytuacji nie podłącza się tam żadnych rezystorów. Rozumiem, że może to być dla Ciebie mało intuicyjne, ale z czasem szybko zaczniesz wyczuwać różnice w tego typu podłączeniach. Co więcej, przykład z rezystorem, który wkleiłeś to akurat pull-down i nie ma to nic wspólnego z ograniczeniem prądu pobieranego przez układ na danej linii.

  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites

Dzięki wielkie za wyjaśnienie, znasz może jakieś artykuły gdzie ten temat poboru prądu przy takich układach jest dokładniej opisany?

Link to post
Share on other sites

@Anno raczej ciężko będzie o tego typu artykuł, bo to bardzo ogólny temat. Jeśli natrafisz na podobny przykład np. połączenie przez I2C lub UART to najprościej poszukać jak powinno wyglądać połączenie w przypadku używania tego typu magistrali.  Wtedy będzie wiadomo czy (i jakie) rezystory są ewentualnie potrzebne. 

Link to post
Share on other sites

Witam, wykonałem ćwiczenie z generowaniem PWM na diodzie po pinie 12. W komentarzu do ćwiczenia jest napisane że tylko piny 12 i 18 są w staniespzrętowo generować PWM - OK. Zatem zacząłem jednocześnie generować PWN na pinie 12(dioda czerwona) i na pinie 18 (dioda zielona), po uprzednim zainicjowaniu pinu 18 w analogiczny sposób jak pin 12. Ku mojemu zdziwieniu komendy wydawane na pin 12 sterowały również pinem 18 i vice versa - wydane na pin 18 sterowały jednocześnie w identyczy sposób pinem 12. Czy to błąd malinki, czy inne uwarunkowania sprzętowe lub programowe?

Link to post
Share on other sites

@ekofarmer pojawienie się RPi4 namieszało całkiem sporo w kwestii GPIO, więc dla formalności zapytam najpierw - na jakim dokładnie RPi wykonujesz to ćwiczenie?

Link to post
Share on other sites

Poczytawszy trochę zorientowałem się, że piny 12 i 18 działają na tym samym kanale PWM (Channel 0) i stąd zaobserwowane ich działanie. Udało się niezależnie sterować PWM dla dwóch diód - należało zainicjować do tego jeden z pinów 13 lub 19, które działają na 2 kanale PWM (Channnel 1). Nie będę zadawał na razie kolejnych pytań, bo z tego co doczytałem, po pojawieniu się RPi w wersji 4, biblioteka WiringPi przestała być utrzymywana i stąd problemy w kursie, który na niej się opiera. Mam nadzieję, że wkrótce uda się Autorom go dostosować. Pozdrawiam

  • Lubię! 1
Link to post
Share on other sites
Dnia 1.08.2019 o 06:24, Treker napisał:

@Tomcat witam na forum 🙂

Jest to znany błąd - aktualne wersje bibliotek nie obsługują jeszcze pull-upa w nowym Raspberry Pi 4. Trzeba poczekać na aktualizację biblioteki, skorzystać z czegoś innego lub dodać rezystor podciągający ręcznie. Więcej informacji oraz przykładowe rozwiązania znajdziesz tutaj: https://forbot.pl/forum/topic/10480-kurs-raspberry-pi-12-podstawy-gpio-skrypty/?do=findComment&comment=133201

 

MATKO BOSKA pół dnia siedziałem nad tym problemem, może z płytką coś albo ten przycisk, kable nie te...

A tu taki psikus z rpi4 

Link to post
Share on other sites

@grinone64 niestety - tak z tym bywa (wiele projektów z sieci też nie zadziała od razu na RPi4). Dlatego w pierwszej części kursu napisałem na zielono, aby w razie problemów z RPi4 pytać śmiało na forum 😉

Link to post
Share on other sites

@Treker Szkoda, że na stronie kursu przy tym ćwiczeniu nie było wspomniane że to nie dla rpi4.

Kupiłem ten zestaw forbot i czy w dalszej części kursu będą takie sytuacje jak ta. Pytam na przyszłość żebym nie walił głową w mur przy kolejnych projektach. Aparat z przyciskiem da się zrobić?
Nie odbierz mnie źle, nie mam żadnych pretensji- uważam, że zrobiliście mega robotę z tym kursem i nie wszystko zawsze można uaktualnić. 

Życzę Ci przyjemnego wieczoru a ja zabieram się za skrypty w pythonie.  

janusz.thumb.jpg.bb9290cb5b6d031db6b7e76f186976bb.jpg

Link to post
Share on other sites

@grinone64 zgodnie ze stanem mojej wiedzy zmian wymaga jeszcze tylko polecenie do generowanie filmów poklatkowych, ale tam też znajdziesz w komentarzach aktualne podpowiedzi. Jakbyś napotkał jakiś inny problem to od razu pisz, będziemy sprawdzać 🙂

5 minut temu, grinone64 napisał:

Szkoda, że na stronie kursu przy tym ćwiczeniu nie było wspomniane że to nie dla rpi4.

Całkowicie to rozumiem, walczymy z tematem, aby odświeżyć w całości ten kurs. Z różnych względów nie łatamy obecnie kursów punktowo, tylko jak robimy aktualizację to od razu całość - od A do Z. Tak jak miało to miejsce w tych przypadkach:

Dzięki za zrozumienie!

  • Lubię! 2
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.