Begin Microcontrollers deel 9: De knop en de Software Debouncing methoden (2 / 2 stap)

Stap 2: Software Debouncing


Dus waarom moeten we om te gaan over een nieuwe methode wanneer de andere één scheen om boete te werken? Nou, is de software ontdendering methode in wezen gratis als de programma ruimte en microcontroller-cyclus zal toelaten. Met slechts een paar regels code, kunt u bieden veel meer controle over hoe de debouncing methoden werken met de knop die u gebruikt. Debouncing in hardware kan extra kosten toevoegen aan elk ontwikkelde bord, en het is moeilijker om een goede debouncing voor alle schakelaars van de drukknop die zal worden gebruikt. Echter, als u bewaren van de programma uitvoering cycli wilt, is het beste om te gaan met de route van de hardware.

Mijn methode van debouncing met software maakt gebruik van slechts twee variabelen die het betrouwbaarheidsniveau van de werkelijke knooppers meten. Met de hulp van de geperste variabele geïntroduceerd in de knop Debouncing, zal er een stroom van 1's wanneer de knop wordt gedrukt, en een stroom van 0 wanneer de knop wordt losgelaten. Als er stuitert gaande, de stream van 1's of 0's worden zeer kort, zodat we van dit profiteren kunnen door de invoering van de twee variabelen die de lengte van deze stromen meet. De variabelen worden genoemd, Pressed_Confidence_Level, voor het meten van de knop gedrukt staat, en Released_Confidence_Level voor het meten van de knop vrijgegeven staat.

Dus, als de knop is ingedrukt, de Pressed_Confidence_Level stijgen zal, en hetzelfde met Released_Confidence_Level wanneer de knop wordt losgelaten. Maar deze variabelen zal ook worden teruggesteld aan 0 als de tegenovergestelde voorwaarde bestaat. Bijvoorbeeld, zeggen de knop werd ingedrukt voor een tijd en de Pressed_Confidence_Level werd een zeer groot aantal, zoals 153,356. Als de knop werd uitgebracht (of een stuiterend gebeurd), zou de variabele worden teruggesteld aan 0. De truc om deze variabelen is het bepalen van een goede drempel vrij staat te bepalen van een goede knooppers. Zeggen, indien uit de Pressed_Confidence_Level blijkt dat na een stijging tot 500, dat dit nummer is een sterke aanwijzing voor een druk op de knop en de LEDs schakelen eenmaal. Hetzelfde geldt voor de Released_Confidence_Level omdat stuiteren ook op een knop-release gebeuren kan. Dus, laten we eens kijken hoe we dit doen via programmacode:

 int main(void) { DDRB |= 1 << PINB0; //For Notes on what these actions mean PORTB ^= 1 << PINB0; DDRB |= 1 << PINB2; DDRB &= ~(1 << PINB1); PORTB |= 1 << PINB1; int Pressed = 0; int Pressed_Confidence_Level = 0; //Measure button press confidence int Released_Confidence_Level = 0; //Measure button release confidence while (1) { if (bit_is_clear(PINB, 1)) { Pressed_Confidence_Level ++; //Increase Pressed Confidence Released_Confidence_Level = 0; //Reset released button confidence since there is a button press if (Pressed_Confidence_Level >500) //Indicator of good button press { if (Pressed == 0) { PORTB ^= 1 << PINB0; PORTB ^= 1 << PINB2; Pressed = 1; } //Zero it so a new pressed condition can be evaluated Pressed_Confidence_Level = 0; } } else { Released_Confidence_Level ++; //This works just like the pressed Pressed_Confidence_Level = 0; //Reset pressed button confidence since the button is released if (Released_Confidence_Level >500 { Pressed = 0; Released_Confidence_Level = 0; } } } } 

Gerelateerde Artikelen

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Hallo, we hopen dat u genoten deel 1 van begin Microcontrollers. We gaan beginnen te praten over interfaces en hoe u uw microcontroller om te communiceren met een computer te verplaatsen langs in deel 2.Dus, op dit punt, moet u vertrouwd met het conc
Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Een zeer eenvoudige en gemakkelijke manier te voorzien van menselijke interactie met de microcontroller is een knop invoegen in het circuit. We communiceren met computers met behulp van de twee belangrijkste invoerapparaten: de muis en het toetsenbor
Begin Microcontrollers deel 12: Inleiding tot de Interrupts

Begin Microcontrollers deel 12: Inleiding tot de Interrupts

In dit deel van de tutorial die we over interrupts praten zullen werken bijvoorbeeld met behulp van de teller. Interrupts verbeteren het gebruik van microcontrollers in een enorme manier. Interrupts maken uw programma's reageren op de hardware van de
Begin Microcontrollers deel 3: Overdracht van een programma in de Microcontroller (stuurprogramma's)

Begin Microcontrollers deel 3: Overdracht van een programma in de Microcontroller (stuurprogramma's)

Welkom bij deel 3. Dit is een kleinere tutorial die zich bezighouden zal met het eenvoudig laden van stuurprogramma's om ervoor te zorgen dat uw programmeur kan communiceren met uw computer correct.Houd er rekening mee dat soms TinyISP en USBAVR appa
Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Ik weet dat u bent klaar om te schrijven van het eerste programma. Je hebt meegemaakt veel tot nu toe! Terwijl we op het onderwerp, recapituleer de gebeurtenissen. U ging naar buiten en gekocht van de Atmel AVR Microcontroller van uw keuze. TheATMega
Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Tot nu toe hebt u de software geïnstalleerd en de interface die voor een eenvoudige aansluiting van de programmeur de microcontroller (MCU zorgt) gebouwd. Voor de volgende stap, zal u een breadboard (degene met getallen zijn erg behulpzaam), een LED
Begin Microcontrollers deel 11: Timers, tellers, en de klok van de Microcontroller

Begin Microcontrollers deel 11: Timers, tellers, en de klok van de Microcontroller

Timers en tellers zijn zo integraal dat ziet u de talrijke voorbeelden hen te betrekken in deze serie. Zoals de naam al zegt, worden timers gebruikt voor de tijd en tellen. Counting en timing kunt u sommige zeer nette dingen zoals controlerende LED b
Begin Microcontrollers deel 13: Inleiding tot de LCD interfacing

Begin Microcontrollers deel 13: Inleiding tot de LCD interfacing

De microcontroller is een prachtig stukje techniek en het kan doen veel dingen (met de hulp van enkele grote programmering), maar het is nog steeds een dekkende zwarte doos. Als u het delen van informatie wilt, of u tonen wat het wil doen, moet u ver
Begin Microcontrollers deel 7: Herziening van het eerste programma om het knipperen van LED

Begin Microcontrollers deel 7: Herziening van het eerste programma om het knipperen van LED

Het eerste programma, dat een LED ingeschakeld die u hebt geschreven. Ja, dat spectaculair was! Nou, niet echt, maar laten we introduceren een beetje gekte op de LED. We geven het een "bi-polaire" persoonlijkheid doordat het knipperen. Toen we h
Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Welkom bij de volgende stap in onze serie. Wij zullen sommige fundamentele programmeerelementen nu introduceren. Deze tutorial is gewoon over het installeren van uw programmeeromgeving. De programmeeromgeving die we zullen gebruiken heet WinAVR.Om te
Microcontrollers deel 1 te beginnen

Microcontrollers deel 1 te beginnen

Dit is de eerste in een lange lijn van tutorials gericht een beginnershandleiding en tutorial gebaseerd rond de Atmel AVR Atmega32 microcontroller te geven. Ik zal tonen u, door middel van voorbeelden en projecten, hoe te programmeren en bieden funct
Microcontroller Tutorial deel 10: Creëren van een spel (de knop spel)

Microcontroller Tutorial deel 10: Creëren van een spel (de knop spel)

Nu zijn we klaar om toe te passen wat we weten en maken een daadwerkelijke spel. Het spel zal bestaan uit een aantal drukknoppen en twee sets van LEDs (2 rijen van 7). Het doel van het spel is om te zien die tussen twee mensen kan duwen hun knop de m
Bekleding knop Earstuds

Bekleding knop Earstuds

Weken geleden had ik de kans om erachter te komen hoe bekleding knoppen zijn gemaakt.Deze knoppen gaf me het idee om deze eenvoudige earstuds met hen maken.Stap 1: materialen To make deze oorbellen die je nodig hebt:Een paar knoppen bekleding * - mij
ZX Spectrum Wired USB toetsenbord deel 1

ZX Spectrum Wired USB toetsenbord deel 1

In dit Instructable zal ik u tonen de eenvoudige stappen die ik gebruikte een ZX Spectrum omzetten in een USB-toetsenbord.Ik weet dat er zijn puristen daar dat dit zal haten, maar als uw moederbord onherstelbaar is, dan is dit een manier om het toets