Stap 4: Instellen van de fysieke debouncer
knop instellen
int buttonInt = 0; pin 2 is interrupt 0
attachInterrupt (buttonInt, incrementProgram, stijgt);
Die lijn van code betekent dat we willen de pin aangeduid met buttonInt (digitale pin 2) om te functioneren als een interrupt. Wij willen dat de functie incrementProgram, whenver het ervaringen een stijgende rand. Een stijgende rand betekent simpelweg een plaats waar de spanning springt zeer plotseling (bijvoorbeeld als u een knop hebt voltooid een verbinding met 5 volt)
We gaan om de functie incrementProgram (zie onderstaande afbeelding) om te veranderen van het huidige programma dat de Arduino wordt uitgevoerd.
ongeldig incrementProgram() {}
Serial.Print("pressed!");
Als (currentProgram (NUMBER_OF_PROGRAMS - 1) ==) {}
currentProgram = 0;
}
else {}
currentProgram = currentProgram + 1;
}
}
Onthoud deze regels?
#define NUMBER_OF_PROGRAMS 6
voor het schakelen tussen programma 's
vluchtige int currentProgram = 0;
Nu maken ze een beetje meer zin? de reden dat we moeten het vluchtige trefwoord toevoegen aan huidige programma is omdat wij laten weten willen dat dit nummer regelmatig veranderen zal en dat dit een normale zaak dat het moet niet uit freak over arduino.
Het probleem daarbij is echter dat wanneer een knop wordt ingedrukt, het eigenlijk stuiterde van een naar beneden een beetje (zeer snel) voordat afwikkeling op de verkoopcommissie. We gaan een RC circuit moet worden gebruikt als een lowpass filter dat zal grotendeels scherm uit de zeer snelle "stuitert" verwijderen van veel van deze stuiteren en gladstrijken van de overgang. De tijdconstante van deze bijzondere RC-kring is ongeveer 10 ms, dat is over het algemeen trager dan een mens kan druk op een knop, en dus deze signalen moet onaangetast.
Aangezien de meeste Schmidt Triggers zijn omkeren, toont de linker helft van het circuit diagram een knop die daadwerkelijk zal gaan van 5 volt naar 0 volt wanneer gedrukt. Nochtans, hebben wij deze interrupt op een digital pin, en de precieze aard van het stuiteren in onvoorspelbaar. Om op te lossen dit probleem die we een Schmidt-Trigger als een fundamentele analoog naar digitaal converter, en nemen onze traag bewegende verandering van hoog naar laag in een sprong van laag naar hoog gebruiken zullen, het verzenden van een stijgende rand, die leiden onze interrupt tot moet.
Het circuit diagram maakt gebruik van een zeer bijzondere Schmidt trigger en jou kan afwijken. Controleer de data sheet om te zien hoe het precies zou moeten werken, maar de set-up komt te staan is heel gebruikelijk.
Vout moet worden aangesloten op de digitale pen 2.