Modifications

Sauter à la navigation Sauter à la recherche
2 333 octets ajoutés ,  25 janvier 2013 à 11:42
aucun résumé de modification
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}}
29 917

modifications

Menu de navigation