Différences entre versions de « Tilt Ball-Utiliser »
(Page créée avec « {{Tilt-Ball-NAV}} {{Traduction}} {{Tilt-Ball-TRAILER}} ») |
|||
| Ligne 1 : | Ligne 1 : | ||
{{Tilt-Ball-NAV}} | {{Tilt-Ball-NAV}} | ||
| − | {{ | + | {{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}} | ||
Version du 25 janvier 2013 à 11:42
| 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' |
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.
/* 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;
}
Source: Tilt Sensor. Created by LadyAda pour AdaFruit Industries
Traduit par Meurisse D. pour MCHobby.be
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.


