Bonjour,
il y a quelques temps je me suis lancé sur ce projet qui hibernait dans un coin de mon cerveau;
le champs d'utilisation des cartes ARDUINO qui est énorme m'a décidé à m'y remettre;
J'ai enfin terminé un chassis qui me semble correct et je débute la programmation mais mes notions de bases sont celles du 68HC11 et datent de 1997...
Pour le moment j'arrive à lire des codes de télécommande IR, commander des servos avec ainsi qu'à jouer des sons wav avec le shield adafruit, j'ai branché un clavier USB directement avec les entrées numériques, je vais essayé la lecture/commande d'un double joystick démonté d'une manette PS2;
les taches qu'il me reste à accomplir sont encore de taille et je pense avoir besoin des conseils éclairés de nos vénérables anciens qui maitrisent avec virtuosité les lignes de code pour des corrections/suggestions ou pourquoi pas un coup de pouce, mais là n'est pas le but du Do It Yourself.
PROJET:
Commander le chassis réalisé (photo) avec une simple télécommande IR pour des séquences préprogrammées,
commander le chassis aves les deux joysticks et le clavier servant à sélectionner la série de 4 servos à commander par les joysticks en incrémentant/décrémentant les angles comme avec des poussoirs mais en plus pratique; un genre d'adressage en fait qui se verrouille par simple appui, je pense utiliser une touche du clavier pour la déselection, ça devrait simplifier les choses; je me vois mal gérer un pupitre de 16 joystiks...
je pense utiliser des accélérometres pour le faire tenir automatiquement debout et éviter les chutes lorsqu'il se déplace ou lève un bras, là est mon plus gros problème pour le moment;
pour simplifier l'utilisation je pense mettre une sous séquence de mise à jour des données envoyées à l'USC (carte de commande de 32 servos par ligne TX/RX) directement sous la LOOP mais je ne sais pas comment lui faire envoyer des chiffres à la place de constantes, je m'explique: la ligne de commande normale est
Serial.println("#1P2000T200");
servo 1 valeur d'angle 2000 temps de déplacement 200 ms (ça fonctionne bien mais c'est limité...),
Je voudrais faire une sous commande en remplaçant la valeur d'angle et le temps de mouvement par des constantes (ou variables, je m'y perds encore un peu) que je pourrais ajuster par incrémentation/décrémentation en fonction des besoins du style:
Serial.println("#1P(Angle)T(Temps)");
j'ai mis des parenthèses pour la clarté mais je ne sais pas comment faire pour que les valeurs remplacent les mots, une fois débloqué pour un servo, les autres suivront bien sur.
*******Est-il possible d'envoyer ce code par un port numérique déclaré en sortie?
Je ne sais pas où trouver des référence pour les déplacement angulaire de la marche bipède;
quelqu'un connaitrait-il un logiciel permettant de modéliser en 2D/3D son projet, de le simuler et de le programmer directement en fonction des éléments qui le compose?
ça me simplifirait pas mal le boulot mais existe-t-il?
matériel:
USC32 TOROBOT permettant de commander 32 servos par l'envoi d'une chaine de caractères via le port RX;
2x ARDUINO PRO MINI 5v 16MHZ;
(au cas où pour les tests : 1x ARDUINO MEGA, 1x ARDUINO UNO, 1x ARDUINO NANO)
1x Adafruit Wave Shield
2x accéléromètres 3 axes ADXL345
1x accéléromètre 3 axes Arduino MMA7361 (MMA7260) Accelerometer Sensor Module
2x RF-2400-V03 2.4GHz Wireless Transceiver
1x Wireless Serial 4 Pin Bluetooth RF Transceiver Module
2x NRF905 émetteur/récepteur
quelques modules émetteurs et récepteurs en 433MHZ
un capteur HC-SR04 au cas où;
mais je n'arrive pas encore à faire fonctionner les liaisons sans fil car je ne comprends pas encore comment ils fonctionnent...... :~
les capteurs rendront robot autonomes mais je voudrais garder un accès maître même en mode autonome, pour lui faire faire des tâches pré-programmées lorsqu'il est en mode autonome (style surveillance, interagir avec son environnement...)
dans un premier temps ça sera le mode manuel...
je pense avoir synthétisé le projet, si quelqu'un a des suggestion ou des idées pour m'aider à avance je lui en serai trés reconnaissant