När en knapp är ansluten i den konfigurationen är ingången det som kallas flytande vilket betyder att det inte är 0 eller 1. När du trycker på knappen är den ansluten till marken, så det är definitivt a 0, men när den inte trycks ner vet vi inte värdet på stiftet.
Pull Up Resistor
Vi måste inkludera det som kallas en "pull-up" motstånd för att dra upp signalen till en logik 1 när du inte trycker på knappen.
Bild från Sparkfun
Vad detta betyder är när man inte trycker på knappen, läser Arduino en logik 1. När man trycker på knappen strömmar strömmen genom motståndet till jord och Arduino läser en logik 0.
Intern drag Uppmotstånd
Arduino har också interna pull up-motstånd så att du inte nödvändigtvis behöver lägga till en extra komponent i din krets. Det finns ett par sätt att använda detta.
Du måste göra det så här:
pinMode (pin, INPUT); // ställ in pin till inputdigitalWrite (pin, HIGH); // sätt på pullup-motstånd
Nu kan vi göra det helt enkelt i en rad:
pinMode (pin, INPUT_PULLUP);
Detta möjliggör 20k pull up resistor på den stiftet. Ingången kommer inte längre att flyta när knappen inte trycks ned.
Obs! Detta fungerar bara när den andra änden är ansluten till marken.