Ligne 6 : |
Ligne 6 : |
| | image = [[File:StopHand.png|40px|alt=Stop]] | | | image = [[File:StopHand.png|40px|alt=Stop]] |
| | textstyle = color: red; font-weight: bold; font-style: italic; | | | 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' | + | | text = Les senseur "Tilt" contiennent des petites billes à l'intérieur. Il est normal que ces billes "rebondissent/tressautent" dans le cylindre. ne soyez donc pas surpris si le contact est quelques-fois intermittent plutôt que 'constant'. |
| }} }} | | }} }} |
| | | |
| [[Fichier:Tilt-Ball-USE-01.jpg]] | | [[Fichier:Tilt-Ball-USE-01.jpg]] |
| | | |
− | [[Fichier:Tilt-Ball-USE-02.jpg]]
| + | {{ADFImage|Tilt-Ball-USE-02.jpg}} |
| | | |
− | == Lire le swith avec un microcontroleur == | + | == Lire le senseur 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.
| + | Notez que le schéma ci-dessous utilise une résistance PullUp de 10K mais que dans le code, nous avons utilisé la résistance PullUp intégrée au microcontrolleur (que l'on active en placant la broche en sortie et en HIGH, franchement confortable!). |
| | | |
− | [[Fichier:Tilt-Ball-USE-03.jpg]]
| + | Si vous disposez d'une résistance pull-up interne, vous pouvez laisser la résistance externe. |
| | | |
− | <nowiki> /* Better Debouncer | + | {{ADFImage|Tilt-Ball-USE-03.jpg}} |
| + | |
| + | <nowiki> /* Une meilleure détection anti-rebond (Better Debouncer) |
| * | | * |
− | * This debouncing circuit is more rugged, and will work with tilt switches! | + | * Ce circuit de déparasitage est plus robuste, et fonctionnera avec les senseur "Tilt"! |
| * | | * |
− | * http://www.ladyada.net/learn/sensor/tilt.html | + | * Original: http://www.ladyada.net/learn/sensor/tilt.html |
| + | * Traduction: par "MCHobby" vente de kit et composant. |
| + | * http://mchobby.be/wiki/index.php?title=Tilt_Ball |
| */ | | */ |
− | int inPin = 2; // the number of the input pin | + | int inPin = 2; // Le numéro de la broche/pin d'entrée |
− | int outPin = 13; // the number of the output pin | + | int outPin = 13; // Le numéro de la broche/pin de sortie |
− | int LEDstate = HIGH; // the current state of the output pin | + | int LEDstate = HIGH; // Etat actuel de la broche de sortie (la LED) |
− | int reading; // the current reading from the input pin | + | int reading; // Contient la valeur lue sur la broche d'entrée |
− | int previous = LOW; // the previous reading from the input pin | + | int previous = LOW; // Contient la précédente valeur lue sur la broche d'entrée |
− | // the follow variables are long's because the time, measured in miliseconds, | + | // Les variables suivantes sont de type "long" parce que nous allons mesure le temps (en milisecondes). |
− | // will quickly become a bigger number than can be stored in an int. | + | // Ce temps deviendra vite de grands nombres qui ne pourrons pas être stockés dans un simple entier (type "int"). |
− | long time = 0; // the last time the output pin was toggled | + | long time = 0; // La dernière fois que la broche de sortie à changé d'état |
− | long debounce = 50; // the debounce time, increase if the output flickers | + | long debounce = 50; // Temps de déparasitage (debounce time), a augmenter si la sortie clignote. |
| void setup() | | void setup() |
| { | | { |
− | pinMode(inPin, INPUT);
| + | pinMode(inPin, INPUT); |
− | digitalWrite(inPin, HIGH); // turn on the built in pull-up resistor
| + | digitalWrite(inPin, HIGH); // activer la résistance PullUp interne du microcontroleur |
− | pinMode(outPin, OUTPUT);
| + | pinMode(outPin, OUTPUT); |
| } | | } |
| void loop() | | void loop() |
| { | | { |
− | int switchstate;
| + | int switchstate; |
− | reading = digitalRead(inPin);
| + | reading = digitalRead(inPin); |
− | // If the switch changed, due to bounce or pressing...
| + | // Si le contact à changé, est-ce causé par un changement de |
− | if (reading != previous) {
| + | // position OU un parasite (bille qui trésaute)... |
− | // reset the debouncing timer
| + | if (reading != previous) { |
− | time = millis();
| + | // Remettre la minuterie/timer de déparasitage à 0 |
− | }
| + | time = millis(); |
− | if ((millis() - time) > debounce) {
| + | } |
− | // whatever the switch is at, its been there for a long time
| + | // attendre que l'on ai dépassé le temps de déparasitage |
− | // so lets settle on it!
| + | if ((millis() - time) > debounce) { |
− | switchstate = reading;
| + | |
− | // Now invert the output on the pin13 LED
| + | // peu importe la valeur de l'entrée (du tilt ball), elle y est depuis |
− | if (switchstate == HIGH)
| + | // assez longtemps. On peut donc compter sur sa fiabilité. |
− | LEDstate = LOW;
| + | switchstate = reading; |
− | else
| + | |
− | LEDstate = HIGH;
| + | // Maintenant, inverser l'état de la LED sur la pin 13 |
− | }
| + | if (switchstate == HIGH) |
− | digitalWrite(outPin, LEDstate);
| + | LEDstate = LOW; |
− | // Save the last reading so we keep a running tally
| + | else |
− | previous = reading;
| + | LEDstate = HIGH; |
| + | } |
| + | digitalWrite(outPin, LEDstate); |
| + | |
| + | // Mémoriser la dernière lecture |
| + | previous = reading; |
| }</nowiki> | | }</nowiki> |
| | | |
| {{Tilt-Ball-TRAILER}} | | {{Tilt-Ball-TRAILER}} |