Hur man gör en Arduino-kontrollerade cykel-ljus (4 / 7 steg)
Steg 4: Konfigurera den fysiska debouncer
ställa in knappen
int buttonInt = 0; stift 2 är avbrott 0
attachInterrupt (buttonInt, incrementProgram, RISING);
Denna kodrad innebär vi vill PIN-koden anges av buttonInt (digital pin 2) att fungera som ett avbrott. Vi vill att anropa funktionen incrementProgram, whenver det erfar en stigande kant. En stigande kant innebär helt enkelt en plats där spänningen hoppar upp mycket plötsligt (t.ex. När en knapp avslutar en anslutning till 5 volt)
Vi ska använda funktionen incrementProgram (visas nedan) att ändra nuvarande programmet Arduino är igång.
void incrementProgram() {
Serial.Print("Pressed!");
om (currentProgram == (NUMBER_OF_PROGRAMS - 1)) {
currentProgram = 0;
}
annat {
currentProgram = currentProgram + 1.
}
}
Kom ihåg dessa rader?
#define NUMBER_OF_PROGRAMS 6
för att växla mellan program
flyktiga int currentProgram = 0;
Gör de lite klokare nu? Anledningen till att vi har att lägga till nyckelordet flyktiga till nuvarande program är eftersom vi vill låta arduino vet att detta nummer ändras regelbundet och att detta är en normal sak som det inte bör galen om.
Problemet med detta är dock att när trycker på en knapp får det faktiskt studsade upp en ner lite (mycket snabbt) innan han gick över det slutliga värdet. Ta bort mycket av detta studsande och jämna ut övergången kommer vi att använda en RC-krets som ett lågpassfilter som kommer till stor del skärmen ut de mycket snabba "studsar". Tidskonstanten för denna särskilda RC-krets är ca 10 ms, som är allmänt långsammare än en människa kan trycka på en knapp, så dessa signaler ska vara opåverkad.
Eftersom de flesta Schmidt utlösare Invertera, visar den vänstra halvan av kopplingsschemat en knapp som faktiskt kommer att gå från 5 volt till 0 volt när du trycker på. Vi har dock detta avbrott på en digital pin, och den exakta innebörden av studsar i oförutsägbar. Åtgärda problemet vi kommer att använda en Schmidt utlösare som en grundläggande Analog till Digital omvandlare, med våra långsam glidande årsförändring från hög till låg i ett hopp från låg till hög, skicka ut en stigande kant, som ska utlösa vår avbrott.
Kopplingsschemat använder en mycket speciell Schmidt utlösare, och din kan vara annorlunda. Kolla databladet för att se exakt hur det ska funka, men Ställ in visas är mycket vanligt.
Vout ska anslutas till digital stift 2.