Stap 5: Lezing schakelaar staat met een microcontroller
Merk op dat de lay-out hieronder een 10K pull-up weerstand toont, maar voor de code die ik gebruik de 'ingebouwde' pull-up weerstand die u inschakelen kunt door een invoer pin op HIGH output (het is vrij netjes!) Als u de interne pull-up gebruikt kunt u de externe een overslaan.
/ * Betere Debouncer - dit debouncing circuit is ruwer, en zal werken met tilt switches! */
/ * http://www.ladyada.net/learn/sensor/tilt.html * /
int inPin = 2; het nummer van de invoer pin
int outPin = 13; het nummer van de uitgang-pins
int LEDstate = hoog; de huidige status van de uitgang-pins
int lezen; de huidige lezing van de invoer pin
int vorige = laag; de vorige lezing van de invoer pin
de follow-variabelen zijn lange van omdat de tijd, in milliseconden, gemeten
snel zal uitgegroeid tot een groter aantal dan kan worden opgeslagen in een int.
lange tijd = 0; de laatste keer dat de uitgang-pins was van een knevel gevoorzid
lang debounce = 50; de tijd dat ontdendering, verhogen als de uitvoer flikkert
VOID Setup
{
pinMode (inPin, INPUT);
digitalWrite (inPin, hoge); inschakelen van de ingebouwde in pull-up weerstand
pinMode (outPin, uitvoer);
}
void loop
{
int switchstate;
lezen = digitalRead(inPin);
Als de schakeloptie hebt gewijzigd, als gevolg van stuiteren of dringende...
Als (lezen! = vorige) {}
de debouncing timer reset
tijd = millis();
}
Als ((millis()-time) > debounce) {}
Wat de schakelaar is, zijn er geweest voor een lange tijd
Dus laten we vestigen op het!
switchstate = lezing;
Nu het omkeren van de uitgang van de pin13 LED
Als (switchstate == HIGH)
LEDstate = laag;
anders
LEDstate = hoog;
}
digitalWrite (outPin, LEDstate);
Sla de laatste lezing, dus we een lopende telling houden
vorige = lezing;
}