Mellanliggande Arduino: Ingångar och utgångar (2 / 9 steg)

Steg 2: Arduino knappen Debouncing

Fortsätter från knappen debouncing jag presenterade i min senaste Instructable, kan vi använda millis() för att Dämpningstid knappar utan att använda delay():

Knappen Press detektion - debounce med millis()

int buttonPin = 7.

booleska currentState = låg, //stroage för aktuella uppmätta knappläge
booleska lastState = låg, //storage för senast mätt knappläge
booleska debouncedState = låg, //debounced knappläge

int debounceInterval = 20; //wait 20 ms för knappen pin att bosätta sig
osignerade långa timeOfLastButtonEvent = 0; //store sista gången tillståndet knappen ändras

void setup() {
pinMode (buttonPin, ingång); //this tid vi kommer att ange PIN-koden som indata
Serial.BEGIN (9600); //initialize seriell anslutning
}

void loop() {

currentState = digitalRead(buttonPin);
osignerade långa currentTime = millis();

om (currentState! = lastState) {
timeOfLastButtonEvent = currentTime;
}

om (currentTime - timeOfLastButtonEvent > debounceInterval) {//if tillräckligt med tid har gått
om (currentState! = debouncedState) {//if aktuella tillstånd är ändå annorlunda än vårt senaste lagrade debounced stat
debouncedState = currentState; //update debounced staten

Aktivera en händelse
om (debouncedState == hög) {
Serial.println("Pressed");
} annat {
Serial.println("Released");
}
}
}

lastState = currentState;
}

Jag har lagt till några nya lagring variabler i denna kod:

booleska debouncedState = låg;
int debounceInterval = 20;
osignerade långa timeOfLastButtonEvent = 0;

debouncedState butiker knappen debounced aktuella tillstånd, det är den vi är helt säker på att knappen är i. Däremot currentState och lastState lagra aktuella och sista mätningarna vi om knappen, men de meddelar inte oss statligt av knappen med säkerhet eftersom de kan påverkas av knappen chattare.

debounceInterval är mängden ms vänta på knappen pin sedimentera innan vi vet säkert vad det är i medlemsstaten. Jag är min sista exemplet jag hade använt 1ms, här använder jag 20ms.

timeOfLastButtonEvent liknar timeOfLastLedEvent i senaste skissen, det ger en tid att jämföra med currentTime så att vi kan räkna hur många sekunder har gått sedan första upptäcka en knapptryckning.

TimeOfLastButtonEvent återställs varje gång currentState inte är lika lastState:

om (currentState! = lastState) {

timeOfLastButtonEvent = currentTime;

}

När tillräckligt med tid har gått ut utan att behöva återställa timeOfLastButtonEvent, vet vi knappen har satt sig in i ett debounced tillstånd:

currentTime - timeOfLastButtonEvent > debounceInterval

Så kan vi uppdatera aktuella lagrade debounce tillstånd om det har ändrats, och i så fall utlösa en händelse enligt den nya debounce staten:

om (currentState! = debouncedState) {

debouncedState = currentState;

om (debouncedState == hög) {

Serial.println("Pressed");

} annat {

Serial.println("Released");

}

}

Se Steg
Relaterade Ämnen

Hur man styr en bearbetning skiss med två Arduino ingångar

Denna tutorial ska show dig hur man bygger en grundläggande Arduino krets som kan styra en rolig färgade bollen skiss bearbetning.Du behöver:1 x Arduino ombord (jag använder en Uno)1 x skärbräda1 x foto-motstånd1 x 10 k Ohm motstånd (brun-svart-Orang...

Extra ingångar för Arduino med ett tangentbord

Arduino är kanske häftigaste på jorden. Det finns många typer, Uno, Mega, Pro, Pro Mini, etc. etc.Men en sak som ofta kan vara ett problem är att du bara har ett begränsat antal in- och utgångar. Det finns många lösningar för det, allt från multiplex...

Att komma igång med Xilinx Vivado w / Digilent Nexys 4 FPGA 1 - bygga flera ingångar och logik utfärda utegångsförbud

Jag gör detta instructable eftersom det ser ut som det inte är enkelt att komma igång handledning för att lära människor att använda den senaste Xilinx Vivado CAD-verktyget. Så, jag vill använda den enkla flera ingångar gate design att gå igenom Xili...

Verkligen enkel audio switch (2 ingångar, 1 utgång)

detta är ett projekt som utvecklats under våra "Taller de Inventos" (AKA augusti bygga natt), sponsras av Instructables och Jameco, som några av komponenterna för detta instructable.Det är ett fall där en audio ingång och två utgångar, så att du...

Med hjälp av The PCF8575 i2c i/o Expander till Läs ingångar med Arduino

detta Instructable visar dig hur enkelt det är att lägga till extra ingångar till din Arduino. Du kan använda denna teknik för att lägga till hundratals extra ingångar till din Arduino med bara två kablar med hjälp av en fancy kommunikationsprotokoll...

DIY I2C LCD-Display med ingångar

Den typiska parallella LCD används med en Arduino (16 x 2 eller 20 x 4) har 16 stift. Endast 6 I/O pins krävs på Arduino, men tänk om du kunde få det ner till två I/O stift, och har fortfarande de stift som är tillgänglig för andra enheter?I2C gränss...

Dubbla över MakeyMakey - ännu fler ingångar!

Ibland, bara en MakeyMakey är inte nog för ditt projekt!Här är hur du använder två på samma gång.EDIT:(Ignorera detta Instructable om du har problem med drivrutiner, & huvud tillwww.makeymakey.com/REMAPAnvända Chrome, kan du mappa om tangenttryckning...

Joystick Modding för snabbare ingångar Fightsticks/Arcadesticks

Få snabbare ingångar genom att installera en spänning våren och överdimensionerade manöverdonet till din styrspak.De flesta Fightsticks komma med Sanwa Joysticks. I denna tutorial jag lära dig hur man installerar ett överdimensionerade ställdon, och...

Enklaste sättet att få stereoljud från Mono mikrofoner / ingångar (utan programvara)

köpa den: http://amzn.to/ncofO1Episod 1 - www.thoughtgrenades.comEtt snabbt och praktiskt sätt att få stereoljud från Mono mikrofoner / ingångar.Redigeringsprogram används: After Effects & Sony VegasBakgrundsmusik sammanställt av: youtube.com/user/Mr...

Minecraft hemliga ingångar: Hemliga Outrance

MINECRAFT! Lemme sätta min blick tillbaka i--jag slags förlorade efter timmars spel: POm ni minns mitt senaste projekt, Minecart upptäckt ingången, är detta ett bra sätt att få ut. Jag föreslår att göra detta i din hus/dungeon/slott/jätte bok / vad d...

DIY Arduino fjärrkontroll och Lego RC bil!

Uppdatera (8/29/13): tacka er läsare för din entusiasm och typ kommentarer angående detta projekt! Det har varit en enorm resa sedan jag började detta projekt redan i mars, men jag är mycket glad med den resulterande produkten och spänningen som det...

Hur komma åt 5 knappar genom 1 Arduino ingång

med den här metoden jag ska visa dig hur du kan använda 5 (eller ännu mer) ingångar via 1 Arduino stift. Dessa knappar kommer endast läsas korrekt om bara en skjuts när som helst ändå.När vi går igenom det jag ska förklara vad bakgrunden info du behö...

Arduino nybörjare och grundläggande elektronik Kit Primer

lärde jag mig att en av mina systerdöttrar hade ett intresse för programmering. Hon arbetade med robotics på gymnasiet och har en sommar praktikplats där de hade Arduinos. Jag tror att hon kunde låna en Arduino för att experimentera med hemma men var...

Online grafer med ingenting men en Arduino, Ethernet Shield och Sensor

Slutligen har jag beslutat att lägga några av mina befintliga projekt på instructables. Här är anpassade från mitt Super Graphing Data Logger projekt.Vad är Super Graphing Data Logger (SGDL)? Det är en Arduino projekt som integrerar dataloggning och...

Automatiska bevattningssystem med kapacitiv sond och Arduino på billiga (och jag menar det)

Varning: Jag är inte en elektronikingenjör, så jag inte kan ge någon garanti för design (mycket mindre en implementering). Jag vet bara presenteras lösningen fungerade för mig minst 5-6 månader (så jag inte kan ens garantera dess tillförlitlighet öve...

Arduino få upp och flytta

som vi alla tillbringa en ökande mängd tid sitta vid vårt bord är det lätt att bli uppslukad av det vi gör och lös reda på tid.Det sägs att vi ska få upp och flytta från vår plats minst en gång varje timme, men vem vill titta på klockan?Med en mycket...

Arduino OLED termometer och Hygrometer med DHT11 för nybörjare

Hej! Jag ska visa dig hur man gör en Arduino OLED termometer och hygrometer * med DHT11.OLED vi använder idag är 1.3″ tum i storlek, funktioner 128 × 64 pixlar och använder SPI bussen. På nästa steg hittar du mer nyttig information om OLED tech och d...

ARDUINO gränssnitt och konverterare för INPUT/OUTPUT digital/analog

CE schéma réunit toutes les gränssnitt ou convertisseurs que j'utilise avec mes microcontrôleurs Häll piloter mes systèmes (gaine de ventilation chauffante régulation de température, portail automatisé, fyra thermique, monte avgift, station de pompag...

Arduino cykel larm och ljus

detta larm är ett bra sätt att varna dig om någon bråkar med din cykel. Jag hade en cykel stulen ett tag tillbaka och beslutade att det måste finnas ett bättre sätt att hålla min cykel säkert. När jag sökte för cykel larm, var allt jag kunde hitta la...