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

Stap 1: De knoop van de Debouncing


Om te illustreren knop debouncing, bevat het project dat we geselecteerd twee LED's. Wanneer de knop wordt ingedrukt, wordt de LEDs schakelen tussen elkaar. Een druk op de knop schakelt men vandoor en anderzijds over. Bij het loslaten van de knop, kan het proces opnieuw starten en veroorzaken de LEDs opnieuw in-of uitschakelen. U zult merken dat de LEDs schakelen twee keer of meer met alleen een enkele knop druk op.

Er zijn twee manieren om verlamde debouncing. Een in-circuit methode (hardware) met gebruik van een condensator, en software debouncing. De hardware simpelweg maakt gebruik van een condensator om te elimineren debouncing, en de software zal maken een variabele die het betrouwbaarheidsniveau van de knop-stream van degene of nullen maatregelen.

Disclaimer: Deze methode die ik gebruik voor hardware debouncing is een zeer eenvoudig en armen mans methode. Het belangrijkste probleem met deze methode is dat de spanning van 0 tot 5v in plaats van een onmiddellijke of ogenblikkelijke verandering klimt. Dit kan het signaal in een bereik dat de microcontroller weet niet hoe om te gaan met de spanning zetten. Dit bereik is het gebied tussen de drempels van hoge en lage signalen, die tussen 2 en 3 volt. Met dit gezegd, heb ik niet persoonlijk gezien een probleem met dit met mijn knop debouncing. Als je elimineren deze klimmen willen zou, gebruik een schmitt trigger.

In de video afbeelding ziet u dat het circuit is aangesloten op het breadboard sans de hardware debouncing, zodat het probleem kan worden ervaren. Twee LED's zijn gekoppeld aan de microcontroller, zowel op poort B, op pin 0 en de andere op pin 2. Beide van deze pinnen aan output zal worden ingesteld en omdat de LED's groen zijn, een weerstand van 330 ohm wordt gebruikt voor elke LED. De knop switch is aangesloten op pin 1, op poort B. Deze pin wordt ingesteld voor invoer- en set naar Lees high (pin ingesteld op een "1"). voor de eerste test van de "bounce", zullen we niet een condensator gebruiken over de twee leidt van de knop.

Het programma wil twee LEDs in-/ uitschakelen wanneer u op de drukknop drukt is zeer eenvoudig. Ten eerste, de pinnen zijn geïnitialiseerd: Pins uitvoeren naar de LED's zijn ingesteld voor de uitvoer van in de DDR (Data richting registreren). Een van de LED's zijn van een knevel gevoorzid hoog, dus aan het begin, is een op en een uitstaat. Vervolgens de nooit eindigende lus wordt gestart en de code in dat blok wordt uitgevoerd totdat de microcontroller macht verliest. Binnen deze lus, de pin dat is aangesloten op de drukknop wordt voortdurend gecontroleerd om te bepalen als het brandt. Als het wordt gedrukt, en een 1 vertoont, vervolgens wordt gecontroleerd of de knop primeurs uitgebracht was. Dit is belangrijk, want als wij niet over deze controle, de knop gewoon schakelen continu terwijl de knop is ingedrukt. We willen alleen de knop om te schakelen als de knop is ingedrukt en vervolgens vrijgelaten.

 #include <avr/io.h> int main(void) { DDRB |= 1 << PINB0; //Set Direction for output on PINB0 PORTB ^= 1 << PINB0; //Toggling only Pin 0 on port b DDRB |= 1 << PINB2; //Set Direction for Output on PINB2 DDRB &= ~(1 << PINB1); //Data Direction Register input PINB1 PORTB |= 1 << PINB1; //Set PINB1 to a high reading int Pressed = 0; //Initialize/Declare the Pressed variable 
 while (1) { if (bit_is_clear(PINB, 1)) //Check is the button is pressed { //Make sure that the button was released first if (Pressed == 0) { PORTB ^= 1 << PINB0; //Toggle LED in pin 0 PORTB ^= 1 << PINB2; //Toggle LED on pin 2 Pressed = 1; } } else { //This code executes when the button is not pressed. Pressed = 0; } <p> }</p><p>}</p> 

Wanneer de microcontroller is geprogrammeerd en de knop wordt ingedrukt herhaaldelijk, blijkt dat de LEDs, soms goed en soms meerdere keren met slechts één knop drukt schakelen. Voeg de condensator en controleer de knop te drukken en de LED schakelen weer. Op de oscilloscoop, wordt met de condensator geïnstalleerd, een geleidelijke stijging van de spanning gemaakt wanneer de knop wordt ingedrukt, tegengesteld aan een bos van op en neer de spanningen die voortvloeien uit een bounce van de mechanische onderdelen van de knop. Maar wanneer de knop wordt losgelaten, blijkt dat de spanning een directe verandering is. Dit komt omdat een ander condensator niet tussen de knop en de microcontroller is geïnstalleerd.

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