Wouah a écrit:Si certains utilisent l'arduino pourriez-vous partager vos expériences, comment avez-vous commencer, les liens du web qui aideraient pour notre activité.... vos programmes Arduino pour commander les servos...
Wouah a écrit:je cherche a savoir s'il me faut des modules complémentaires pour ce montage...et comment connecter 3 servos sur mon "arduino uno".(je sais commander un servo mais pour en mettre 3 sur la carte??
Wouah a écrit:....donc il faut que je soude un fil "+" commun aux 3 servos connecté sur le +5V arduino et idem pour le (-), ensuite chaque fil signal D2 ,D3,D4.
rdd a écrit:Moi j'utilise des supports HE14 que je recoupe à la bonne dimension et sur lesquels je soude/dessoude à volonté pendant les tests
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.write(90); // set servo to mid-point
}
void loop() {}
Wouah a écrit:j'avais pas vu dans la librar stepper one-revolution ce code me semble pas mal
Wouah a écrit:ensuite reste encore à trouver une solution pour le faire démarrer l'arduino ou plutôt le programme, 2 ou 3 minutes après le décollage.....et le mettre en veille après 10 mn de vol....puis rallumer aprs 10mn ..........ce serait top!! Savez-vous s'il existe un code pour faire ça?
#include <Servo.h>
Servo servoTILT;
Servo servoPAN;
Servo servoAPN;
void setup()
{
delay(180000); // on attend 3 minutes, le temps que ça décolle
// on attache les servos, etc.....
}
void loop()
{
unsigned long Temps=millis();
while (millis()-Temps < 600000) // on execute l'autokap pendant 10 minutes
{
// on lance l'autokap:
// on fait descendre le tilt, on shoot, on fait descendre le tilt, on shoot, etc
// on fait remonter le tilt
// on tourne le pan
}
delay(600000); // on attend 10 minutes
}
Arduino Servo Test sketch
*/
#include <Servo.h>
Servo servoAPN; // create servo object to control a servo
// a maximum of eight servo objects can be created
Servo servoPAN; // create servo object to control a servo
// a maximum of eight servo objects can be created
Servo servoTILT; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
int pos2 = 0; // variable to store the servo position
int pos3 = 0; // variable to store the servo position
void setup()
{
delay(8000); // on attend 3 minutes, le temps que ça décolle
// on attache les servos, etc.....
servoAPN.attach(8); // servo on digital pin 8
servoPAN.attach(9); // attaches the servo on pin 9 to the servo object
servoTILT.attach(10); // servo on digital pin 10
}
void loop()
{
servoAPN.write(62); // Turn Servo Left to 45 degrees
delay(1000); // Wait 1 second
servoAPN.write(40); // Turn Servo Right to 180 degrees
delay(5000); // Wait 1 second
servoAPN.write(50); // Turn Servo back to center position (90 degrees)
delay(300); // Wait 1 second
servoPAN.write(0); // tell servo to go to position in variable 'pos'
delay(100); // waits 15ms for the servo to reach the position
servoPAN.write(90); // tell servo to go to position in variable 'pos'
delay(3000); // waits 15ms for the servo to reach the position
servoPAN.write(30); // tell servo to go to position in variable 'pos'
delay(100); // waits 15ms for the servo to reach the position
servoPAN.write(90); // tell servo to go to position in variable 'pos'
delay(3000); // waits 15ms for the servo to reach the position
}
void loop()
{
servoAPN.write(62); // Turn Servo Left to 45 degrees
delay(1000); // Wait 1 second
servoAPN.write(40); // Turn Servo Right to 180 degrees
delay(5000); // Wait 1 second
servoAPN.write(50); // Turn Servo back to center position (90 degrees)
delay(300); // Wait 1 second
servoPAN.write(30); // tell servo to go turn
delay(100); // waits 200ms while turning
servoPAN.write(90); // stop servo
delay(1500); // optionel : mettre une tempo pour que la nacelle se stabilise suite à la rotation
}
Wouah a écrit:... j'ai juste retiré la ligne qui servait à rien la 3ème position (servoAPN)qui était censée faire le point avant déclenchement c'était stupide !
Wouah a écrit:je n'arrive pas à faire descendre la nacelle après 8 déplacement du servoPAN et APN (je voudrais l'orienté 3 fois 0°, 20°90° pour chaque tour de 360° évidement
void loop() {
for (int i=0; i<3; i++) {
//on positionne le tilt à 0°, 20° ou 90°
if (i==0) servoTILT.write(30); // on imagine que 30 est la valeur pour obtenir 0°
else if (i==1) servoTILT.write(50); // on imagine que 50 est la valeur pour obtenir 20°
else if (i==2) servoTILT.write(120); // on imagine que 120 est la valeur pour obtenir 90°
delay(1000); // on attend 1 seconde
//puis on prend des photos en faisant tourner le pan sur un tour
for (int j=0; j<12; j++) {
// on prend la photo
servoAPN.write(62); // on appuie sur le déclencheur
delay(1000); // on attend 1 seconde
servoAPN.write(40); // on ramène le déclencheur au repos
delay(300); // on attend 300 millisecondes
// rotation pan
servoPAN.write(10); // on tourne
delay(100); // pendant 100ms -> soit 30°
servoPAN.write(90); // on arrête le servo de pan
}
}
}
Wouah a écrit:(complétement en bas et en rouge c'est le code de Deltakap pour il semble, arreter la nacelle après 10mn
void Shot() {
// on prend la photo
servoAPN.write(62); // on appuie sur le déclencheur
delay(1000); // on attend 1 seconde
servoAPN.write(40); // on ramène le déclencheur au repos
delay(300); // on attend 300 millisecondes
}
void PanTurn() {
// rotation pan
servoPAN.write(10); // on tourne
delay(100); // pendant 100ms -> soit 30°
servoPAN.write(90); // on arrête le servo de pan
delay(500); // on attend 1/2 seconde pour que ça se stabilise
}
void Tilt(int angle) {
angle = map(angle, 30, 120, 0, 90);// la fonction map permet ici de transformer les valeurs correspondant à 0° et 90° (30 et 120) en véritables valeurs d'angles ! pratique nan !?
servoTILT.write(angle);
delay(500); // on attend 1/2 seconde pour que ça se stabilise
}
void loop() {
for (int i=0; i<3; i++) {
//on positionne le tilt à 0°, 20° ou 90°
if (i==0) Tilt(0); // inclinaison à 0°
else if (i==1) Tilt(20); // inclinaison à 20°
else if (i==2) Tilt(90); // inclinaison à 90°
//puis on prend des photos en faisant tourner le pan sur un tour
for (int j=0; j<12; j++) { // on va tourner 12 fois de 30°
Shot(); // on prend la photo
PanTurn(); // on tourne de 30°
}
}
}
Alankap a écrit:.... Au secours il y a des gars qui écrivent en Chinois sur le forum.....
Wouah a écrit:tout fonctionne à merveille sauf le code pour arrêter
Wouah a écrit:je bosserai un peu le langage "C" ou "C++" je crois? je me trompe?
Wouah a écrit:Il me reste à placer le code pour faire clignoter une led au déclenchement
void Shot() {
// on prend la photo
digitalWrite(13, HIGH); // allume la led de l'arduino
servoAPN.write(62); // on appuie sur le déclencheur
delay(1000); // on attend 1 seconde
servoAPN.write(40); // on ramène le déclencheur au repos
delay(300); // on attend 300 millisecondes
digitalWrite(13, LOW); // éteint la led de l'arduino
}
Deltakap a écrit:Alankap a écrit:.... Au secours il y a des gars qui écrivent en Chinois sur le forum.....
Wouah a écrit:tout fonctionne à merveille sauf le code pour arrêter
Pour arrêter quoi?pour arrêter l'arduino le temps de ce déplacer avec lecv au bout de la ligne et ensuite le faire repartir après 5 minutes par exemple...en réfléchissant je ne sais pas si dans la pratique c'est d'un grd interêt (sauf eviter de remplir la carte trop vite!Wouah a écrit:je bosserai un peu le langage "C" ou "C++" je crois? je me trompe?
C'est bien ça, les deux même
Tout ce qu'on a écrit au dessus est plutôt du C. Les librairies sont elles plutôt écrites en C++ (même si ça n'a rien d'obligatoire)Wouah a écrit:Il me reste à placer le code pour faire clignoter une led au déclenchement
Tu as l'exemple Blink dans arduino qui peut servir de base.
Une remarque: la led de la carte arduino est reliée à la pin 13.
Dans setup, il faut ajouter: pinMode(13, OUTPUT);
et à défaut de la faire clignoter, on peut faire tout simplement:
- Code: Tout sélectionner
void Shot() {
// on prend la photo
digitalWrite(13, HIGH); // allume la led de l'arduino
servoAPN.write(62); // on appuie sur le déclencheur
delay(1000); // on attend 1 seconde
servoAPN.write(40); // on ramène le déclencheur au repos
delay(300); // on attend 300 millisecondes
digitalWrite(13, LOW); // éteint la led de l'arduino
}
Wouah a écrit:je pense pas qu'une fois en vol je puisse voir quoi que ce soit,
Deltakap a écrit:Wouah a écrit:je pense pas qu'une fois en vol je puisse voir quoi que ce soit,
Mais est-ce qu'en vol ça aurait de l'intérêt ? Parce que si tu vois la nacelle tourner, c'est que l'arduino est bien allumé
Je me demande si faire clignoter la led pendant les 3 minutes d'attente au décollage ne serait pas plus utile (pour être certain que c'est bien allumé et pas tout redescendre après 10 minutes parce que la nacelle ne tourne pas)
Une question subsidiaire.... cet autokap, c'est pour ton canon A490?
(parce que si oui, il doit y avoir plus simple que d'utiliser un servo pour le déclenchement )
Wouah a écrit:a quoi tu pensais "il doit y avoir plus simple que d'utiliser un servo pour le déclenchement"?
Wouah a écrit:pour le code oui c'est effectivement mieux de voir la led en attente du démarrage pendant 3 minutes, j'ai ça dans le code
delay(8000); // on attend 3 minutes, le temps que ça décolle
// on attache les servos, etc.....
Mais comment je peux y mettre le code led?
void BlinkLed(unsigned long durée) { // durée en millisecondes
unsigned long temps=millis();
while (millis()-temps < durée) // on execute la boucle pendant durée. Par ex: durée=180000 correspond à 3 minutes
{
digitalWrite(13, HIGH); // allume la led de l'arduino
delay(1000); // on attend 1 seconde
digitalWrite(13, LOW); // éteint la led de l'arduino
delay(1000); // on attend 1 seconde
}
}
Wouah a écrit:la nuit n'a pas été bénéfique, je n'ai rien appris de plus qu'hier!
Deltakap a écrit:Wouah a écrit:je pense pas qu'une fois en vol je puisse voir quoi que ce soit,
Mais est-ce qu'en vol ça aurait de l'intérêt ? Parce que si tu vois la nacelle tourner, c'est que l'arduino est bien allumé
Je me demande si faire clignoter la led pendant les 3 minutes d'attente au décollage ne serait pas plus utile (pour être certain que c'est bien allumé et pas tout redescendre après 10 minutes parce que la nacelle ne tourne pas)
rdd a écrit:juste pour signaler 'tout va bien'...
Retourner vers L'électronique embarquée et au sol
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 16 invités