Arduino 26: FOTOREZYSTORY, FOTODIODY i FOTOTRANZYSTORY

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ธ.ค. 2022
  • O fotoelementach: fototranzystorach, fotodiodach i fotorezystorach. Arduino mierzy światło. Wyłącznik zmierzchowy, histereza i bezwładność.
    Kod, na którym bazuje odcinek, można pobrać stąd:
    adamsmialek.com/towary_prakty...
    Zapraszam do wsparcia mojego kanału:
    patronite.pl/smialekadam
    PayPal.Me/smialekadam
    oraz do subskrybowania:
    th-cam.com/users/AdamSmialek?...
    #Arduino #photodiode #fotorezystor

ความคิดเห็น • 64

  •  ปีที่แล้ว +4

    No i wkradł się błąd :) Niestety, w źródłach, z których kiedyś korzystałem, ktoś gdzieś błędnie założył, że kompilator dba o bezbolesne przerywanie pętli, ale tak nie jest. W Arduino, podobnie jak w innych środowiskach, nie można sobie po prostu robić skoku bezwarunkowego, do tego służy instrukcja return, którą należy wpisać zamiast loop() Program rzeczywiście zawiesi się, choć będzie to trwać dość długo. Dziękuję panom za info. Większe wyjaśnienie w kolejnym filmie, wraz z innymi rozwiązaniami problemu.

    • @Art_Sci
      @Art_Sci ปีที่แล้ว +3

      Wywołanie rekurencyjne...
      edit:(dodałem przed przeczytaniem komentarzy...)
      Serdecznie Pozdrawiam!

    • @TomekNagisa
      @TomekNagisa ปีที่แล้ว +3

      Można po prostu robić skok bezwarunkowy (goto), chociaż generalnie się powinno unikać. loop() nie jest skokiem bezwarunkowym a po prostu (rekurencyjnym) wywołaniem funkcji.

    •  ปีที่แล้ว +1

      Kiedyś znalazłem dyskusję o funkcjach setup oraz loop i ktoś wspominał, że są odpowiednikami restartów i będąc nazwami zastrzeżonymi, inicjują stosowne zachowania (restart stosu itp). Jednak doświadczalnie okazało się to nieprawda. Natomiast w materiałach oficjalnych na stronie Arduino nie znalazłem nigdzie potwierdzenia ani zaprzeczenia temu. Dlatego wszystko co nowe we własnych doświadczeniach należy zawsze sprawdzać. Tak na marginesie, w asemblerze i automatyce przemysłowej skoki przez restart są często stosowane, będąc dodatkowym zabezpieczeniem krytycznych aplikacji.

    • @TomekNagisa
      @TomekNagisa ปีที่แล้ว

      @ Arduino to nie jest język, tylko biblioteka/zestaw ich napisanych w C++, to tez wszystkie reguły które rządzą C++, rządzą tez arduino. Także jeśli manual ardu o czymś nie wspomina, to zachowanie jest jak w C++. Na atmedze istnieje tylko jedna "funkcja" która resetuje stos, wektor przerwania resetu, i nie jest dostepny dla uzytkownika. Co do asm, no ok, ale w asm to można sobie robić dowolne cuda wianki. No i wejście do bootloadera o ile istnieje najlepiej wykonywać przez reset. ;)

    •  ปีที่แล้ว

      Ale ja nie mówię, że Arduino jest językiem, jest kompilatorem C++ o pewnych charakterystycznych cechach, w większości wspólnych z C++, ale mającym dodatkowe elementy (np. predefiniowane stałe jak choćby słynną LED_BUILTIN). I nie miałem na myśli rzeczywistego resetu, tylko restart oprogramowania widocznego dla użytkownika, to są dwie zupełnie różne rzeczy. Zresztą przejście przez reset w Arduino nie jest rozwiązaniem użytkowym, ponieważ trwa zbyt długo ze względu na bootloader kompatybilny ze środowiskiem.

  • @pasjeihobby
    @pasjeihobby ปีที่แล้ว +4

    Hipnotyzujące filmy. Jakby rok temu ktoś mi powiedział, że będę YT o fotorezystorach oglądał to bym się popukał w głowę :)

    • @Wrublos212
      @Wrublos212 ปีที่แล้ว +3

      Niby rzeczy proste, znane ale cos nowego się człowiek dowie. Ja się dowiedziałem o bezwładności i żywotności fotorezystorów.

  • @TyphoonPL
    @TyphoonPL ปีที่แล้ว +2

    Kolejny bardzo fajny odcinek. Muszę się jednak "przyczepić" do sposobu wyjścia z pętli. Dużo bezpieczniejszym byłoby zastosowanie return; zamiast loop();. W tym przypadku może nie jest to problem, ale w innych przypadkach, użycie takiej rekurencji, może spowodować przepełnienie stosu i restart programu.

    •  ปีที่แล้ว

      A to prawda, na takie rzeczy można sobie pozwolić w tym środowisku, ale nie dowolnym innym, a w asemblerze byłby z tego zwiech. Tutaj system dba o zmienne i stos, więc pewne uproszczenia czynić można. Przy okazji problem wyjaśnię.

  • @Maciej.R.
    @Maciej.R. ปีที่แล้ว +3

    Piękny procek Intela DX4

    •  ปีที่แล้ว +2

      Raz jeszcze się przydał :)

    • @KoJacek
      @KoJacek ปีที่แล้ว +1

      @ W końcu to DX, czyli daje większe możliwości ;)

  • @s.g.4205
    @s.g.4205 ปีที่แล้ว +2

    Witam!!!

  • @Skilowi
    @Skilowi ปีที่แล้ว +8

    Kochanie proszę obudź się, Pan Adam dropnął nowy film

  • @dziku878
    @dziku878 ปีที่แล้ว +1

    👍👍

  • @pajacpajac530
    @pajacpajac530 ปีที่แล้ว +1

    Mam zamiar zbudować urządzenie do pomiaru prędkości śrutu z wiatrówki i fototranzystory tam się wykorzysta.

  • @rysiumag
    @rysiumag ปีที่แล้ว +1

    Nie znam się na Arduino ale co do fotorezystora że wolny, jest stosowany np. gramofon Bernard na osi silnika jest tarczka która liczy obroty i odczyt idzie do układu stabilizacji obrotów i jakoś daje
    radę Panie Adamie jak tam ma się mostek RLC kiedy będzie coś o nim. Pozdrawiam ciepło Ryszard

    •  ปีที่แล้ว

      Wolny, mając na myśli megaherce. Do "akustycznych" zastosowań jest wystarczająco szybki. Mostek czeka w kolejce, ale doczeka się na pewno :)

  • @stefantelefan3031
    @stefantelefan3031 ปีที่แล้ว +3

    Czemu tam jest rekurencja, nie przepełni się stos po wielu takich zagnieżdżonych wywołaniach loop?

    •  ปีที่แล้ว

      Zgadza się, wyżej wyjaśnienie.

  • @enwugie4113
    @enwugie4113 ปีที่แล้ว

    Jestem ciekaw czy na takim czymś da się poskładać kompresor audio czyli opto comp z wtyczkami vst.

    •  ปีที่แล้ว

      Jak najbardziej. Sterowany przez midi :)

  • @pokrec
    @pokrec ปีที่แล้ว

    Fotodioda po oświetleniu nie zmniejsza swojego oporu, tylko zwiększa swój prąd zaporowy. Pojęcie oporu w przypadku żródła prądowego (o wydajności wprost proporcjonalnej do natężenia światła) jest tak użyteczne jak pikofarady do ważenia ziemniaków. Fotodioda to źródło prądowe o prądzie wyjściowym proporcjonanlym do natężenia padającego światła.
    Owszem, można sobie podzielić napięcie przez fotoprąd i dostać cos o wymiarze ohmów, ale to nie będzie miało żadnego związku z "oporem" fotodiody.
    Fotodioda może też generować prąd sama z siebie, niespolaryzowana, jak robią to chyba najpowszechniejsze fotodiody, jakie możemy oglądać na dachach domów - panele fotowoltaiczne. To są też fotodiody. Takie same jak te bzdyczki podpinane do Arduino, tylko po prostu większe. Fotodiodą może też być (i nią jest) dioda elektroluminescencyjna, ale ta jest optymalizowana do pracy jako emiter światła. Panele fotowoltaiczne, jak w nie wtłoczyć prąd w kierunku przewodzenia tez świecą, tylko w podczerwieni...

    •  ปีที่แล้ว

      No właśnie o tym mówię w filmie: dwóch rodzajach pracy fotodiody. Z punktu widzenia układu, spolaryzowaną możemy traktować jako zmieniający się opór, ale opornikiem nie jest. Nie ma to znaczenia dla naszych oczekiwań. O drugim sposobie pracy, jako źródle prądowym, mówię dalej.

  • @SG-br9vj
    @SG-br9vj ปีที่แล้ว +1

    A będzie Pi Pico? Też kawał fajnego mikrokontrolera 😉

    •  ปีที่แล้ว +1

      Może kiedyś.

  • @sp3sfzslawek555
    @sp3sfzslawek555 ปีที่แล้ว

    Dzień dobry. Zbudowałem dzięki tej serii filmów urządzenie sterujące przekaźnikiem. Jako że do tej pory nie stosowałem do tych celów mikrokontrolerów, a układy analogowe, jestem zadowolony że bez wysiłku można uzyskiwać dowolne opóźnienia, załączanie pzy poziomach określonych z dokładnością do pięciu miliwoltów, bez specjalnego wysiłku uzyskuje się parametry wprost wpisane w kod, słowem coś, co wcześniej wymagało dobierania elementów teraz jest banalnie łatwe. Jedynym zmartwieniem jest kwestia stabilności. Czy można zaufać temu komputerkowi? Stwierdziłem, że jeśli załączę zasilanie, to układ jest "spokojny", nic się nie dzieje. Załącza przekaźnik tylko wtedy, gdy przewiduje program. Ale, gdy nacisnę reset kiedy urządzenie pracuje, przekaźnik wykonuje kilkanaście szybkich załączeń i wyłączeń, po czym układ działa stabilnie. Nie jest to efekt bezpieczny dla zasilanych przekaźnikiem odbiorników. Czy tego samego należy się spodziewać, gdybym zastosował programowy reset( co jakiś czas), w celu uniknięcia zawieszenia, jeśli układ miałby działać długo bez kontroli?

    •  ปีที่แล้ว

      Trudno powiedzieć dlaczego tak się dzieje. Generalnie układy z wbudowaną częścią kodu współpracującego w ekosystememie Arduino resetują się trochę dłużej (nieco powyżej sekundy), ale nigdy nie robią takich rzeczy. Być może wystarczy proste podciągnięcie wejścia i wyjścia rezystorem plus wrzucenie małej pojemności na wejściu (przełączniku). Podobnie można zrobić z wejściem resetującym. Być może klon tego układu po prostu nie ma tam niczego albo jakieś własne dziwne elementy.
      Arduino wymaga dobrego, stabilnego napięcia i całej reszty jak typowy układ mikroprocesorowy: ekranów, krótkich kabli itd. Działa wtedy stabilnie jak każdy taki układ.

    • @sp3sfzslawek555
      @sp3sfzslawek555 ปีที่แล้ว

      @ Dziękuję za odpowiedź. Nie chcę zajmować czasu, napiszę tylko krótko: po naciśnięciu resetu na zasilanej płytce, miga dioda L (trzy razy ?) podpięta do portu 13. Akurat tam mam pdpięty moduł z przekaźnikiem. I to daje efekt drgania kotwicą przekaźnika. Nie badałem co się dzieje wtedy na innych portach. Taki sam efekt jest w układzie zmontowanym na płytce testowej( do układów próbnych), i z płytkami z wgranym innym programem, jak i fabrycznie nowych (z wgranym blikiem). Niezależnie, czy są zasilane przez USB, czy z pinu VIN. Jak się podepnie zasilanie, to płytka zapala diodę POW, i po mniej więcej sekundzie (może mniej, prawie natychmiast) zaczyna "pracować", czyli gra melodia, czy realizuje się inny program, ale bez migania diodą L. Dotąd myślałem, że to normalne, ale prawda, mam płytki tylko jednego typu i od jednego dostawcy. Możliwe, "że takie one są". Jeszcze jedno spostrzeżenie na koniec- może to ważne- nie migają w czasie resetu inne diody podpięte do innych portów, ani też nie słychać "stukania" w podpiętej słuchawce W66. Może tylko port 13 tak się zachowuje przy resecie?

    •  ปีที่แล้ว

      Układ po resecie nadsłuchuje transmisji, ale generalnie diody na wyjściu 13 nie rusza. To akurat wyjście jest podłączone przez dodatkowy wzmacniacz z diodą, być może Chińczycy coś tam popsuli. Najprościej będzie podłączyć przekaźnik na inne wyjście, one (oprócz 0 i 1) są "gołe", tj. podłączone bezpośrednio do kontrolera.

    • @sp3sfzslawek555
      @sp3sfzslawek555 ปีที่แล้ว +1

      @ Dla ścisłości chcę dodać, że sytuacja dotyczy arduino nano. W zasadzie sam powinienem wpaść na to, że wystarczy zmienić port sterujący przekaźnikiem, ale redagowałem tekst, robiąc próby z innymi płytkami, i spisywałem wyniki. Wtedy nie wpadłem na to, że diody świecące podłączone do portów nie mrugają tak jak ta na porcie 13 :) Dziękuję za zajęcie się moim problemem, życzę wszystkiego dobrego.

  • @apruszko
    @apruszko ปีที่แล้ว +4

    Aż mnie zmroziło - rekurencja na Arduino, gdzie stos ma 2kB? To nie resetuje CPU ze względu na przepełnienie stosu? A może czegoś nie rozumiem? A nie wystarczyło dodać flagę i wychodzić z pętli for a nie wywoływać loop() z jej wnętrza? Ten kod ma szansę przy specyficznym pobudzeniu przepełniać stos.

    •  ปีที่แล้ว

      Sprawdziłem, jednak środowisko tego nie naprawia. Wyżej wyjaśnienie.

  • @MegaDejmos
    @MegaDejmos ปีที่แล้ว +1

    łeb jak sklep

  • @cefalloid
    @cefalloid ปีที่แล้ว +2

    Fotorezystor stawia opór, gdy w pobliżu znajduje się taki złom jak procesor Intel DX4. Ot i cała tajemnica.

  • @maricomovies
    @maricomovies ปีที่แล้ว

    Bosh, w jakich myszkach?? Chyba 20 lat temu. Kolega boomer znowu się zapomniał.

    •  ปีที่แล้ว +1

      W każdej myszy z pokrętłem, ale kolega boomer pewno nie zna :)

  • @antonizapaa6361
    @antonizapaa6361 ปีที่แล้ว +1

    Żarówki Osram

  • @lordlogan3308
    @lordlogan3308 ปีที่แล้ว +1

    To lepiej ustawic taka lampe czasowo od godziny do godziny, a nie bawic sie wjakis fotoszity

    • @lordlogan3308
      @lordlogan3308 ปีที่แล้ว

      @@peterkrawczyk5907 tam tez nie, tam w arduriono ustawiasz sobie ze zima po danej dacie i wtedy ci automatycznie zmienia sie czas od kiedy swiatlo itd

    •  ปีที่แล้ว +1

      Jeśli zależy nam na oszczędnościach, to nie lepiej.

    • @steam7087
      @steam7087 ปีที่แล้ว +1

      Są przecież w sprzedaży zegary sterujące "astronomiczne". Mają zaprogramowane godziny wschodu i zachodu słońca dla każdego dnia roku.
      Co również jest pewną wadą. Stosowane nader chętnie w sterowaniu oświetleniem ulicznym, powodują szczególnie jesienią, przy pochmurnym niebie, totalne niedoświetlenie ulic.

    • @lordlogan3308
      @lordlogan3308 ปีที่แล้ว

      @@peterkrawczyk5907 no tylko do ustawien a potem nie wymaga to juz zadnej ingerencji. fotoszity tez jak Adam mowil musisz dopasowac eksperymentalnie wiec to to samo

    • @lordlogan3308
      @lordlogan3308 ปีที่แล้ว

      @ teraz sa Ledy wiec nie ma co oszczedzac nawet

  • @rollo_tomasi
    @rollo_tomasi ปีที่แล้ว

    To nie jest ciekawe dla większości. Za dużo tego ARDUINO.

    •  ปีที่แล้ว +14

      Nie ma problemu, proszę oddać bilet w kasie kina :)

    • @lblb17
      @lblb17 ปีที่แล้ว +8

      No patrz a jednak jest ciekawe. Mnie i wielu innych interesują filmy, natomiast twoje zdanie kompletnie nie.

    • @rollo_tomasi
      @rollo_tomasi ปีที่แล้ว

      A jednak obaj stoicie Panowie po stronie czegoś, czego nie rozumiem, lecz może nie dysponuje ankietami zainteresowań, które przeprowadził i posiada Pan Adam.
      Jeśli większość odbiorców chwali sobie wątek ARDUINO, w porządku, wszak może więcej wśród nas informatyków- amatorów, niż mogłoby się zdawać. Dla mnie i mnie podobnych, zabierają one czas i zapał w tworzeniu treści o utensyliach- ubożejącą ich ilość widać jak na dłoni.

    •  ปีที่แล้ว +4

      Po drugie: filmy robię dla siebie, dla własnej przyjemności, nie dla ankiet zainteresowań i statystyk oglądalności. Jest mi miło, jeśli podobają się także innym, ale przede wszystkim muszą się podobać mnie.
      A po pierwsze, ta seria ukazuje się regularnie od blisko półtora roku, w co drugi poniedziałek. To naprawdę długi okres, by uniknąć zaskoczenia z wynikiem stuprocentowym i po prostu nie oglądać jej :)

    • @rollo_tomasi
      @rollo_tomasi ปีที่แล้ว

      @ to wystarczy: unsub.