Ligne 1 : |
Ligne 1 : |
| {{Tilt-Ball-NAV}} | | {{Tilt-Ball-NAV}} |
| | | |
− | {{Traduction}} | + | {{bloc-etroit |
| + | |text= {{Ambox |
| + | | type = delete |
| + | | image = [[File:StopHand.png|40px|alt=Stop]] |
| + | | textstyle = color: red; font-weight: bold; font-style: italic; |
| + | | text = Tilt switches have a little ball inside, and it will bounce around a little inside the can. Don't be surprised if the connection is a little intermittant instead of 'constant' |
| + | }} }} |
| + | |
| + | [[Fichier:Tilt-Ball-USE-01.jpg]] |
| + | |
| + | [[Fichier:Tilt-Ball-USE-02.jpg]] |
| + | |
| + | == Lire le swith avec un microcontroleur == |
| + | Note that the layout above shows a 10K pullup resistor but for the code I use the 'built-in' pullup resistor that you can turn on by setting an input pin to HIGH output (its quite neat!) If you use the internal pull-up you can skip the external one. |
| + | |
| + | [[Fichier:Tilt-Ball-USE-03.jpg]] |
| + | |
| + | <nowiki> /* Better Debouncer |
| + | * |
| + | * This debouncing circuit is more rugged, and will work with tilt switches! |
| + | * |
| + | * http://www.ladyada.net/learn/sensor/tilt.html |
| + | */ |
| + | int inPin = 2; // the number of the input pin |
| + | int outPin = 13; // the number of the output pin |
| + | int LEDstate = HIGH; // the current state of the output pin |
| + | int reading; // the current reading from the input pin |
| + | int previous = LOW; // the previous reading from the input pin |
| + | // the follow variables are long's because the time, measured in miliseconds, |
| + | // will quickly become a bigger number than can be stored in an int. |
| + | long time = 0; // the last time the output pin was toggled |
| + | long debounce = 50; // the debounce time, increase if the output flickers |
| + | void setup() |
| + | { |
| + | pinMode(inPin, INPUT); |
| + | digitalWrite(inPin, HIGH); // turn on the built in pull-up resistor |
| + | pinMode(outPin, OUTPUT); |
| + | } |
| + | void loop() |
| + | { |
| + | int switchstate; |
| + | reading = digitalRead(inPin); |
| + | // If the switch changed, due to bounce or pressing... |
| + | if (reading != previous) { |
| + | // reset the debouncing timer |
| + | time = millis(); |
| + | } |
| + | if ((millis() - time) > debounce) { |
| + | // whatever the switch is at, its been there for a long time |
| + | // so lets settle on it! |
| + | switchstate = reading; |
| + | // Now invert the output on the pin13 LED |
| + | if (switchstate == HIGH) |
| + | LEDstate = LOW; |
| + | else |
| + | LEDstate = HIGH; |
| + | } |
| + | digitalWrite(outPin, LEDstate); |
| + | // Save the last reading so we keep a running tally |
| + | previous = reading; |
| + | }</nowiki> |
| | | |
| {{Tilt-Ball-TRAILER}} | | {{Tilt-Ball-TRAILER}} |