Bonjour
Julien, 32 ans et médiateur scientifique pour les jeunes.
Je me lance depuis peu dans la programmation via Arduino (je connais pas mal Scratch et mBLock dans le cadre de mon travail mais je cherche à aller plus loin).
Je me suis procuré un kit de démarrage et quelques cartes "Arduino nano" (de Elegoo) et je cherche à créer un programme pour un projet de robotique pour des jeunes. Malgré plusieurs heures à regarder des tutos sur divers sites, des vidéos etc... Je bloque sur un problème dans mon montage...
Dans l'idée, je voudrais activer un servo-moteur seulement lorsqu'un bouton-poussoir est pressé. Pour indiquer que la commande est prise en compte, le fait d'appuyer sur ce bouton allumera d'abord une LED puis après un délai, activera le servo-moteur.
Enfin, après un lap de temps , je voudrais que le servo-moteur retourne sur sa position initiale.
J'ai fait un test de câblage via TinkerCAD (je vous laisse un screenshot) qui s'avère fonctionnel. Donc je procède au montage sur une breadboard (allumage de la nano via le câble PC) et cela fonctionne...par moment. Il semble y avoir un "mauvais contact" (ou c'est moi qui suis mauvais ) quelque part mais impossible de savoir où. J'ai démonté le tout plusieurs fois pour recommencer et j'ai toujours un souci (et pas forcément le même...).
De plus, le seul moment où j'ai pu faire fonctionner le circuit correctement, c'était via une alimentation avec le câble PC mini-USB. Dès que j'ai mis un coupleur de pile pour remplacer la source d'alimentation, ça ne fonctionnait plus. (J'ai lu quelques sujets sur l'histoire des piles/batteries etc... Mais j'avoue être largué quand même... (J'ai des connaissances de bases pour animer des clubs de robotique, mais ça ne suffit pas apparemment ici).
Plan TinkerCAD :
Je vous laisse également le programme ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 // C++ code // #include <Servo.h> Servo servo_3; void setup() { pinMode(7, OUTPUT); // LED Rouge (indique la position fermée du servo-moteur) pinMode(8, OUTPUT); // LED Orange (indique la prise en compte de la pression de l'interrupteur) pinMode(12, OUTPUT); // LED Verte (indique la position ouverte du servo-moteur) servo_3.attach(3, 500, 2500); pinMode(2, INPUT); // Servo_moteur digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(12, LOW); servo_3.write(0); } void loop() { if (digitalRead(2) == 0) { delay(10); // Wait for 10 millisecond(s) digitalWrite(7, HIGH); digitalWrite(12, LOW); digitalWrite(8, HIGH); delay(5000); // Wait for 5000 millisecond(s) digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(12, HIGH); servo_3.write(60); delay(5000); // Wait for 5000 millisecond(s) servo_3.write(0); digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(12, LOW); } }
Si quelqu'un peut m'éclairer sur ce que j'ai mal fait pour rectifier le tir, je suis preneur.
Merci d'avance pour votre aide !
Julien
Partager