• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
problem
#3
A co to ma w ogóle robić, bo założenia nie wyglądają na dobrane przez kogoś kto używa uC.
Chyba że pullup/down i podciąganie to coś innego niż mi się wydawało. Chcesz zasilać wyjściem 2 to po prostu wystawiasz stan niski/wysoki, podciąganie to raczej wymuszanie określonego stanu wejścia by nie było gdzieś w stanie nieustalonym bez sygnału wejściowego. Możesz taki ficzer użyć np. na wejście 2. PIR nie powinien pobierać więcej niż 20mA z UNO, dla większego prądu użyj go tylko jako sygnał włączający.

Uruchamiasz program i funkcją analog write na pinie z PWM ustawiasz to swoje 50%, może być jeszcze w setup. 
https://www.arduino.cc/reference/en/lang...alogwrite/
Jeśli jasność otoczenia osiągnie wymagany poziom włączasz zasilanie PIR i aktywujesz przerwanie od zbocza (piny 2 lub 3 Arduino UNO) wejścia od PIR. I tu możesz sobie dodać ten rezystor podciągający do stanu przeciwnego niż ustawia czujka po wykryciu ruchu, można użyć wewnętrznego pullup.
https://www.arduino.cc/reference/en/lang...interrupt/
Ten pin podłaczasz do pinu A0-A7, odczyt funkcją analog read.
https://www.arduino.cc/reference/en/lang...nalogread/
Jeśli poziom jasności otoczenia jest poza zakresem wyłączasz zasilanie PIR i przerwanie, ustawiasz PWM na 50%.
W przerwaniu, po jego wywołaniu ustawiasz PWM na 100%. Może też być zmienna volatile trzymająca stan PWM, 1 to 100%, 0 to 50%, PWM ustawiasz sobie w jednym miejscu w loop w zależności od jej stanu, jeśli się zmieniła. W przerwaniu tylko zmieniasz jej stan na 1. Można też w każdym obiegu pętli testować stan tego pinu, jak to ma być cały program to zrobi to parę tysięcy razy w sekundę. 
Do tego za bardzo gotowców nie potrzeba to kilka już gotowych funkcji Arduino.
Musisz jeszcze się zastanowić co zrobić po wywołaniu alarmu PIR, ma to zostać w tym stanie na zawsze, na określony czas (użyj millis do zarządzania czasem jak już), czekać na reset stanu od przycisku, zapisywać ilość wystąpień co określony czas. Wtedy wyzeruj zmienną trzymającą stan PWM.
Jak nie zrozumiałeś powyższego to poczytaj kursy Arduino: https://forbot.pl/blog/kursy.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
problem - przez jac2131 - 22-01-2019, 21:46
RE: problem - przez Robson Kerman - 22-01-2019, 23:25
RE: problem - przez kaczakat - 23-01-2019, 04:37

Skocz do:


Przeglądający: 1 gości