Hur komma åt 5 knappar genom 1 Arduino ingång (3 / 8 steg)
Steg 3: Teorin - flera knappar på en PIN-kod
Du fuska! Hemligheten till detta är att använda en analog ingång stift, inte digital.
Du kan läsa om hur analogt ingången fungerar genom att gå igenom självstudierna Arduino. I huvudsak är vad du behöver veta dock att när det är 0V på det analoga stiftet, analogRead() returnerar värdet 0 och om det är 5V, analogRead kommer att returnera ett värde av 1023. För någon spänning mellan 0V och 5V returnerar analogRead flera proportion till spänningen.
Vi kan faktiskt inte ändra den spänning som levereras till pin (inte lätt i alla fall och jag är lat, så lätt är viktigt), men om du kommer ihåg från Ohms lag, V = IR. Nuvarande (I) är fasta vilket innebär att vi bara behöver lägga till ett motstånd mellan matningsspänningen och den analoga pin för att ändra spänningen.
För er som var bli upphetsad om alla matematik som behövs för att beräkna spänningar, kommer jag att behöva göra dig besviken... Jag är lat, så jag inte behöver matematik.
Låt oss få lite mer praktiskt, och jag ska visa dig varför vi bryr oss inte om matematik. Vi vet att den analoga pin läser spänningar och vi vet att vi kan ändra dessa spänningar genom att lägga till ett motstånd mellan det och matningsspänningen. Vi vet också att vi har gått så långt eftersom vi vill kunna läsa växlar, så vi ska nog slänga några växlar i alltför.
Nu, för dem som är intresserade av, för att utforma detta, du börjar med vad du vet. Jag vet hur man ansluter en enda brytare till en enda ingång. Jag ville 5 knappar, så jag dubbla det 5 gånger. Jag sedan förenklat det genom att ha en enda dra ner resister ansluten till alla knappar, och sedan helt enkelt lägga motstånd mellan knapparna och matningsspänningen och hopbundna alla ingångar.
Om du ansluter varje knapp till matningsspänningen genom ett annat värde motstånd, beroende på vilken knappen trycks, värdet som returneras av analogRead skulle vara annorlunda, och du kan använda en massa om uttalanden att se vilken knapp trycktes. Anledningen vi behöver matematik är att vi bara ansluta den upp allt, tryck på knapparna och skriva ut de returnerade värdena till den seriella porten.