Skonfigurowałem Arduino UNO z 4 przewodami wejściowymi, łączą się one z portem 10, 11, 12, 13, są podłączone do mojej płyty pilśniowej tylko na przewodzie.
Mój kod będzie po prostu:
Serial.println(digitalRead(13));
Serial.println(digitalRead(12));
Serial.println(digitalRead(11));
Serial.println(digitalRead(10));
Chodzi o to, że po krótkim podłączeniu styku do 5V lub 3V3 odczyt zaczynałby wariować: 1 0 0 1 0 1 1 1 0 1 0 1 1 0 Bez sensu! Bez podłączania jakiegokolwiek przewodu bezpośrednio do mojego VCC (5 V lub 3 V 3) odczyt ciągle się zmienia, kiedy powinien wynosić zero!
Czy moje Arduino nie żyje? Jak mogę to naprawić?
arduino
floating-pin
Guilherme Garcia da Rosa
źródło
źródło
Odpowiedzi:
To, co masz, nazywa się
Floating
szpilką. Piny wejścia cyfrowego są bardzo wrażliwe na zmiany i chyba że zostaną pozytywnie ustawione w jednym lub drugim stanie (wysokim lub niskim), wychwycą zbłąkaną pojemność z pobliskich źródeł, takich jak płyty do krojenia chleba, ludzkie palce, a nawet powietrze. Każdy podłączony do niego przewód będzie działał jak mała antena i spowoduje zmianę stanu wejścia. Mam na myśli dowolny drut, ślad na płycie, drut do deski do krojenia, szpilkę do płyty chlebowej, a nawet metalową szpilkę samego układu scalonego.Odnosi się to do strony referencyjnej Arduino:
Jeśli spojrzysz na samouczek Arduino Digital Pin :
Te rezystory o niskim obciążeniu wymuszają stan styku wejściowego w znanym stanie i łatwo można je zastąpić silniejszymi napięciami wejściowymi, takimi jak bezpośrednie połączenie z masą lub + 5 V.
źródło
pinMode(pin, INPUT_PULLUP)
? Jest łatwy do zapamiętania i bardzo trudny do zepsucia.To normalne. O ile wejście nie jest podłączone do czegoś, pokaże WYSOKI lub NISKI lub ciągle się zmienia. Jest to opisane na stronie referencyjnej digitalRead na stronie internetowej Arduino.
Pin wejściowy zachowuje się z niewielką pojemnością, więc krótkie podłączenie do 3V3 lub 5V spowoduje naładowanie pojemności. Możesz znaleźć podobny efekt za pomocą gołego palca.
Możesz uniknąć tego problemu, dodając rezystor o dużej wartości między pinem a GND.
Zadaj sobie pytanie, dlaczego oczekujesz zera?
źródło