Stap 10: Code voor versie 2
De eenvoudigste manier om zich te ontdoen van de knop is gewoon om het helemaal te verwijderen, vergeet de inbreng op PB2 en uitsluitend wissel de ADC voor "Free Running Mode".
Met andere woorden gewoon het ADCSRB-register zodanig wijzigen dat ADTS2, ADTS1 en ADTS0 alle zero's zijn.
Vervolgens stelt u in ADCSRA de ADSC-bit op 1 die de eerste conversie beginnen zal.
Nu uploaden naar uw microcontroller en vindt u dat het juiste nummer op het scherm komt terwijl u zijn indrukken van de knop en alleen terwijl u zijn indrukken van de knop. Dit is omdat de ADC voortdurend bemonstering van de ADC0 poort en de waarde weer te geven. Wanneer u uw vinger op de knop, de "knop bounce" zal leiden tot een paar willekeurige waarden zeer snel optreden en dan het terug naar 0V input zal regelen. In onze code hebben we deze 0V verschijnen als 0b11011011 (omdat de druk op de toets '0' is reeds met behulp van de weergavewaarde 0b00000000)
Dit is niet de oplossing die we willen maar om twee redenen. We willen eerst niet hebben de knop ingedrukt houden. We willen het indrukken en het nummer weergegeven (of in sommige nieuwe code gebruikt in een latere tutorial). Ten tweede, we willen niet voortdurend het proeven van de ADC0. Wij willen het nemen van één enkele lezing te converteren, en slaap dan tot een nieuwe ToetsIndrukken (KeyPress) een nieuwe conversie activeert. Gratis uitgevoerd modus werkt het beste als het enige wat je de microcontroller wilt te doen voortdurend sommige analoge ingang gelezen wordt--zoals als u wilde weergeven van real-time temperaturen of iets.
Dus laten we nog een andere oplossing te vinden...