
Glenn Robot Humanoide
#481
Posté 06 août 2017 - 03:52
#482
Posté 06 août 2017 - 06:36
Bah je n'ai rien trouvé de bien folichon, et le peu que j'ai trouvé (ou alors je n'ai rien compris), ils ont tous fais leurs sauce pour le peu que j'ai pu en lire.
Je cherchai comme en python, le bout de code qui montre comment ça fonctionne, car moi et le C++ pour l'instant c'est vague, et surtout trouvé la bonne librairie, car là aussi j'ai l'impression qu'il en existe plusieurs.
Ps : j'ai regardé aussi chez adafruit, mais ils fournissent du code pour arduino .ino, donc je nage.
Donc ça c'est la librairie officiel pour faire tourner des servos en C++ ?
https://github.com/TeraHz/PCA9685
ou ça peut être que c'est le mieux ?
https://learn.adafru...dafruit-library
Merci
#483
Posté 06 août 2017 - 06:52
Pour le code de TeraHz, il faut récupérer son autre code https://github.com/TeraHz/I2C
Si ça peut aider.
#484
Posté 07 août 2017 - 09:23
Ok, c'est la régression total, je recherche la commande pour down dossiers, ou fichiers via raspbian pour github, (un vrai boulet), j'ai complétement oublié et impossible de retrouver la commande via google. :'(
Ou alors truc simple je fais un copier coller du code dans un nouveau fichier ? (cpp et h).
Je repars de 0 et ça me déprime :'( snif
#485
Posté 07 août 2017 - 12:19
Ok, c'est la régression total, je recherche la commande pour down dossiers, ou fichiers via raspbian pour github, (un vrai boulet), j'ai complétement oublié et impossible de retrouver la commande via google. :'(
Ou alors truc simple je fais un copier coller du code dans un nouveau fichier ? (cpp et h).
Je repars de 0 et ça me déprime :'( snif
Tu veux dire pour récupérer des fichiers depuis un repository git distant (par exemple sur github) ? En général, on parle de "cloner un repository" (ohh le franglish), et la commande correspondante est :
git clone <adresse_du_repo.git>Sur github, tu as également un bouton vert sur la page du repository qui t'intéresse marqué "Clone or download" pour avoir l'adresse.
#486
Posté 07 août 2017 - 12:29
Oh punaise (comme dirait Telson), là j'ai encore plus honte, je n'ai même pas fais gaffe à ce bouton qui est flagrant en plus
Faut dire (non je ne me cherche pas d'excuses), que j'ai un peu la tête ailleurs en ce moment.
Je crois que je vais me mettre au tricot.
Oui R1D1, c'est bien ce que je cherchais ^^
Bon faut que je change de navigateur sous raspbian, celui par défaut déconne plein tube le "clone or download" ne fonctionne pas...
Merci
#487
Posté 08 août 2017 - 10:50
Tu vas générer des signaux pwm ??? tu ne préfère pas utiliser un driver spécialisé pour ça du genre pololu maestro !!!! Oh Punaise .....T'aime bien te faire suer !!
Bon moi j'suis en vacances encore qqes jours et à mon retour ça va bouger !!!
#488
Posté 08 août 2017 - 01:02
J'ai plusieurs solutions à te proposer :
1) La solution hardcore : Recompiler le noyau Linux et le device tree avec le driver du PCA9685. C'est la plus compliquée, mais au moins tu contrôleras chaque sortie comme une sortie PWM normale, toute la partie I²C sera gérée par le noyau lui-même.
2) Adapter la lib adafruit : Elle est faite pour arduino, donc toute la partie I²C ne fonctionnera pas sous linux. Si tu veux la faire fonctionner sur raspberry, il y a un peu de travail.
3) Utiliser les libs I²C de PCA9685 de TeraHz, à mon avis la solution la plus simple.
4) Manipuler l'I²C directement, par manipulation de fichiers (la manière linux quoi). Après, il faut lire la datasheet et envoyer les bonnes commandes.
Quelque soit la solution que tu choisisse, si tu maitrise à peu près le concept de classe en C++, je te conseille de créer une classe Servo, comme celle d'arduino, qui te permettrait de contrôler facilement tes servos sans avoir à faire de calcul entre angle et largeur d'impulsion.
#489
Posté 08 août 2017 - 10:12
Euh, ça ne fonctionne pas comme sur python ???
Me dites pas que c'est encore plus chiant, car sur python c'est extrémement simple.
Pour la carte maestro je ne suis pas contre, on en avait déjà parlé, mais c'est pareil non, faire appel à librairie et hop, non ?
J'avais fini par y arrriver sur python, alors ne me dite pas que c'est encore plus compliqué sinon tous par aux bourres (je déconne hein), mais ça va être rageant, déjà que j'essaye d'apprendre le C++...
Oui, les classes comme ce que j'avais commencé à faire en python d'après les conseils de R1D1 ?
Mais bon, déjà voir comment ça bouge avec un servo pour tester, euh rassurez moi les gars... (smiley en panique les yeux grands ouverts)
3) Utiliser les libs I²C de PCA9685 de TeraHz, à mon avis la solution la plus simple.
Ben c'est comme ça que je le voyais, avec des libs faites pour....
Merci
#490
Posté 08 août 2017 - 10:35
Bah le truc c'est que chez Adafruit, comme beaucoup de hobyistes (et à tort à mon avis, mais ce n'est pas le sujet), ils considèrent que Arduino = C++ et Raspberry = Python, ce qu'il fait qu'ils n'offrent pas de libs C++comme la lib python que tu as utilisé. Heureusement, tu as de la chance, TeraHz l'a fait à leur place.
Avec la lib, ca ne sera pas plus compliqué qu"en python. D'ailleurs, TeraHz à eu la bonne idée de garder les mêmes noms de fonction que dans la lib officielle en python, et d'utiliser une classe, la seule différence étant que cette classe ne s'appelle pas PWM mais PCA9685.
Et ce que veut dire Telson par rapport à la carte maestro, c'est que contrairement au PCA9685, tu n'auras pas à gérer des fréquences et rapport cyclique de PWM mais directement des angles de servos, que tu n'auras pas besoin d'utiliser de boucles (qui ralentissent ton programe) sur la raspberry pour changer la vitesse du servo, et d'autres trucs comme ça.
#492
Posté 09 août 2017 - 09:20
Peut être qqes éléments de réponse ici :
https://www.pololu.com/docs/0J40/10
https://github.com/frc4564/maestro
https://www.pololu.c.../1350/resources
#493
Posté 09 août 2017 - 03:42
Ouais, mais la question qui me vient, comme tu me l'avais déjà expliqué Telson, je ne suis pas contraint à créer des animations pour chaque servo ?
On est bien d'accord que je peux faire réagir mes servos avec des capteurs ou autres comme sur la PCA9685 ?
CAD via une librairie, bouger le servo numéro tant de tant de degrés, on est bien d'accord, car je m'emballe mais je ne voudrais pas acheter trop vite
Sinon j'ai regardé les liens, bon, je n'ai surement pas du tous comprendre niveau code, car j'ai vu des exemples de code à rallonge juste pour bouger un servo, alors qu'en python, 5 lignes de code (environ) et ça bouge
Merci de vos retours les gars
Mais pourquoi tout est aussi compliqué en C++ ;'(
#494
Posté 09 août 2017 - 04:09
1) Python est un langage haut niveau, C est un langage bas niveau. Tu as donc souvent moins de code a écrire pour faire quelque chose en python qu'en C++. C'est encore plus le cas avec le matos pour hobbyiste qui considere que raspberry = python, et qui ne fournit pas de libs pour d'autres langages
2) Les exemples python dans les liens utilisent le port série. Sour linux c'est assez facile, il suffit d'ouvrir un fichier et de lire / écrire dedans, que ce soit en python, bash, C, C++, perl... . Par contre les exemples C++ utilisent l'USB (qui fait a mon avis partie des protocoles les plus compliqués pour programmer) ou UDP, qui nécessité d'avoir des connaissances en programmation réseau. Mais si tu utilises le port série en C++, ça devrait être assez facile.
#496
Posté 09 août 2017 - 10:33
Ok Maximusk, en plus j'avais lu un truc il n'y a pas longtemps sur les languages haut et bas niveau, et le plus proche du moins en dessous du bas niveau si je dis pas de bétise c'est l'assembleur, non ?
(juste pour voir si je m'en rappel bien).
De toutes façons si je veux passer en C++ , je n'ai pas le choix et faire avec, faut juste que ça rentre dans ma caboche lol
Path, je lirai ça demain, avec la traduction car moi et l'anglais
Merci
#497
Posté 10 août 2017 - 08:43
Ouais, les langages bas et haut niveau c'est ça.
Bas niveau c'est proche du langage machine, donc tu peux pas faire plus bas niveau que l'assembleur (sauf si tu codes en binaire, mais la ça s'appelle du masochisme). Le C est plus haut niveau que l'assembleur, mais reste très bas niveau par rapport à la plupart des langages, et C++ est un peu plus haut que C. Le haut niveau c'est quand c'est proche du langage humain, avec des langages du genre ~English (mais c'est vraiment spécial, et plus pour le concept que pour être vraiment utilisé) ou Algol.
#499
Posté 10 août 2017 - 09:18
@ Path : j'ai lu le lien que tu m'a filé, je n'ai pas vraiment compris l'utilité du WiringPi.
En fait WiringPi est une bibliothèque qui facilite l'utilisation des GPIO du raspberry, de l'I2C et de certain module que l'on peut connecter dessus. En fait la gestion des GPIO se fait par l'écriture de fichier sur le disque mais tout cela est transparent grâce à cette bibliothèque en C. Ça correspond à RPi.GPIO en python.
1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users