Commander une Del avec Ardublock Déscriptif de la carte Arduino Installer Ardublock Faire de la musique avec Arduino Commander un Servomoteur Contrôler un robot avec le LM293 et un joystick utiliser un Joystick Contrôler un moteur avec le LM293 Photoresistance et hystérésis interrupteur et rebond Mesurer un champ électrique Communiquer en 433MHz Commander une diode en fonction de la lumière avec Arduino Oscilloscope avec Processing commander l’Arduino par IR Communiquer sans fil avec Arduino Fabriquer une PlacTest pour Arduino
Accueil du site | Accessibilité | Rechercher | Menu | Contenu | Plan du site | | Contact

°°TechNoLand°°

°°TechNoLand°°

 
Voir en ligne

interrupteur et rebond

21 janvier 2013 - Dernier ajout 27 mars 2014
par chamayou

ArduBlock est un plugin pour l’IDE Arduino qui permet de programmer par boîte de fonctions et qui génère ensuite le code C pour l’Arduino !

Diaporama de présentation

 Activité 2 : faire clignoter une del

matériel : del

 Activité 3 : diode commandé par interrupteur

matériel : del + interrupteur + 2 resistances 10kOhms

Programme 1 : la diode s’allume si on appuie

Programme 2 : la diode change d’état à chaque pression

Réaliser un programme qui fait allumer la diode quand on appuie sur l’interrupteur et qui l’éteint quand on appuie à nouveau.

#define LED xx // the pin for the LED
#define BUTTON x // the input pin where the pushbutton is connected
int val = 0; // val will be used to store the state of the input pin

void setup() {
pinMode(LED, OUTPUT); // tell Arduino LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}

void loop(){
val = digitalRead(BUTTON); // read input value and store it
if (val == HIGH) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}

source : Blog du Clergeot !

Les rebondissements :

Tester ce programme :

#define LED xx
#define BUTTON x
// the pin for the LED
// the input pin where the
// pushbutton is connected
int val = 0;
// val will be used to store the state of the input pin
int old_val = 0; // this variable stores the previous value of "val"
int state = 0; // 0 = LED off and 1 = LED on

void setup() {
pinMode(LED, OUTPUT);
// tell Arduino LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}

void loop(){
val = digitalRead(BUTTON); // read input value and store it
// check if there was a transition
if ((val == HIGH) && (old_val == LOW)){
state = 1 - state;
delay(10);
}
old_val = val; // val is now old, let's store it
if (state == 1) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}

Il existe un phénomène de rebond ou de clignotement lorsqu’on utilise des interrupteurs mécaniques. Le problème est d’autant plus important lorsqu’on utilise des contacteurs en métal qui admettent une certaine élasticité. Au moment de la connexion ou de la déconnexion, les contacteurs peuvent rebondir et peuvent fausser le résultat de l’interruption. Le nombre et la durée des changements dépendent du type d’interruption, ils se réalisent le plus souvent en quelques millisecondes. Dans le cas de l’utilisation d’un interrupteur pour démarrer un matériel électrique, le rebond n’est pas considéré comme un gros problème. Cependant, s’il est utilisé pour contrôler un matériel, plusieurs interruptions pourraient être nuisibles pour le matériel.

Pour en savoir plus :

http://home.roboticlab.eu/fr/examples/digi/switch_debounce

http://www.pobot.org/Anti-rebond-electronique.html

Fonctionnement de la plaque de prototypage :


calle

calle