Những gì bạn có được gọi là một Floating
pin. Các chân Đầu vào Kỹ thuật số rất nhạy cảm với sự thay đổi, và trừ khi được điều khiển tích cực sang trạng thái này hoặc trạng thái khác (Cao hoặc Thấp), sẽ lấy điện dung đi lạc từ các nguồn gần đó, như bảng mạch, ngón tay người hoặc thậm chí là không khí. Bất kỳ dây nào được kết nối với nó sẽ hoạt động như một ăng ten nhỏ và khiến trạng thái đầu vào thay đổi. Và tôi có nghĩa là bất kỳ dây, dấu vết trên bảng, dây đến bảng mạch bánh mì, pin pinboard, thậm chí pin kim loại của chính IC.
Điều này được tham khảo trong trang tham khảo Arduino:
Nếu pin không được kết nối với bất cứ thứ gì, digitalRead () có thể trả về CAO hoặc THẤP (và điều này có thể thay đổi ngẫu nhiên).
Nếu bạn xem Hướng dẫn về Pin kỹ thuật số Arduino :
Tuy nhiên, điều này cũng có nghĩa là các chân đầu vào không có kết nối với chúng hoặc với các dây kết nối với chúng không được kết nối với các mạch khác, sẽ báo cáo những thay đổi dường như ngẫu nhiên trong trạng thái pin, thu nhiễu điện từ môi trường hoặc ghép điện dung trạng thái của một pin gần đó.
Thông thường sẽ rất hữu ích khi điều khiển ghim đầu vào đến trạng thái đã biết nếu không có đầu vào nào xuất hiện. Điều này có thể được thực hiện bằng cách thêm một điện trở pullup (đến + 5V) hoặc điện trở kéo xuống (điện trở tiếp đất) trên đầu vào, với 10K là giá trị chung. Ngoài ra còn có các điện trở pullup 20K tiện lợi được tích hợp trong chip Atmega có thể được truy cập từ phần mềm. Những điện trở pullup tích hợp này được truy cập theo cách sau.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Các điện trở kéo yếu này buộc trạng thái chân đầu vào thành trạng thái đã biết và dễ bị ghi đè bởi điện áp đầu vào mạnh hơn, như kết nối trực tiếp với mặt đất hoặc + 5v.