Bonjour,
J'ai réalisé un montage arduino qui fonctionne presque comme je le désire, mais je rencontre quelques problèmes.
Mon projet en quelques lignes :
Une lampe de chevet. Lorsqu'on l'allume à l'aide d'un interrupteur levier, le boitier s'ouvre à l'aide d'un bras guidé par un servo moteur, et un second bras vient appuyer sur le levier pour l'éteindre. Un objet très inutile et un peu "troll", dans l'idée de faire un cadeau de Noël un peu marrant.
Le programme fonctionne comme je le désire, le circuit (que vous pouvez trouver en PJ) réagit presque aussi comme je le désire.
Le problème que je rencontre :
Au repos, un des deux servos réagit comme si il recevait des petits pics de courant de la part de la pin arduino sur laquelle il est branché. Ce qui le fait faire des petits mouvements aléatoires. Ceci arrive environ toutes les 15 secondes, sinon il ne bouge pas.
Je précise que les servos ne jamais en même temps.
Voici les tests que j'ai réalisé pour en arriver à la conclusion que le problème venait de la carte :
J'ai inversé les deux servos pour savoir si le problème venait du servo lui-même, résultat, le servo qui bougeait au repos ne bouge plus, alors que l'autre se mets à bouger (le problème ne vient donc pas du servo).
J'ai également réalisé, avant ce montage, un circuit "test" avec des servos beaucoup moins puissants (SG90) et une autre alimentation dédiée (en 5V), sans passer par un régulateur de tension. Le problème apparaissait exactement de la même façon sur un des deux servos.
J'ai essayé 3-4 pins différentes pour commander ce servo et pour voir si le problème n'était pas lié à une pin en particulier, le problème persiste (C'est d'ailleurs pourquoi les pins de mon programme sont différentes de celles de mon circuit).
J'ai débranché la pin de "commande" du servo en question, pour voir si le problème venait de l'alimentation du servo => le servo ne bouge plus.
Y'a-t-il un montage particulier à réaliser pour commander les servos? Aurais-je oublié quelque chose dans mon programme, comme la configuration des pins en OUTPUT ?
Le programme :
#include <Servo.h>
int levierPin = 9;
int couverclePin = 12;
int brasPin = 10;
Servo couvercle;
Servo bras;
void setup() {
Serial.begin(9600);
pinMode(levierPin, INPUT);
couvercle.attach(couverclePin);
bras.attach(brasPin);
}
void loop() {
int levierState = digitalRead(levierPin);
delay(500);
if( levierState != 0 ){
Serial.println("ON");
for (int position = 0; position <= 45; position++) {
couvercle.write(position);
delay(15);
}
delay(500);
for (int position = 140; position >= 0; position--) {
bras.write(position);
delay(15);
}
delay(500);
for (int position = 0; position <= 140; position++) {
bras.write(position);
delay(15);
}
delay(500);
for (int position = 45; position >= 0; position--) {
couvercle.write(position);
delay(15);
}
} else {
Serial.println("OFF");
}
}
Un énorme merci d'avance à ceux qui prendront le temps de me lire et qui m'aideront à résoudre ce problème. C'est relativement urgent puisque Noël approche, et j'aimerais beaucoup que ce projet aboutisse, pour ne pas avoir à retomber sur un cadeau "bateau"...

