Tussenliggende Arduino: In- en uitgangen (1 / 1 stap)

Stap 2: Arduino knop Debouncing

Voortzetting van de knop debouncing dat ik in mijn laatste Instructable geïntroduceerd, kunnen we millis() gebruiken om debounce knoppen zonder gebruik te maken van delay():

 //Button Press Detection - debounce with millis() int buttonPin = 7; boolean currentState = LOW;//stroage for current measured button state boolean lastState = LOW;//storage for last measured button state boolean debouncedState = LOW;//debounced button state int debounceInterval = 20;//wait 20 ms for button pin to settle unsigned long timeOfLastButtonEvent = 0;//store the last time the button state changed void setup(){ pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ currentState = digitalRead(buttonPin); unsigned long currentTime = millis(); if (currentState != lastState){ timeOfLastButtonEvent = currentTime; } if (currentTime - timeOfLastButtonEvent > debounceInterval){//if enough time has passed if (currentState != debouncedState){//if the current state is still different than our last stored debounced state debouncedState = currentState;//update the debounced state //trigger an event if (debouncedState == HIGH){ Serial.println("pressed"); } else { Serial.println("released"); } } } lastState = currentState; } 

In deze code die ik heb toegevoegd sommige nieuwe variabelen van de opslag:

Boole debouncedState = laag;
int debounceInterval = 20;
unsigned long timeOfLastButtonEvent = 0;

debouncedState slaat de debounced stand van de knop, dit is de toestand die we absoluut zeker van de knop zijn. Daarentegen currentStatus en lastState slaan de metingen van het huidige en vorige die we van de knop gemaakt, maar ze doen niet vertellen ons de toestand van een knop met zekerheid omdat ze kunnen worden beïnvloed door de knop chatter.

debounceInterval is het bedrag van ms te wachten op de knop pin te regelen voordat we zeker wat er weten in staat. Ik ben mijn laatste voorbeeld ik met behulp van 1ms, hier ben ik met behulp van 20 MS.

timeOfLastButtonEvent is gelijkaardig aan timeOfLastLedEvent in de laatste schets, het geeft een tijd te vergelijken met currentTime, zodat we hoeveel seconden zijn verstreken rekenen kunnen sinds de eerste detecteren een knooppers.

Wij herstellen timeOfLastButtonEvent telkens CurrentStatus niet gelijk is aan lastState:

Als (currentStatus! = lastState) {}

timeOfLastButtonEvent = currentTime;

}

Zodra voldoende tijd is verstreken zonder te herstellen timeOfLastButtonEvent, weten we dat de knop is geregeld in een debounced staat:

currentTime - timeOfLastButtonEvent > debounceInterval

Vervolgens kunnen we de huidige status van de opgeslagen ontdendering bijwerken als het is gewijzigd en zo ja, een gebeurtenis volgens de nieuwe ontdendering staat:

Als (currentStatus! = debouncedState) {}

debouncedState = currentStatus;

Als (debouncedState == HIGH) {}

Serial.println("pressed");

} else {}

Serial.println("Released");

}

}

Gerelateerde Artikelen

Tussenliggende Arduino: Ingangen en uitgangen

Tussenliggende Arduino: Ingangen en uitgangen

Voortzetting van mijn Intro met Arduino post, gaan dit Instructable over sommige iets geavanceerdere onderwerpen met Arduino, specifiek met betrekking tot het bewaken en beheren van vele in- en uitgangen. De volgende klasse omvat aansluiten van de Ar
Arduino Powered Home

Arduino Powered Home

Ik heb een paar updates in dit instructable sinds Aug 2014 ***Heb ik besloten om deze informatie te delen, zodat het anderen die hebben moeite helpen misschien om soortgelijke dingen met hun Arduino doen. Ik heb pas onlangs gekregen die betrokken zij
Hoe de code Arduinos

Hoe de code Arduinos

Dus ik was op zoek via de help-sectie van de Gemeenschap, toen ik zag sommige mensen waar problemen met de codering Arduinos, dus ik ben waardoor dit om te helpen.Voor dit Instructable moet u:ComputerArduino IDESommige delen van dit kunnen afwijken v
DIY Arduino Motor Shield [voor slechts $8!] (L298N 2x4A)

DIY Arduino Motor Shield [voor slechts $8!] (L298N 2x4A)

Vandaag, ik ga u tonen hoe te maken van een motor shield voor Arduino (rijder) tegen een lage prijs. Het werkt prachtig, haar bezit bijna alle kenmerken van de originele motor shield voor Arduino. Het bijna beschouwd als een kloon. De originele motor
Arduino RC auto met lange afstand en aangepaste zender.

Arduino RC auto met lange afstand en aangepaste zender.

Hallo! Dit is mijn eerste instructable.Daarin zal ik u tonen hoe te maken van een RC auto met Arduino en de draadloze nrf24l01 +-module, of hoe om te upgraden een goedkope 27 MHz RC auto.De oude RC auto, die van I het chassis, en de heli Controller n
Kloppend hart Candy kom met Arduino

Kloppend hart Candy kom met Arduino

Ik wilde een snoep kom voor trick or treat die eruit zag als een spooky hart sloeg onder de snoep. Ik hoop dat de jongere kinderen vindt het spooky en niet te eng. Ik weet zeker dat de tieners met geen kostuum en een kussensloop zal niet onder de ind
De Arduino-weerstation / thermostaat

De Arduino-weerstation / thermostaat

UPDATE:UPDATE: toevoegen dauwpunt berekeningenUPDATE: Wind toerentalbewakingIk heb altijd geïnteresseerd geweest in het toezicht op mijn lokale weer, en merkte het verschil tussen wat weather.com en accuweather.com lijkt mijn lokale weer, en wat zie
Rijden van RGB LED strips uit een Arduino

Rijden van RGB LED strips uit een Arduino

Kerstmis komt eraan en je kunt je afvragen hoe het kleurrijke en helder met een Arduino en een RGB LED strip te maken. Tenminste, was dat precies wat ik deed een jaar geleden en was niet kundig voor vondst geen duidelijke en eenvoudige instructies ov
Digitale venster Sticker (Arduino gecontroleerde)

Digitale venster Sticker (Arduino gecontroleerde)

een bumpersticker formaat L.E.D. matrix waarin afbeeldingen worden weergegeven in volgorde van een SD-kaart, voor de productie van een geanimeerde teken of "venster sticker." Arduino gecontroleerd! Ook bevat Windows, Mac en Linux code voor .xbm
Knop Arduino tutorial Arduino Tutorial

Knop Arduino tutorial Arduino Tutorial

wat is eenvoudiger en dommer dan een knop, u vragen...Ik zeg: achter een knop, onverwachte dingen kunnen verbergen. En binnen een programma dat verschillende dingen doet, behandeling van een knop kan worden lastig. Het aardige ding is dat een interes
Arduino auto g-Meter Display

Arduino auto g-Meter Display

ik maakte dit project voor mijn natuurkunde 308L klasse. Het is nog niet afgerond, maar het hele idee is hier voor iedereen om te repliceren.U kunt de meeste van deze onderdelen van hun goedkoper onderdelen, maar ik koos voor het gebruik van pre-en-k
DIY handheld LED lamp

DIY handheld LED lamp

Een lamp houdt groot belang in iemands leven. Ze zijn de bron van licht en ding voor u zichtbaar maken. Wanneer licht van een lamp wordt uitgestoten, het reizen in alle richtingen en na het slaan van een oppervlak dat het gaat om onze ogen en het obj
BOOGIE BOX: De elektromagnetische dansvloer

BOOGIE BOX: De elektromagnetische dansvloer

De BOOGIE-vak is een interactieve Herprogrammeerbare ding dat kan bijna alles dansen en is leuk om mee te spelen! U kunt bouwen uw eigen dansers en hen om te dansen met uw favoriete deuntjes choreograferen. U kunt om het even wat! Voeg gewoon de magn
DIY telefoon gecontroleerd FPV Rover (snelle & behendig)

DIY telefoon gecontroleerd FPV Rover (snelle & behendig)

Laten we bouwen een Bluetooth / WiFi controlled FPV Drone! RoverBot is dat een zeer educatieve Arduino gebaseerde ATV-drone. Het is eenvoudig te maken, eenvoudig te programmeren en is een groot voorgerecht project voor hobbyisten! De bot is zeer snel