Början Microcontrollers del 9: Knappen och programvara Debouncing metoder (2 / 2 steg)

Steg 2: Mjukvara Debouncing

Så varför behöver vi gå över en ny metod när annan verkade fungera bra? Tja, är programvara debounce metoden i grunden gratis om utrymme och mikrokontroller programcykeln gör det möjligt. Med bara några rader kod, kan du ge mycket mer kontroll över hur de debouncing metoderna fungerar med knappen du använder. Debouncing i maskinvaran kan lägga till ytterligare kostnader till varje utvecklade ombord, och det är svårare att fastställa en bra debouncing för alla tryckknapp växlarna som används. Om du vill bevara programmet utförande cykler, är det dock bäst att gå med hårdvara rutten.

Min metod av debouncing med programvara använder endast två variabler som mäter konfidensnivån för den faktiska knapptryckning. Med hjälp av variabeln pressade infördes i knappen Debouncing, kommer det att finnas en ström av 1: s när knappen trycks, och en ström av 0 är när knappen släpps. Om det studsar pågår, att ström av 1 eller 0 är vara mycket kort, så vi kan dra nytta av detta genom att införa två variabler att mäter längden på dessa strömmar. Variablerna kallas, Pressed_Confidence_Level, att mäta på knappen intryckt staten och Released_Confidence_Level att mäta släppta knappläge.

Så, om du trycker på knappen, Pressed_Confidence_Level kommer att stiga, och samma med Released_Confidence_Level när knappen släpps. Men dessa variabler också bli återställs till 0 om det motsatta villkoret finns. Till exempel säga knappen trycktes under en tid och Pressed_Confidence_Level blev ett mycket stort antal, som 153,356. Om knappen släpptes (eller en studsande hände), skulle variabeln återställas till 0. Tricken till dessa variabler är att bestämma en bra tröskel att fastställa en god knapptryckning eller släppa staten. Säga, om Pressed_Confidence_Level visar att efter att ha stigit till 500, att detta nummer är en stark indikation på en knapptryckning, då lysdioderna kommer att växla en gång. Detsamma gäller för Released_Confidence_Level eftersom studsande kunde också hända på en knapp release. Så, låt oss se hur vi gör detta i koden:

int main(void)
{
DDRB | = 1 << PINB0; För anteckningar om vad dessa åtgärder menar
PORTB ^ = 1 << PINB0;
DDRB | = 1 << PINB2;
DDRB & = ~ (1 << PINB1);
PORTB | = 1 << PINB1;

int pressad = 0;
int Pressed_Confidence_Level = 0; Åtgärd knapp tryck på förtroende
int Released_Confidence_Level = 0; Mäta knapp release förtroende samtidigt (1)
{om (bit_is_clear (PINB, 1))
{Pressed_Confidence_Level ++; //Increase tryckte förtroende
Released_Confidence_Level = 0; Återställ släppt knappen förtroende eftersom det inte finns en knapptryckning
om (Pressed_Confidence_Level > 500) //Indicator av bra knapptryckning
{om (pressad == 0)
{PORTB ^ = 1 << PINB0;
PORTB ^ = 1 << PINB2;
Tryckte = 1;
}
Noll det så en ny pressade villkor kan utvärderas
Pressed_Confidence_Level = 0;
}
}
annat
{Released_Confidence_Level ++; //This fungerar precis som den pressade
Pressed_Confidence_Level = 0; Reset trycks knappen förtroende eftersom knappen är släppt
om (Released_Confidence_Level > 500
{Tryckte = 0;
Released_Confidence_Level = 0;
}
}
}
}

Se Steg
Relaterade Ämnen

Början Microcontrollers del 2: Att skapa ett SPI gränssnitt från programmeraren till mikrokontroller

Hej, hoppas vi du gillade del 1 av början Microcontrollers. Vi ska flytta i del 2 och börja prata om gränssnitt och hur du får din microcontroller att kommunicera med en dator.Så, vid denna punkt, du bör känna till begreppet mikrokontroller (MCU). Du...

Början Microcontrollers del 6: Skriva det första programmet till vända på en LED

Jag vet att du är redo att skriva det första programmet. Du har gått igenom en hel del hittills! Medan vi i frågan, låt oss sammanfatta händelserna. Du gick ut och köpte Atmel AVR mikrokontroller för att förstora. Jag valde theATMega32 för min använd...

Början Microcontrollers del 8: Lägga till en knapp till mikrokontroller och göra det göra något

En mycket enkel och lätt sätt att tillhandahålla för mänsklig interaktion med mikrokontroller är att infoga en knapp i kretsen. Att kommunicera med datorer som använder två viktigaste inmatningsenheter: musen och tangentbordet. Ett tangentbord är ing...

Början Microcontrollers del 11: Timers, räknare och mikrokontroller klockan

Timers och räknare är så integrerad att du kommer att se många exempel på dem i hela denna serie. Som namnet säger, används timers för tid och räkna. Inventering och timing kan du göra några mycket fina saker som kontrollerande LED brights, vinkel gr...

Början Microcontrollers del 5: Provning programmeraren och bygga den första kretsen

Så långt, bör du ha alla mjukvaran installerad och konstruerade det gränssnitt som kommer att ge en bekväm anslutning från programmeraren till mikrokontroller (MCU). För nästa steg måste en skärbräda (de med siffror är mycket bra), en LED och ett mot...

Början Microcontrollers del 12: Intro till avbryter

I denna del av handledningen vi prata om avbrott arbeta till exempel med räknaren. Avbryter förbättra mikrokontroller i stort sätt. Avbryter göra din program reagerar på hårdvaran i microcontrollers, vilket kan vara en reaktion från circuit utanför m...

Början Microcontrollers del 3: Överföra ett Program till mikrokontroller (drivrutiner)

Välkommen till del 3. Detta är en mindre handledning som kommer att behandla helt enkelt laddar drivrutiner se till din programmerare kan kommunicera med datorn ordentligt.Observera att ibland TinyISP och USBAVR enheter nu kommer förladdad med Window...

Början Microcontrollers del 13: Intro till LCD gränssnitt

Mikrokontroller är en underbar bit av ingenjörskonst och det kan göra många saker (med hjälp av några bra programmering), men det är fortfarande en ogenomskinlig svart låda. Om du vill att dela information, eller visa dig vad det försöker göra det, m...

Början Microcontrollers del 4: Installera programmering miljö (WinAVR)

Välkommen till nästa steg i vår serie. Vi kommer att introducera några grundläggande programmeringselement nu. Denna handledning är helt enkelt om hur du installerar din programmeringsmiljö. Den programmeringsmiljö som vi kommer att använda kallas Wi...

Början Microcontrollers del 7: Omarbetning av det första programmet att göra LED blinkar

Du har skrivit det första programmet, som visade på en LED. Ja, det var spektakulärt! Tja, inte riktigt, men låt oss införa lite galenskap till LED. Vi ska ge det en "bipolära" personlighet genom att blinka. Då vi kliver upp ett snäpp och gör de...

Läder draken Mask del I - Design och skärning

Hej! I detta Instructable vill jag visa dig stegen för att skapa en hybrid läder/worbla mask. Jag kommer att särskilt visar en stiliserad drake, men de grundläggande stegen kommer att hålla sant för någon design du väljer att göra. Innan jag går in s...

Hacka den senaste versionen av Staples "Easy" knappen och bygga en enkel fysisk aktivitet påminnelse verktyg

Jag var efter detta instructable att hacka Staples lätt knappen och bygga ett verktyg som påminner mig varje 15 minuter att vara fysiskt aktiv. Knappen som jag köpt från Staples hade inre kretsar som var annorlunda än den som framgår av den instructa...

K'nex Dinobot Transformers del 1: Grimlock och Strafe(Swoop)

Tyvärr jag inte har skrivit på länge men datorn var att vara dum. Jag använde dinobots film-versionerna så vänligen inte dödar mig om du hatar Michal Bay.Steg 1: Grimlocks kropp Steg 2: Grimlocks ansikte Steg 3: Grimlocks ben Steg 4: Grimlock's Tail...

Att göra knappen och ledde

22-11-15Här är koden jag använde att göra ledde arbetet aktiveras med knappen.Steg 1: Att placera knappen och leddeDu kan se det här:https://123d.Circuits.IO/Circuits/1276257-Button-a...Steg 2: Att göra det arbete | Först lyckades jag göra ledde arbe...

Arduino: Programvara debouncing i avbryta funktion...

Hi everybody!Så nyligen jag arbetade på ett projekt där jag ville meassure VARVTALET på ett av hjulen på min bil, och från det beräkna hastigheten, hålla reda på Driven avståndet etc. med en Arduino.Jag ville använda en Magnet och en Reed Switch till...

Måste komponenter, verktyg och programvara för Arduinoist

Att vara en Arduinoist själv, behöver jag många verktyg eller komponenter när jag gör prototyper eller experiment. I listan nedan har jag samlat de viktigaste verktyg och delar för Arduinoist.Denna artikel finns också på Jordan's Lab Notebook !Steg 1...

Börjar Microcontrollers del 1

Detta är först i en lång rad av tutorials syftade till att ge Nybörjarguide och handledning kring Atmel AVR Atmega32 mikrokontroller. Jag kommer att visa dig, genom exempel och projekt, hur program och tillhandahålla funktioner för denna mikrokontrol...

Awesome knappen, och sedan några.

Många av er har förmodligen sett knappen Awesome gjort av Matt Richardson av göra Magazine. Om inte här är hans video som var mycket bra gjort och var inspiration av mitt projekt.Jag gillade idén med att ha en knapp att trycka på för en viss funktion...

Skapa en klickbar Google karta för att dela geografisk Information och Metadata

Har du massor av data som är associerade med en specifik geografisk plats? Detta Instructables lär du dig att skapa en karta där du kan klicka på poäng för att visa data som är associerade till den punkten. Det är lätt, och de flesta allt inte behöve...