Approche Arduino

Les radios commandes, déclencheurs divers et variés. Les circuits électroniques et autres bidouillages.

Approche Arduino

Messagede Wouah le Jeu 02 Février 2012, 21:59

Aujourd'hui, j'ai eu la chance de découvrir l'arduino...en effet je n'y connais rien de rien et ce matin j'ai appris par hasard et par radio qu'il y avait 4 1/2 journées d'organisées à Rennes (ouvert au débutant et expérimentés) http://www.jardinnumerique.org/prog/arduino/ . En réalité ça commençait hier, mais ....j'ai téléphoné ce matin pour démarrer à 14H il restait 1 place! Ouf....Résultat super intéressant un mini stage qui déjà me montre les possibilités (quelques unes parmis...!!) des intervenants hypers calés et une ambiance très détendue mais studieuse le nez sur l'écran et sur le matériel...puisque l'on avait chacun un ordi avec connexion web, un arduino, et du matériel pour les premiers exemples à réaliser. Résultat je rentre chez moi avec un arduino et un peu de matériel pour travailler....mais demain j'y retourne pour aller un peu plus loin!
Si certains utilisent l'arduino pourriez-vous partager vos expériences, comment avez-vous commencer, les liens du web qui aideraient pour notre activité.... :oops: vos programmes Arduino pour commander les servos...vraiment le début me semble un peu complexe mais tellement intéressant....
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede hansel le Jeu 02 Février 2012, 22:16

Salut Wouah,

Bienvenue dan le KAPduino club :-)

Il y a pas mal d’idées intéressantes ici (sur ce forum)
J'ai qqs notes sur mon projet personnel sur mon site, le logiciel (en construction) est en ligne
Avatar de l’utilisateur
hansel
Plus de 400 messages
 
Messages: 420
Inscription: Ven 07 Mai 2010, 16:58
Localisation: rotterdam,nl

Re: Approche Arduino

Messagede Emmanuel le Jeu 02 Février 2012, 23:25

Peut-être une petite recherche dans le module en haut de la page avec "Arduino" comme mot clé ? :wink:

OK, j'aurais pu faire pareil pour mon histoire d'interpolation :oops:
Emmanuel, Administrateur des forums francophones de la photographie aérienne par cerf-volant : http://photocerfvolant.free.fr/phpBB2/ - Et "toujours..." mon projet "au long cours..."
Avatar de l’utilisateur
Emmanuel
Site Admin
 
Messages: 8651
Inscription: Dim 21 Novembre 2004, 3:23
Localisation: Saint Jean Les Deux Jumeaux (Seine et Marne) 77

Re: Approche Arduino

Messagede rdd le Ven 03 Février 2012, 7:50

Bienvenue ! Quelle chance de commencer dans de bonnes conditions, c'est une excellente initiative ce 'stage' !

Il va falloir t'armer de patience pour lire tout ce qui a été dit/testé/écrit sur l'arduino ici :shock: :lol:

Pour l'instant les kapper's n'ont pas de solution ni de code 'miracle' car, à un moment ou à un autre, il faut adapter à son propre matériel (servo standard, treuil ou continu) et à sa propre plate forme : arduino mini, nano, uno, .... donc il faut piocher dans tous les bons conseils, faire sa synthèse, l'adapter à son projet et mettre en oeuvre. L'avantage c'est que tu peux/pourras soumettre tes questions ici à chacune de ces étapes pour avoir la confirmation que tu es sur le bon chemin :wink:

Après ces généralités, quel est ton projet ?
- un seul arduino 'en haut' sur la nacelle ? (pour de l'autokap, ou couplé à une télécommande en 433Mhz, ou une telecommande R/C ?)
- deux arduinos, un pour la nacelle, et un pour la télécommande ?
- expérimenter avant de définir le projet final ?

Les mots clés : arduino, kapduino
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Ven 03 Février 2012, 8:09

Merci pour vos conseils, pour l'instant je découvre a tâton avec le peu de matériel que j'ai les quelques exemples et je me rend compte de la difficulté et des possibilités ...je vais de pages web en pages web glaner des exemple et les meilleurs tuto...mais pour l'avenir(?) c'est la commande de 3 servos pan/tilt/déclencheur sans radio (donc juste un programme pour ces 3 servos standard que j'ai ,1 servo "360°" Pan, 1 normal Tilt, 1 petit normal pour declencheur )(je verrais par la suite). 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?? Je suis vraiment novice et même le langage m'est inconnu y'a du boulot...aujourd'hui je dois acheter quelques petits composants pour faire des essais.
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede rdd le Ven 03 Février 2012, 8:10

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é.... :oops: vos programmes Arduino pour commander les servos...


comment avez-vous commencé
En lisant ici tout ce qui a été réalisé par les forumeurs (et sur leurs sites/blogs respectifs). Puis achat du matériel, et essai sur table avant de le mettre sur une nacelle.

les liens du web qui aideraient pour notre activité
http://photocerfvolant.free.fr/phpBB2/index.php
http://arduino.cc/en/Tutorial/HomePage
http://arduino.cc/forum/

vos programmes Arduino pour commander les servos
Tu en trouveras plein sur le forum, mais attention rien de marchera du 1er coup car tes servos ne seront pas branchés au même endroit et ne seront pas les mêmes modèles que ceux utilisés par les copains... C'est peut être plus simple de partir du code d'exemple fourni avec les librairies de l'arduino pour l'adapter à ton cas car c'est pas toujours facile de comprendre le code d'un autre qui peut être très spécifique à son projet.

partager vos expériences
Pour l'instant j'ai une nacelle avec un arduino mini pro 8mhz/3.3V radiocommandé en R/C 4 voies 41Mhz : PAN, TILT, Déclenchement CHDK, 7 programmes d'autokap. Les difficultés de ce projet : l'étalonage de ma radio qui est pas terrible (modelcraft de chez conrad), et la bascule R/C - AutoKap (sorte d'aiguillage que l'on doit à Gilbert).
J'ai aussi un second arduino (Duemilanove) pour une nacelle et qui sera télécommandé avec un autre arduino (DFRduino Roméo) par un couple Radio 433Mhz APC220. Ca ne marche pas encore car j'ai des soucis avec l'écran LCD de la télécommande.
Enfin, j'ai un autre arduino (Duemilanove) dans un carton que je destine à la perche et/ou le panoramique sur trépied... mais là j'ai carrément rien commencé :wink:
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede rdd le Ven 03 Février 2012, 8:16

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??


Il ne faut rien de plus que l'Arduino pour piloter tes trois servos ... pas de module éléctronique supplémentaire. Par contre il faut, au niveau du code, utiliser la librairie "servo".

Pour les brancher il va falloir bricoler un peu (tu as un fer à souder j'imagine ?) car le Uno n'est pas prévu pour accueillir directement les servos sans soudure ou adaptateur (contrairement au Roméo ou à l'arduino nano sur sa plaquette I/O). Donc, il faut mettre le fil rouge de chaque servo sur le +5V arduino (ou alimentation directe 5V genre 4xAA), le fil noir (ou marron ça dépend des servos) sur le GND (Ground = 0V) de l'arduino (ou 0V de l'alim 4xAA). Le dernier fil des servos, celui qui transporte le signal (blanc, jaune ... ça dépend là aussi), doit être relié à une sortie digitale du Uno : D2, D3 et D4 par exemple (pas D0 et D1 car ils servent pour la communication série/usb avec ton Pc).
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Ven 03 Février 2012, 8:45

Merci rdd, voilà qui m'avance déjà tu vois, je suis vraiment déb de chez déb....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.
Oui pour le programme j'ai fais un test pour 1 servo (librairie "servo")et j'aichangé les variables pour les angles... je fais aussi des test avec knob et sweep
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Deltakap le Ven 03 Février 2012, 9:01

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.

Pour limiter les soudures (utile si tu veux jouer à autre chose avec ton arduino et ne pas le limiter à un autokap), tu as aussi des cartes d'entrées/sorties (I/O) qui permettent de brancher les servos (et autres capteurs) directement et sans soudures.
Par exemple pour le uno, il existe celle-ci:
http://www.frduino.com/carte-d-extension/dfr0088.html
http://www.dfrobot.com/wiki/index.php?title=IO_Expansion_Shield_For_Arduino(V5)_(SKU:_DFR0088)

Cette carte, comme des tas d'autres cartes d’extension pour uno, s'enfichent directement dessus. Bon, ok, ça doit prendre un peu de place pour mettre tout ça sur une nacelle.
Le choix de la "bonne" carte, dimensions, tension d'alim, soudures ou pas, etc (pour ce qu'on veut en faire) fait d'ailleurs partie de la découverte de ce nouveau monde ... et du parcours du combattant arduino :?
Dernière édition par Deltakap le Ven 03 Février 2012, 9:07, édité 2 fois.
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede rdd le Ven 03 Février 2012, 9:04

Je ne te conseille pas de souder directement sur le Uno, car tu es encore en phase expérimentale.

Moi j'utilise des supports HE14 que je recoupe à la bonne dimension et sur lesquels je soude/dessoude à volonté pendant les tests (et quand le support est cramé je le change).

EDIT: Ooops, ça fait doublons avec la réponse de Gilbert, j'avais pas vu ta réponse :wink:
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Deltakap le Ven 03 Février 2012, 9:50

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

pas bête et pas cher ;)


Un petit lien in french pour découvrir l'environnement arduino: http://arduino.cc/fr/Main/Debuter

Un autre pas mal non plus: http://www.pobot.org/Debuter-avec-une-c ... duino.html
On y voit entre autre comment brancher un servo sans soudures (pour la phase de tests).
Mais aussi comment discuter avec l'arduino (et c'est hyper important quand on veut tracer ce qu'il fait)

Pour aller plus loin coté programmation, une liste de librairies (des programmes, ou plutôt des fonctions, qui simplifient la vie): http://arduino.cc/it/Reference/Libraries

Par exemple, comment piloter un servo avec seulement 6 fonctions !!! http://arduino.cc/en/Reference/Servo
Ce simple code:
Code: Tout sélectionner
#include <Servo.h>

Servo myservo;

void setup()
{
  myservo.attach(9);
  myservo.write(90);  // set servo to mid-point
}

void loop() {}

permet en quelques lignes de positionner le servo au centre. On voit que c'est très simple avec l'emploi de la librairie servo (pour faire la même chose sans la librairie, tout en laissant à l'arduino la possibilité d'effectuer d'autres taches... bonjour :mrgreen: )
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Dim 05 Février 2012, 20:58

Merci pour vos conseils, mais voilà j'ai réussi enfin à régler le servo de l'apn (declencheur)et je suis en cours pour le servo pan 360°...j'ai essayé des codes mais il tourne en permanence dans le même sens et a vitesse réguliere.......je suis allé sur le site de "Alpaph" essayer avec le code d'un servo 360° modifié mais les modifications sur le code ne changent rien il tourne, il tourne,il tourne et rien d'autre! :mrgreen: une idée svp
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Deltakap le Dim 05 Février 2012, 21:53

Si tu as laissé le petit potentiomètre du servo branché, il faut que tu le règles:
Tu lances le petit sketch ci-dessus et tu tournes le potar jusqu'à ce que le servo s’arrête.

Après, un "myservo.write(0);" va faire tourner le servo à fond dans un sens, un "myservo.write(180);" à fond dans l'autre.
Un "myservo.write(90);" ou "myservo.write(1500);" va l’arrêter.

Pour le faire touner lentement, il faudra par exemple un myservo.write(91);.... enfin, faudra ajuster.
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Dim 05 Février 2012, 22:28

Désolé je suis allé un peu vite dans ma demande, j'avais pas vu dans la librar stepper one-revolution ce code me semble pas mal (c'est sans doute pas le mieux mais en attendant que je meperfectionne! ....maintenant que j'ai les codes il faut que je les assemble (les 3 codes pour les 3 servos dans le même code et la Wouahhh)....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? . En tout cas je découvre que dès que l'on sort des exemples c'est la galère mais c'est en même temps super intéressant.je me régale!!
Merci pour le réglage du servo j'essaierai quand même!
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Deltakap le Dim 05 Février 2012, 23:22

Wouah a écrit:j'avais pas vu dans la librar stepper one-revolution ce code me semble pas mal

L'exemple "steeper_oneRevolution" permet de commander un moteur pas à pas et non un servo (enfin il me semble :wink: )

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?

Tu as la fonction delay() qui permet d'attendre que le temps passe.... la valeur à lui donner est en millisecondes: delay(1000) attend donc 1 seconde. Je ne sais pas quelle est la valeur max (je regarderai demain), au moins 32000 et quelques (32s). Pour un temps d'attente plus important, il y a toujours moyen de mettre ce delay dans une boucle.

edit: bon, le compilateur accepte delay(4200000000); et coince pour delay(4300000000).... ça laisse de la marge, pas besoin de boucle !
donc
delay(180000); attend 3 minutes
delay(600000); attend 10 minutes

Un exemple de bout de code qui gérerait les attentes de 3 et 10 minutes (à compléter pour la gestion des servos):
Code: Tout sélectionner
#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
}


A vérifier, mais ça devrait fonctionner
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 10:48

Quelques nouvelles...Le débutant que je suis à réussi à placer le code pour un démarrage différé(ça c'est bon ça marche! Ouf!) mais celui que je place pour arrêter, ne fonctionne pas ou plutôt il doit y avoir des conflits je ne l'ai pas bien placé.

Dans le code que je poste ci-dessous les ligne de codes pour arreter ne sont pas là (plus tard), par contre, j'ai changé les valeurs pour éviter l'attente du démarrage.

Voilà mon blème...quand je fait l'essai du programme pour un servo ça fonctionne mais dès que j’essaie de réunir le servoAPN et servoPAN ç'est l'anarchie les servos travaillent bizarement ne termine pas leur tache puis reprennent. bon je crois savoir que c'est la boucle qui fait tout capoter mais j'ai tenter pas mal de trucs mais rien à faire! est-ce que tu pourrais jeter un oeil stp pour savoir si je dois continuer la dessus ou???! merci d'avance
Aie aie aie, pas facile à domter la bête!


/*
Arduino Servo Test sketch
*/
#include <Servo.h>
Servo servoTILT; // create servo object to control a servo
// a maximum of eight servo objects can be created

Servo servoAPN; // 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


/*
Arduino Servo Test sketch
*/

#include <Stepper.h>
const int stepsPerRevolution = 150; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper servoPAN(stepsPerRevolution, 8,9,10,11);





void setup()
{
delay(8000); // on attend 3 minutes, le temps que ça décolle
// on attache les servos, etc.....

servoTILT.attach(6); // servo on digital pin 6
servoAPN.attach(7); // attaches the servo on pin 7 to the servo object





// set the speed at 60 rpm:
servoPAN.setSpeed(300);
// initialize the serial port:
Serial.begin(9600);
}



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


// step one revolution in one direction:
Serial.println("clockwise");
servoPAN.step(stepsPerRevolution);
delay(6000);



// step one revolution in the other direction:
Serial.println("counterclockwise");
servoPAN.step(-stepsPerRevolution);
delay(5000);

}
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede rdd le Lun 06 Février 2012, 10:56

Tu déclare ton servo de PAN avec la librairie STEPPER ??? Cette librairie est réservée aux moteurs PAS-A-PAS je ne pense pas qu'elle est capable de piloter un servo classique de modélisme :shock: :?:
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 11:40

Ben tu sais j'y vais à taton c'est l'aventure et comme j'avais trouvé qu'il fonctionnait avec la librairie STEPPER (il s'arretait tous les 40° environ mais c'est surement du bolet pas la solution la plus propre)....... mais alors comment je code pour que mon servo 360 démarre puis 30° puis redémarre puis 30° , je n'arrive pas à l’arrêter ave un cycle régulier de 30° il tourne dans un sens puis après quelques instant il tourne dans l'autre... une tit' idée :roll:
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Deltakap le Lun 06 Février 2012, 11:44

Oui, là, tu veux aller trop vite ;)

En fait, il faut procéder par étapes:
- Déjà oublier les appels à la librairie stepper (elle est prévue pour piloter un autre type de moteur: http://fr.wikipedia.org/wiki/Moteur_pas_%C3%A0_pas) et utiliser la librarie servo (qui elle te permet de piloter un servo correctement).
Actuellement, tu constates que ça fonctionne (mal) avec la librairie stepper, mais c'est normal, c'est pas fait pour ;)
- Ne pas te lancer directement dans un sketch autokap mais bien maitriser avant la commande individuelle de chaque servo. Il faut déjà déterminer les valeurs qui vont positionner chaque servo au bon endroit, et le plus simple est de s'attaquer à un seul servo à la fois... tu regroupera tout ça plus tard dans le sketch autokap.

Eventuellement, demande à tes formateurs ce qu'est une fonction... à quoi ça sert, comment on l'écrit, comment on l'appelle.... c'est une notion très importante et bien pratique (indispensable quoi ;))
Tu pourras regrouper chaque commande de servo dans une fonction et tu n'auras plus qu'à appeler ces fonctions au bon endroit dans ton futur sketch autokap.
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede rdd le Lun 06 Février 2012, 11:53

Pour faire avancer un servo 360° il faut procéder comme suit :
- lui assigner une valeur (angle) différente de son angle "d'équilibre" (la valeur qui l'empêche de tourner, c'est cette valeur qu'il te faut trouver en premier, le reste suivra).
- mettre un délais (200 ms, 400 ms, ...) plus le délais sera long, plus le déplacement (l'angle) sera grand.
- lui assigner sa valeur (angle) d'équilibre pour qu'il s'arrête de tourner.

Tout ça avec la lib Servo.
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 12:49

OK c'est là où j'en suis justement à regrouper puisque, j'ai réussi avec la librairie servo, il tourne tous les 30° environ et non stop. j'ai les 2 autres servo qui sont réglés comme je veux avec des cycles souhaités...donc maintenant que j'ai les 3 servos je viens d'essayer de joindre le code PAN avec celui de "servoAPN" mais c'est l'anarchie encore,chacun travail mais le cycle n'est plus respecté, c'est très irregulier! c'est la boucle qui ne vas pas! comment faut-il différencier les servos dans la boucle? les uns derriere les autres? moi j'ai mis le code servoAPN en premier dessous le code servoPAN.....c'est surement pas ça (reste à acheter 2 arduino (1 par servo!!!) :lol:

Voilà ma derniere mouture il manque des lignes ça parrait trop simple t trop rangé! :mrgreen:

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


}
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede rdd le Lun 06 Février 2012, 13:32

Code: Tout sélectionner
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
}


Jusque là pas de soucis :wink:

Code: Tout sélectionner
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
   

}


Dans cette partie là, je comprends que le servo "servoAPN" est un servo qui appuie sur le déclencheur de l'appareil photo. Mais je ne comprend pas bien le mouvement tu m'emmène à 62° puis à 40° puis à 50° ... il y a besoin de tous ces mouvements pour déclencher ? Le servo devrait être 'relevé' ou 'appuyé' mais à quoi sert la troisième position ?

Cela dit, à part faire perdre du temps, c'est pas très grave, ça fait prendre l'air au servo :lol: (enfin ce que je veux dire sérieusement c'est que ça ne gène pas le programme).

Pour la partie du servo de PAN je ne comprends pas pourquoi tu l'envoi à 0° ??

1 servoPAN.write(0); // On l'envoi à 0°
2 delay(100); // On attend 100 millisecondes
3 servoPAN.write(90); // On l'envoi à 90° (c'est certainement la position qui stoppe le servo ??)
4 delay(3000); // On attend 3 sec
5 servoPAN.write(30); // On l'envoi à 30°
6 delay(100); // On attend 100 millisecondes
7 servoPAN.write(90); // On l'envoi à 90° (c'est certainement la position qui stoppe le servo ??)
8 delay(3000); // On attend 3 sec

Si 90° est bien la position qui stoppe la rotation du servo (tu confirme ?), ton programme fait donc :
0 Je prends une photo
1&2 le PAN tourne pendant 100ms
3&4 le PAN est arrêté pendant 3 sec
5&6 le PAN tourne (moins vite que 1 mais dans le même sens) pendant 100ms
7&8 le PAN est arrêté pendant 3 sec

C'est pas très logique .... :shock: ... on s'attendrait à voir plutôt quelque chose comme :

Je prends la photo
Le PAN tourne pendant 200ms
Le PAN est arrêté
(éventuellement mettre une tempo avant le déclenchement le temps que la nacelle se stabilise à cause de l'accoup du à la rotation)
On recommence ...

Ce qui donnerait
Code: Tout sélectionner
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
}
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 14:18

Merci vraiment pour ta correction, ça fonctionne bien, 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!, je remarque simplement que juste au lancement après la période d'attente (décollage) les servos s'initialisent le servoPAN fait environ10° et revient à sa place, le servoAPN fait la même chose (pour les 2 cela prend 1seconde c'est surement normale au début du cycle).
Voilà je vais tenter de m'attaquer au TILT, pour ça je vais reprendre ta super analyse et essayer de faire la même chose.
je pense te soumettre la suite si tu veux bien?
Encore merci
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede rdd le Lun 06 Février 2012, 14:24

Pas de soucis, n'hésites pas :wink: Le forum est là pour ça :wink:

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 !

Ça n'avait rien de stupide, à force de faire des essais, on sait plus trop où on en est ... je fais pas mieux :roll: mais c'est vrai que la relecture d'un œil neuf permet ce genre de correction :wink:
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 16:57

Ben tu parlais de mon formateur, c'est terminé c'était 2 1/2 après-midi autant dire que c'était qu'un seul car le deuxième à été un rappel du 1er pour ceux qui n'étaient pas là! bref cela à eu le mérite de me faire découvrir et d'apprécier les possibilités.....cependant me voilà avec le "BB" sur les bras! Donc comme tu dis ...à la longue....mais à la longue de faire plein d'essais je suis encore paumé. j'ai essayé dans tous les sens de mettre le servoTILT et tu devais t'en douter....impossible pour mes neurones de bigorneaux! ils n'en font qu'a leur tête ces satanés moteurs enfin les 2 premiers ça gaze mais le dernier, 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(je changerais plus tard probablement les angles.
Encore une fois je te laisse découvrir l'horreur! (complétement en bas et en rouge c'est le code de Deltakap pour il semble, arreter la nacelle après 10mn,mais là encore j'ai tout faux aussi, et je ne sais pas quoi en faire : Désolé mrgreen: , )

void setup()
{
delay(2000); // 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 back to center position (90 degrees)
delay(300); // Wait 1 second
servoPAN.write(10); // tell servo to go turn
delay(100); // waits 200ms while turning
servoPAN.write(90); // stop servo
servoTILT.write(30); // tell servo to go turn
delay(10000); // waits 200ms while turning
servoTILT.write(0); // stop servo
delay(10000); // waits 200ms while turning
servoTILT.write(90); // stop servo
delay(10000);



delay(3000); // optionel : mettre une tempo pour que la nacelle se stabilise suite à la rotation

}


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

}
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede alpaph le Lun 06 Février 2012, 17:34

Bonjour,

En fait, tu inséres ce code (en rouge) dans ta boucle loop() et tu mets ton code (de servoAPN.write(62); // Turn Servo Left to 45 degrees à delay(3000); ) là où Gilbert a positionné les commentaires // on lance l'autokap:, ...etc).

Et ton autoKAP va s'autodébrouiller pendant dix minutes !
A+

Philippe

Site perso : http://alpaph.free.fr - Galerie Flickr : http://www.flickr.com/photos/41085895@N08/
Avatar de l’utilisateur
alpaph
Plus de 100 messages
 
Messages: 312
Inscription: Dim 22 Mars 2009, 19:24
Localisation: Seine-saint-denis

Re: Approche Arduino

Messagede Deltakap le Lun 06 Février 2012, 17:40

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

Si je comprends bien, tu veux faire un tour complet puis descendre le tilt, refaire un tour complet puis redescendre le tilt

ça peut par exemple s'écrire comme ça: (c'est une façon de faire, il y en a plein d'autres... et des bien meilleures)
Code: Tout sélectionner
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
     }
  }
}


Une remarque: tu peux enlever les commentaires (ou mieux, les modifier).... Mais à mon avis, il vaut mieux pas de commentaires du tout que des commentaires faux.... l'idéal restant bien sûr des commentaires bons ;)

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

J'avais écrit ça pour donner un exemple... mais en fait, je ne vois pas trop l'intérêt de ne pas prendre de photos pendant 10 minutes !?

Edit: je rajoute un delay après le changement de tilt (pour que ça se stabilise un peu avant de prendre la photo)
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Deltakap le Lun 06 Février 2012, 18:18

(....suite)

Je parlais plus haut de l'utilisation de fonctions.
Le principe est expliqué là: http://arduino.cc/en/Reference/FunctionDeclaration

En pratique, tu pourrais créer par exemple une fonction "shot" (déclenchement de l'apn), genre:
Code: Tout sélectionner
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
}


Puis une fonction PanTurn() (rotation du pan de 30°)
Code: Tout sélectionner
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
}


Puis une fonction Tilt():
Code: Tout sélectionner
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
}


L'intéret ?
Tu copies ces fonctions avant la fonction setup() et ton loop devient:
Code: Tout sélectionner
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°
     }
  }
}

Ça fonctionne pareil, mais c'est juste un peu plus facile à lire ;)
Ca devient très intéressant si tu appelles ces fonctions plusieurs fois dans le loop (bon ok, ce loop n'est pas un bon exemple)
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 18:57

DES GRAND "MERCI" à tous pour votre aide....tout fonctionne à merveille sauf le code pour arrêter mais c'est pas grave....le principal étant que le reste fonctionne y compris le départ différé. faudra que je peaufine les délais quand la nacelle sera remontée.ensuite je bosserai un peu le langage "C" ou "C++" je crois?
je me trompe?

Bon donc pour finir, Il me reste à placer le code pour faire clignoter une led au déclenchement "servoAPN". Si vous aviez encore ça sous le coude svp... :oops: :oops: aie aie aie!!
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Alankap le Lun 06 Février 2012, 18:58

.... :mrgreen: Au secours il y a des gars qui écrivent en Chinois sur le forum.....
Avatar de l’utilisateur
Alankap
Plus de 1000 messages
 
Messages: 2499
Inscription: Mar 06 Novembre 2007, 14:33

Re: Approche Arduino

Messagede Deltakap le Lun 06 Février 2012, 20:24

Alankap a écrit:.... :mrgreen: Au secours il y a des gars qui écrivent en Chinois sur le forum.....

:mrgreen: :mrgreen: :mrgreen:

Wouah a écrit:tout fonctionne à merveille sauf le code pour arrêter

Pour arrêter quoi?

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
}
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 20:51

Deltakap a écrit:
Alankap a écrit:.... :mrgreen: Au secours il y a des gars qui écrivent en Chinois sur le forum.....

:mrgreen: :mrgreen: :mrgreen:

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
}
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Wouah le Lun 06 Février 2012, 21:30

Ok merci, j'ai placé le code et la led,s'allume au déclenchement mais c'est super faiblard! (en direct sur la carte, la petite patte de la led dans le grd et la grande dans la 13, malheureusement je pense pas qu'une fois en vol je puisse voir quoi que ce soit,
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede KickMe le Lun 06 Février 2012, 23:57

C'est la led déjà intégrée à la carte ?

Regarde cette page (en anglais, demande si ça te pose problème), normalement une led ça devrait être bien visible.
Avatar de l’utilisateur
KickMe
Plus de 100 messages
 
Messages: 125
Inscription: Mar 30 Juin 2009, 12:31
Localisation: Paris/Normandie

Re: Approche Arduino

Messagede rdd le Mar 07 Février 2012, 7:29

Dis donc tu as super bien avancé ... aller encore un p'tit coup de collier et tu auras une merveille d'autokap "C'est moi qui l'ai fait" :wink: 8)
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Deltakap le Mar 07 Février 2012, 8:22

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 ;))
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede Wouah le Mar 07 Février 2012, 8:58

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 ;))

Oui, pour l'A490 mais j'ai installé le chdk pour le déclencher et jusque la j'ai une radio PAN/TILT, mais j'ai un samsung et un reflex et j'ai bien l'intention de les mettre en l'air. a quoi tu pensais "il doit y avoir plus simple que d'utiliser un servo pour le déclenchement"?

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? la nuit n'a pas été bénéfique, je n'ai rien appris de plus qu'hier! :oops:
Avatar de l’utilisateur
Wouah
Plus de 1000 messages
 
Messages: 1012
Inscription: Mer 10 Novembre 2010, 20:13
Localisation: Saint-Malo

Re: Approche Arduino

Messagede Deltakap le Mar 07 Février 2012, 9:42

Wouah a écrit:a quoi tu pensais "il doit y avoir plus simple que d'utiliser un servo pour le déclenchement"?

Pour un canon avec chdk, tu peux utiliser un simple câble mini-usb:
viewtopic.php?f=6&t=1825&start=7&st=0&sk=t&sd=a

Evidemment, rien ne t"empêche d'avoir dans la fonction shot le déclenchement par servo ET par cable usb.

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?

Dans setup, il faut ajouter: pinMode(13, OUTPUT);
Et tu peux te créer une fonction:
Code: Tout sélectionner
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
  }
}


Tu n'as plus qu'à remplacer
delay(8000); // on attend 3 minutes, le temps que ça décolle
par
BlinkLed(180000);
(ou BlinkLed(8000);) qui fait 8 secondes et pas 3 minutes ;)


Wouah a écrit:la nuit n'a pas été bénéfique, je n'ai rien appris de plus qu'hier! :oops:

Ne t'inquiète pas ;)
Comme nous tous, tu vas apprendre plus de tes erreurs que de nos bouts de code qui te permettent juste de voir que tout est possible. Mais il y a évidemment des tas d'autres façons de faire (mieux)... et tu vas les découvrir petit à petit ;)
Dernière édition par Deltakap le Mar 07 Février 2012, 9:55, édité 1 fois.
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Re: Approche Arduino

Messagede rdd le Mar 07 Février 2012, 9:54

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)


Sinon il y a la solution "Buzzer", j'avais mis ça sur la 1ere version de ma nacelle reflex (arduino piloted) et on entend bien le buzzer (à chaque photo) jusqu'à 35, 40m ensuite ça sert plus à rien non plus ... a l'époque j'avais imaginer monter un flash (enfin juste le tube à éclat, l'électronique) mais ça aurait tiré drôlement sur les piles ou alors il faudrait donner un coup de flash toutes les 2 ou 3 minutes (ou à chaque tour complet...) juste pour signaler 'tout va bien'...
Avatar de l’utilisateur
rdd
Plus de 100 messages
 
Messages: 359
Inscription: Sam 27 Août 2011, 6:33
Localisation: Mezidon

Re: Approche Arduino

Messagede Deltakap le Mar 07 Février 2012, 10:00

rdd a écrit:juste pour signaler 'tout va bien'...

Oui, mais si la nacelle tourne, c'est déjà que tout va bien ;)
Le problème, c'est que ça n'indique pas que le servo de déclenchement tape dans le vide ou que l'apn n'est pas allumé :(
(et le retour vidéo est bien utile pour ça aussi... mais bon)
Avatar de l’utilisateur
Deltakap
Plus de 1000 messages
 
Messages: 1432
Inscription: Lun 22 Septembre 2008, 11:35
Localisation: Du coté de Granville

Suivante

Retourner vers L'électronique embarquée et au sol

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 42 invités