Elinizde bir Floating
iğne var. Dijital Giriş pimleri değişime karşı çok hassastır ve bir duruma veya başka bir duruma (Yüksek veya Düşük) pozitif olarak yönlendirilmedikçe, breadboardlar, insan parmakları ve hatta hava gibi yakındaki kaynaklardan başıboş kapasitans alır. Herhangi bir kablo küçük bir anten gibi davranacak ve giriş durumunun değişmesine neden olacaktır. Ve herhangi bir tel, tahtadaki iz, breadboard tel, breadboard pin, hatta IC'nin metal pimini kastediyorum.
Bu, Arduino referans sayfasında belirtilmiştir:
Pim hiçbir şeye bağlı değilse, digitalRead () YÜKSEK veya DÜŞÜK dönebilir (ve bu rastgele değişebilir).
Arduino Dijital Pin Eğiticisine bakarsanız :
Bu aynı zamanda, kendilerine bağlı hiçbir şey olmayan veya diğer devrelere bağlı olmayan kablolara sahip giriş pimlerinin, pin durumunda, ortamdan elektriksel gürültü alıp veya kapasiteyi eşleştirerek görünüşte rastgele değişiklikler bildireceği anlamına gelir. yakındaki bir pim.
Çoğu zaman, eğer bir girdi yoksa, bir giriş pimini bilinen bir duruma yönlendirmek yararlıdır. Bu, girişe bir çekme direnci (+ 5V'ye) veya bir açılan direnç (toprağa direnç) eklenerek yapılabilir; 10K ortak bir değerdir. Atmega çipinin içine yerleştirilmiş, yazılımdan erişilebilen kullanışlı 20K çekme dirençleri de vardır. Bu dahili çekme dirençlerine aşağıdaki şekilde erişilir.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Bu zayıf çekme dirençleri giriş pimi durumunu bilinen bir duruma zorlar ve toprağa doğrudan bağlantı veya + 5v gibi daha güçlü giriş voltajlarıyla kolayca üzerine yazılır.