Hur komma åt 5 knappar genom 1 Arduino ingång (7 / 8 steg)
Steg 7: Förbättra det
Som med alla projekt börja så fort jag är klar, jag tänka på hur jag kan förbättra det... Här är några tankar jag hade:1. konsekvens av det värde som returneras av analogRead bestäms av ett par saker:
-Strömförsörjningen. Värdet kan variera dramatiskt om din makt inte är väl reglerat. På en reglerad tillförsel, kanske en kondensator kunde jämna leveranser lite mer?
-Knappen. Jag vet inte varför detta skulle vara. En sak jag märkte är att värdena hoppa runt de flesta rätt som tillståndet ändras. Min bästa gissning är att det kan orsakas av tillbaka emf genereras när knappen är nedtryckt / släppt. Kanske kunde en diod över knappen Rensa upp lite.
Naturligtvis, kanske du undrar varför vi måste förbättra den. Trots allt, fungerar det bra.
Om du kunde få intervallet med värden för varje knapp ned till ett minimum, skulle du kunna lägga en hel del fler knappar på varje analog pin.
Till exempel, om du kunde få värdena för varje knapp inom cirka 60 poäng, du kan enkelt sätta 12 knappar på en PIN-kod och använda varje värde motstånd i intervallet E12 mellan 10K och 100K (10k, 12 k, 15k, 18 k, 22k, 27k, 33 k, 39k, 47k, 56 k, 68 k, 82k och 100 k)
Du skulle förmodligen behöva använda mer exakt motstånd (eller bara mäta dem och använda dem som finns tillräckligt nära för att målvärdet), och du kan behöva plocka dina knappar noggrant, men det faktum att min tredje knappen är alltid i en rad 2 poäng bevisar att du bör kunna göra detta.
Det andra skälet är att få det att fungera med flera knappar.
Varför skulle inte det fungera med flera knappar? Återigen, jag kommer faktiskt inte att göra matematik (visar sig jag är fortfarande lat), men jag är ganska säker på att genom att välja din motstånd noga, du kunde lista ut vilka knappar trycktes även om det var mer än en.
Om du tittar på banan, kan du se att genom att trycka på 2 knappar på samma gång, du är i huvudsak att sätta deras 2 motstånd parallellt. Genom att ringa på farbror Ohm igen, har du en formel för att fastställa det totala motståndet för parallella motstånd.
Till exempel om jag tryckte min andra och tredje knappar, kan du se att en 10K resistor parallellt med en 33K motstånd ger dig ett totalt motstånd för 7.6744K (Nope, jag googlade det - fortfarande ingen matematik). Detta skulle vara lätt att plocka upp i koden. Om emellertid jag sköt knapp 1 och 2 dock motståndet för en parallell 1K och 10K resistor skulle vara 900 ohm, så nu är vi i samma storleksordning som för knappen 1.
Naturligtvis, om du lämnade ut 1K motstånd, vore det inget sätt att upptäcka om knappen 1 trycktes med någon annan knapp. Eftersom jag inte behöver att upptäcka flera knapptryckningar, kommer jag inte in på mer detaljer (i nuläget i alla fall).