Stap 3: spanning Divider Ladder
In de afbeelding hieronder, heb ik twee blokken van schakelaars aangesloten. De bovenste blok heeft twee schakelaars en het onderste blok heeft vijf schakelopties. U kunt uw afzonderlijke knevel, kortstondige, tactiele, enz schakelaars op dezelfde manier. Het belangrijkste om op te merken is de weerstand die op de switch is aangesloten.
In mijn voorbeeld heb ik de weerstand van de volgende weerstand te maken van een spanning-kloof die is gemakkelijk te meten en niet fout voor de schakeloptie vóór of na bijna verdubbeld. Als u niet hebt opgemerkt, opnieuw kijken en beseffen dat we terug op onze oude vriend de resistieve voltage divider. De eerste weerstand, de 10 k ohm, is aangesloten op de 5V en de 2de weerstand--de weerstand die Vuit voor SWITCH_ADC pin bepalen zal, is verbonden met elke switch en daarom elke switch wordt geassocieerd met een bepaalde Vout spanning die kan worden gelezen vanaf de pin van de ADC aangesloten bij SWITCH_ADC.
Vervolgens bepalen de verwachte Vout van elke switch als volgt:
Vout = Vin * (R2 / (R1 + R2))
Schakel voor één:
Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V of 240 mV
schakelen voor twee:
Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V of ~ 900mV
en zo verder...
Voel je vrij om in uw eigen waarden voor R2 vervangen als u alleen bepaalde weerstanden handig... Het belangrijkste hier is om te houden van een breed genoeg verschil in spanning tussen de switches, zodat u zal niet worden gestoken in een foutmarge op de ADC als de spanning verwacht uit een naburige switch. Ik heb gevonden de makkelijkste om te doen is om te bouwen van de scheidingslijn ladder en zet een multimeter/voltmeter op de ADC-pin en druk op elke pin en zien welke waarden je. Zij moeten vrij plek op wat u berekenen.
Als u eenmaal de verwachte spanningswaarden van elke switch met behulp van een bepaalde weerstand, dan heb je kunt uw MCU Lees de ADC-pin en vergelijk dat met uw bekende waarden om te bepalen welke schakelen werd ingedrukt. Bijvoorbeeld, zeggen dat u geabonneerd bent op een interrupt service routine die worden aangeroepen wanneer er een gevonden verandering op de ADC-pin. Binnen dat ISR, kon u lezen de ADC en die waarde vergelijken met uw switch-tabel. Als u van een 8-bits ADC waarde gebruikmaakt, zal de spanning worden omgezet in een getal tussen 0 en 255, die correspondeert met een spanning tussen de 0V en 5V. Dit veronderstelt dat u hebt uw ADC op deze manier geconfigureerd.