Tilt Sensor handledning (5 / 5 steg)
Steg 5: Läsa switch stat med en mikrokontroller
Observera att layouten nedan visar en 10K pull-up resistor utan för koden använder jag den "inbyggda" pull-up resistor som du kan aktivera genom att ange en ingångsstift HIGH output (det är ganska snyggt!) Om du använder kan du hoppa över den yttre som inre pull-up.
/ * Bättre Debouncer - denna debouncing krets är mer robust, och kommer att arbeta med tilt växlar! */
/ * http://www.ladyada.net/learn/sensor/tilt.html * /
int inPin = 2; numret på ingångsstiftet
int outPin = 13. numret på utgångsstiftet
int LEDstate = hög; det aktuella läget för utgångsstiftet
int läsning; den nuvarande behandlingen från ingångsstiftet
int tidigare = låg; den föregående behandlingen från ingångsstiftet
följande variabler är långa eftersom tiden, i millisekunder,
kommer snabbt att bli ett större antal än kan lagras i en int.
lång tid = 0; sista gången utgångsstiftet var växlas
långa Dämpningstid = 50; debounce tiden, öka om utdata flimrar
void setup()
{
pinMode (inPin, ingång);
digitalWrite (inPin, hög); Aktivera den inbyggda i pull-up resistor
pinMode (outPin, utgång);
}
void loop()
{
int switchstate;
läsning = digitalRead(inPin);
Om växeln ändras, studsa eller trycka...
om (läsa! = föregående) {
nollställa debouncing timern
tid = millis();
}
om ((millis()-time) > Dämpningstid) {
Vad är på, dess varit där länge
så kan bosätta sig på det!
switchstate = behandlingen.
Nu Invertera utgången på pin13 LED
om (switchstate == hög)
LEDstate = låg;
annat
LEDstate = hög;
}
digitalWrite (outPin, LEDstate);
Spara den sista behandlingen så vi hålla en kör stämmer
tidigare = behandlingen.
}