Je souhaite pour un projet faire pivoter un servomoteur lorsqu'un câble branché en A0 se débranche.
J'ai réalisé un programme cependant il arrive que le servomoteur ne pivote pas lorsque j'enlève le câble au A0. Il arrive aussi que le servomoteur pivote seul sans action de ma part.
L'autre extrémité du fil est raccordée à quoi?
À priori, ton entrée A0 est en l'air lorsque le fil en question est déconnecté.
Tu lis A0 comme si tu voulais lire une tension analogique, puisque tu fais un analogRead() mais dans ton if tu testes si la valeur est supérieure ou égale à 1. Ce qui pour une conversion analogique/digitale est très faible et se situe dans le bruit de conversion pour une entrée qui serait connectée à GND.
Explique clairement ce que tu veux.
Mon fil branché en A0 est l'un des câbles d'un câble Jack relié à mon PC qui envoi de la musique.
Lorsque j'enlève le câble Jack, je souhaite donc que 5 secondes après le servomoteur pivote de 180 °.
D'après ton programme, au repos, tu as un 1 (HIGH) et, quand on retire le câble, un 0 (LOW).
Dans ce cas, tu dois mettre une résistance de PULL_DOWN, 10k, sur ton entrée 2.
Actuellement ça ne fonctionne pas toujours quand le câble est enlevé, parce que, sans PULL_DOWN, ton entrée 2 est dite "en l'air" et peut capter n'importe quoi.
Tu peux faire sans résistance externe, en inversant ta logique, faire que, quand le câble est branché tu lises un 0 (LOW) et quand le câble débranché tu lises un 1 (HIGH), en utilisant la résistance interne PULL_UP de l'Arduino, ainsi:
// C++ code
//
#include <Servo.h>
int i = 0;
Servo servo_9;
void setup()
{
pinMode(2, INPUT_PULLUP);
servo_9.attach(9, 500, 2500);
}
void loop() {
i = digitalRead(2);
if (i== HIGH) // Si le câble est débranché
{
delay(5000); // attendre 5000 milliseconds
servo_9.write(180);
}
else {
servo_9.write(0);
}
}
Je reviens vers vous parce que j'ai rencontré un problème.
J'ai voulu faire fonctionner l'ensemble en l'alimentant avec une pile.
J'ai réalisé les tests avec une pile 9V. La LED de la carte arduino s'allume mais le servomoteur ne tourne pas. Je l'ai alimenté dans un cas avec le 5V de la carte arduino et dans un autre cas directement avec la pile.
J'ai réalisé le même test avec 4 piles AA en série et cela ne fonctionne toujours pas.
Je souhaite que l'ensemble fonctionne 1h. Comment dois-je faire pour y parvenir ?
La pile 9V est à oublier pour ce type de montage, pas assez de "pêche".
Ce qui pourrait fonctionner, est un powerbank
Le défaut de ces powerbank est que si l'on ne tire pas assez de courant, il s'arrêtent.
Peut-être qu'avec un servo, ça tire assez?
Si tu en as un sous la main, ça vaut la peine d'essayer.
Autrement, dis moi quel modèle de servo tu emploies et, si j'ai ça, je fais des essais.
Autre solution pour maintenir le powerbank est de consommer avec une résistance.
Bonjour,
Pour mes projets autonomes j'utilise des "Boucliers 18650". (rechercher sur le net "18650 battery shield")
Ces boitiers fournissent des broches de sortie en 5V et en 3V ainsi qu'une prise USB.
Ils existent avec 1, 2 ou 4 batteries. Et ils sont équipés d'un chargeur de batteries.
Oui j'ai bien un sg90. est-il préférable que j'utilise 4 piles aa en série ??
J'ai aussi modifier mon programme :
// C++ code
#include <Servo.h>
int i = 0;
Servo servo_10;
void setup()
{
pinMode(A0, INPUT);
servo_10.attach(10, 500, 2500);
}
void loop() {
i = analogRead(A0);
if (i >50) // Si le câble est débranché
{
delay(6800);
servo_10.write(180);
}
else
{
servo_10.write(0);
}
}
"Oui j'ai bien un sg90. est-il préférable que j'utilise 4 piles aa en série ??"
C'est fragile cette petite bête. Ne lui jette pas du 9v comme ça et ne l'alimente pas par la carte, elle n'aime pas ça.
J'utilisais deux batteries 18650 en série avec un stepdown réglable de mémoire) c'est super pour les tests, c'est très polyvalent. La solution apportée plus haut est tout aussi valable.
Les piles AA en série c'est suffisant pour un sg90 à mon avis mais les piles ça s'use vite... D'où les batteries
Si ton invention se trouve sur ton pc, n'oublie pas que tu peux trouver du 5v sur un port USB (et sur l'ATX). Ensuite, définis ton besoin, le SG90 est bien pour apprendre et effectuer des tests mais rarement suffisant lorsque la notion de couple entre en jeu. En plus, fragile qu'il est, ne t'y Attach pas trop (hihi) car ça n'est vraiment pas solide.
Pour info, sa consommation en pointe est de 600mA à 6v.