Offline
Newbie
Karma: 0
Posts: 18
|
 |
« on: January 06, 2013, 04:25:59 am » |
bonjour levé a 5h30 un dimanche car un problème me tourne en boucle dans la tête: :un bouton poussoir doit déclencher plusieurs evenements: -un servo moteur qui ferais un aller retour de sa course (0°->180°->0°) ( pour remettre en place l'objet qui bascule et active le bouton) -un relais reed (qui perment le declanchement d'un appareil photo) - une séquence lumineuse (à définir , mais dans l'idée un peu comme quand on touchait une cible dans les vieux flipper) envoyé sur des transistores qui commandent des lampe en 24 v  un petit schema , mais je ne sais pas si c'est plus claire, Si l'arduino commande une animation lumineuse , En cas de bascule de la cible (a gauche rouge jaune blanc sur le dessin) sur le bouton, l'arduino doit donc déclencher le relais reed entre lui et l'appareil photo, actionner le servo pour remettre la cible en place ( elle est sur charnière en bleu pale sur le dessin) et déclencher une autre animation lumineuse, (je n'ai pas matérialisé les aspect lumineux sur le dessin mais je pense être en mesure de me débrouiller) je trouve plein d'exemples de codes avec des bouton et des servo mais c'est toujour du control en temps réel, moi je veux que le servo face un allé retour suite a l’impulsion, qu'une (voir plusieur) broche(s) passe a l'etat haut et que le programme reprenne sont train train, si ceci inspire un arduiniste chevronné, ca m'aiderait bien bonne journée, année....
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #1 on: January 06, 2013, 05:05:34 am » |
... je trouve plein d'exemples de codes avec des bouton et des servo mais c'est toujour du control en temps réel, moi je veux que le servo face un allé retour suite a l’impulsion, qu'une (voir plusieur) broche(s) passe a l'etat haut et que le programme reprenne sont train train,
si ceci inspire un arduiniste chevronné, ca m'aiderait bien
Bonjour pas besoin d'etre chevronné, il faut jouer avec les exemples fait rapidement et commenté ça compile , pas testé en reel normalement appui sur le bouton , le servo fait un aller/retour, la led 13 fait un ON OFF #include <Servo.h>
Servo myservo;
const int buttonPin = 2; // bouton sur pin 2 const int ledPin = 13; // led 13 sortie pour reed
int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); myservo.attach(9); // servo sur pin 9 myservo.write(0); //initialise le servo en position repos zero delay(20); // pour stabilisation }
void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { // bouton etat haut detecté digitalWrite(ledPin, HIGH); // led ON myservo.write(180); // va en butée inverse delay(250); // stabilisation 250 ms digitalWrite(ledPin, LOW); // led OFF myservo.write(0); // retour en zero delay(20); // pour stabilisation
} }
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1665
Do or DIY
|
 |
« Reply #2 on: January 06, 2013, 05:14:16 am » |
Euuuhh je vois où est ton problème ? Ou est-ce que ça bloque ? Je visualise bien ton montage et du coup je comprends encore moins tes doutes xD
EDIT : doublé xD
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #3 on: January 06, 2013, 06:04:41 am » |
merci pour vos réponses , rectification , ca semble plutot bien, je modifie les valeur de timming mais ca semble être ok avec toutefois des parasites, peut on faire quelque chose pour gérer les rebonds et autres parasite?? un moindre geste qui frolle la patte 2 et ça déclenche, même un simple fil relié à rien inséré suffit à déclencher.
|
|
|
|
« Last Edit: January 06, 2013, 06:20:45 am by moelleux »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #4 on: January 06, 2013, 06:14:05 am » |
merci pour vos réponses , rectification , ca semble plutot bien, je modifie les valeur de timming mais ca semble etre ok avec toutefois des parasites peut on faire quelque chose pour gérer les rebonds et autres parasite??
bonjour qu'appel tu exactement "parasite" ? manque surement un pull down entre gnd et le contact , compte tenu de la longueur des cables en mode ouvert "ça attrape' n'importe quoi mets une R 10K (valeur non critique) entre GND et pin 2 edit : et la question qui aurait du etre posée depuis le debut !  tu prend la puissance du servo directement sur le 5V de l'arduino ?  pas d'alim externe ? 
|
|
|
|
« Last Edit: January 06, 2013, 06:23:40 am by Artouste »
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1665
Do or DIY
|
 |
« Reply #5 on: January 06, 2013, 06:23:02 am » |
Je pense plus qu'il s'agit d'un effet de rebond
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #6 on: January 06, 2013, 06:25:12 am » |
Je pense plus qu'il s'agit d'un effet de rebond
bonjour B@tto ou un tirage sur l'alim 5V de l'arduino si la puissance servo est piquée dessus (cas classique)
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #7 on: January 06, 2013, 06:26:17 am » |
rebonjour ca a l'air mieux effectivement ,(c'est ce que je faisait de mon coté pendant ta reponse,  merci, mais saurais tu comment je peux sécuriser la chose histoire de ne pas déclencher sans raisons , car même si c'est moins fréquent, ca arrive encore oui , je suis sur le 5v de l'arduino, pas bien???
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #8 on: January 06, 2013, 06:30:04 am » |
rebonjour ca a l'air mieux effectivement ,(c'est ce que je faisait de mon coté pendant ta reponse,  merci, mais saurais tu comment je peux sécuriser la chose histoire de ne pas déclencher sans raisons , car même si c'est moins fréquent, ca arrive encore oui , je suis sur le 5v de l'arduino, pas bien??? tu a mis une 10K entre GND et Pin2 ? non "pas bien"  d'alimenter le servo par l'arduino fais un test avec un 5V externe sur le rouge servo, ne pas oublier de relier les GND
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #9 on: January 06, 2013, 06:46:11 am » |
meme sans le servo dans le circuit, ca"clignotte" de temps en temps
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #10 on: January 06, 2013, 06:56:00 am » |
meme sans le servo dans le circuit, ca"clignotte" de temps en temps
alors exercice suivant : regarde l'exemple digital---> debounce et integre le dans ton code 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #11 on: January 06, 2013, 07:13:45 am » |
pour etre precis, le montage pausé sur la table, sans rien toucher , la led clignote, de temps en temps ,
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2423
|
 |
« Reply #12 on: January 06, 2013, 07:23:02 am » |
pour etre precis, le montage pausé sur la table, sans rien toucher , la led clignote, de temps en temps ,
avec l'integration du debounce , comme exposé au dessus ? 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #13 on: January 06, 2013, 08:28:29 am » |
tu m'en dirais un peut plus??? c'est quoi le debouncing , (en gros je vois , mais techniquement ? du code a rajouter?) merci
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1665
Do or DIY
|
 |
« Reply #14 on: January 06, 2013, 09:03:06 am » |
Dans la plupart du temps rien à par du code  En fait quand tu appuis sur un bouton, c'est jamais parfait, si tu avais un oscillo du verrais que pendant quelques millisecondes le signal oscille. Donc une technique simple consiste à mettre un temps d'attente après l'appuie, puis de contrôler que le bouton est bien à l'état attendu. Pour éviter les interférences, c'est quand même mieux de mettre l'entrée à l'état haut, ce qui peut se faire en interne via la commande pinMode(NuméroDuPin, INPUT_PULLUP); qui va activer une résistance en interne de pullup et mettre par consequent ton pin à 5V. Ensuite il suffit de raccorder au bouton, relié lui même à l'autre bout au GND, ainsi à l'appui la tension passe à zero et pas besoin d'autre composants et généralement c'est plus stable.
|
|
|
|
|
Logged
|
|
|
|
|
|