Jestem nowy w Arduino. Może jest elementarne pytanie ...
Jeśli załaduję ten program:
int mval = 0;
void setup() {
Serial.begin(9600);
// set up the LCD's number of columns and rows:
}
void loop() {
mval = analogRead(1);
Serial.println(mval);
delay(1000);
}
Otrzymuję wartość, która waha się między 300 a 400. Kiedy myślę, że musi to być 0, ponieważ nic nie jest podłączone do tego wejścia.
Jakieś pomysły?? To arduino UNO podłączone do mojego laptopa przez USB
arduino
adc
voltage-measurement
limoragni
źródło
źródło
Odpowiedzi:
Otrzymujesz coś o nazwie „zmiennoprzecinkowe”. Kiedy się nad tym zastanowić, idealne urządzenie do pomiaru wejścia będzie miało bardzo wysoką impedancję wejściową, a zatem nie usunie zbyt dużej energii elektrycznej ze styku.
Tak więc dzieje się tak, że przypadkowe elektrony unoszą się na szpilce (lub poza nią) (albo z powodu zakłóceń elektromagnetycznych w środowisku, albo z bezpośredniego kontaktu z czymś z niewielkim ładunkiem) i ponieważ działa jak połączenie o bardzo wysokiej rezystancji z ziemia, ładunek ten odpływa bardzo powoli. Kiedy więc zmierzysz, wygląda na to, że jest tam napięcie! Zasadniczo albo podłączasz to do jakiegoś urządzenia, które dostarcza napięcie, albo wkładasz rezystor podwyższający lub obniżający i dostosowujesz swoje oczekiwania do tego pinu.
Mam nadzieję, że to pomoże, a jeśli nie, jestem pewien, że ktoś ma link do innej osoby, która odpowiedziała na to pytanie bardziej kompetentnie (widzę w powiązanej sekcji co najmniej jedno prawie identyczne pytanie ).
źródło
analogRead
wywołania na nieużywanym pinie jako zarodkurandomSeed
funkcji: arduino.cc/hu/Reference/RandomSeedWejście jest „pływające”, ponieważ nic nie jest podłączone do „ciągnięcia” napięcia w taki czy inny sposób.
To jest całkowicie normalne. Jeśli podłączysz rezystor obniżający o wysokiej impedancji (powiedzmy 10k) od styku do uziemienia, przestanie to robić, gdy nic nie jest podłączone (chociaż nie ma takiej potrzeby, ponieważ nie będziesz go czytać, gdy nic nie jest podłączony ;-))
źródło