Aller au contenu


Photo

Glenn Robot Humanoide


  • Veuillez vous connecter pour répondre
994 réponses à ce sujet

#481 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 06 août 2017 - 03:52

On en trouve des bouts de code en c++ pour générer des signaux pwm sur raspberry. Ça te convient pas ?

#482 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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


signature_01.png -->

 

Mon Tipeee
 


#483 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

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 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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


signature_01.png -->

 

Mon Tipeee
 


#485 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

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.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#486 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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


signature_01.png -->

 

Mon Tipeee
 


#487 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

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 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

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 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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


signature_01.png -->

 

Mon Tipeee
 


#490 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

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.



#491 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

Posté 09 août 2017 - 08:05

Ok, c'est clair net et précis :)

 

Merci Maximusk :)

 

Bon, je vais voir pour investir sur cette carte ^^

Je vais chercher ça.

 

Bonne fin de vacances Telson ;)

 

Merci.


signature_01.png -->

 

Mon Tipeee
 


#492 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

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 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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++ ;'(


signature_01.png -->

 

Mon Tipeee
 


#494 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 09 août 2017 - 04:09

Ça c'est normal, pour deux raisons :
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.

#495 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 09 août 2017 - 06:53

T'es allé jeter un oeil la dessus ? http://wiringpi.com

#496 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

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


signature_01.png -->

 

Mon Tipeee
 


#497 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

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.



#498 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

Posté 10 août 2017 - 09:09

Oki Maximusk, mais je vais rester sur le C++ c'est déjà bien assez compliqué comme ça, car je sais pas pourquoi mais je n'ai pas fini de me prendre la tête avec. :(

 

@ Path : j'ai lu le lien que tu m'a filé, je n'ai pas vraiment compris l'utilité du WiringPi.


signature_01.png -->

 

Mon Tipeee
 


#499 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

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.



#500 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

Posté 10 août 2017 - 10:39

Ok Arobasseb, c'est ce que je m'étais dis, mais dans le doute, j'ai préféré poser la question :)

 

Bon ben faut que je garde précieusement ce lien ^^

 

Merci


signature_01.png -->

 

Mon Tipeee
 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users