Skocz do zawartości

Pi pico błąd w kodzie


Michal88

Pomocna odpowiedź

Mam czujnik PIR 3v3 bez potencjometrów czujnik tylko co jakiś czas wykrywa ruch sprawdzane na dwóch czujnikach, to gdzieś musi być błąd w kodzie.

 

from machine import Pin
import utime
led = Pin('LED', Pin.OUT)
pir = Pin(1, Pin.IN, Pin.PULL_UP)
led.low()
utime.sleep(3)
while True:
   print(pir.value())
   if pir.value() == 0:
       print("LED On")
       led.high()
       utime.sleep(5)
   else:
       print("Waiting for movement")
       led.low()
       utime.sleep(0.2)

 

Link do komentarza
Share on other sites

Zamknij układ w kartonie, może coś łapie o czym nie wiesz. Sprawdź, czy wtedy będzie wariował.

Ale, czy nie powinno być:

pir = Pin(1, Pin.IN, Pin.PULL_DOWN)
  .
  .
if pir.value() == 1:

? Czujnik idzie wysoko, jak coś jest w zasięgu.

Edytowano przez matsobdev
  • 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

Twoje rozwiązanie pomogło, ale chyba mój nowy kod jest lepszy niż poprzedni.

 

from machine import Pin
from time import sleep

led = Pin('LED', Pin.OUT)
pir = Pin(1, Pin.IN)

while True:
  if pir():
    print('Motion detected!')
    led.on()
    sleep(1)
    led.off()
    if not pir():
        print('Motion stopped')

 

Link do komentarza
Share on other sites

W sumie tutaj podciąganie może nie być potrzebne, bo sam czujnik może trzymać wysoko, czy nisko i nie będzie pływać samo sobie. Generalnie jest to ważna rzecz do mniej inteligentnych czujników, czy w ogóle przycisków itp. Pomijając jakiś stan przejścowy, np. start Pico, kiedy to wszystkie piny są podciągnięte w dół.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

Próbuję robić tak, aby czujnik po wykryciu ruchu cały czas wyświetlał napis o wykryciu ruchu, a zatrzymał się dopiero po wciśnięciu klawisza

 

from machine import Pin
from time import sleep

led = Pin('LED', Pin.OUT)
pir = Pin(1, Pin.IN)
a = 1

while True:
  if pir():
    print('Motion detected!')
    led.on()
    led.off()
    if input(a):
        print ('STOP')

 

Link do komentarza
Share on other sites

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

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.