• Bonsoir, je me rends juste compte que les notifications des nouveaux messages étaient limitées aux membres actifs dans les 30 derniers jours. Donc, j'ai supprimé cette option. En espérant que vous aurez bien les notifications attendues. Merci pour votre patience. Yves

Discussion Côté réception...

ramboman

Membre Sénior
Comment piloter 16 servos avec un arduino... sans se casser la tête ?
Je me propose d'évaluer le servo driver adafruit piloté par i2c...

Réglé sur 60Hz, on a une période de 16.7msec...
Comme on est en 12 bits la largeur du pulse est réglable à 4.07µsec près
avec une instruction du type :
pwm.setPWM(servonum, 0, pulselen)

"pulselen" peut varier de 0 à 4095...
Pour notre application le servo sera centré à 1.5msec... 375 (à calibrer)
et le signal pourra varier entre 250 (1.0msec) et 500 (2.0msec)

Commentaires ?
 

Fichiers joints

  • servo driver.JPG
    servo driver.JPG
    147,8 KB · Vues: 15
Je tombe sur ton post en cherchant comment commander les éclairages avec cette petite arduino nano chinoise.
Je souhaite l'affecter à une voie du récepteur et via les modes allumer/éteindre les feux de navigation, les strobe et autre phare d’atterrissage en fonction de la position d'un interrupteur... Je suis presque sûr que ça existe mais je n'ai pour le moment rien trouvé :)
Tu utilises quelle bibliothèque ?
 
RHic33;2572441 à dit:
Je tombe sur ton post en cherchant comment commander les éclairages avec cette petite arduino nano chinoise.
Je souhaite l'affecter à une voie du récepteur et via les modes allumer/éteindre les feux de navigation, les strobe et autre phare d’atterrissage en fonction de la position d'un interrupteur... Je suis presque sûr que ça existe mais je n'ai pour le moment rien trouvé :)
Tu utilises quelle bibliothèque ?

Bonjour

Je ne sais pas de quelle fonction pulselen ramboman parle. Dans mon cas j'ai utilisé la fonction pulseIn pour faire la post-combustion sur une turbine electrique avec un disque de diode RGB qui change de couleur et d'intensité avec les gaz. Le fichier source est en piece jointe.
Le plus simple, tu connectes l'arduino au recepteur et au PC, tu lis la valeur de pulseIn avec le bouton dans une position, ensuite la valeur avec le bouton de l'emetteur de l'autre coté, tu cherches le milieu= valeur1 + valeur2 / 2 et ensuite dans le programme si la valeur de pulseIn est inferieure à milieu c'est une position si c'est plus grand c'est l'autre.
C'est aussi simple que cela. On peut evidement compliquer la chose avec differents testes de control. En assembleur, pour un PIC, j'avais creé une routine bien plus évoluée, mais c'était en assembleur qui, pour moi, est bien plus simple que le langage arduino.

Pour ramboman, pour controler beaucoup de servo avec un µC, il existe une méthode qui consiste à gérer les pulses avec un seul timer. On met à 1 toutes les sorties servos puis on les repasse à zero en fonction de la lecture du timer et de la durée programmée on en parle ici: http://mathieu.agopian.free.fr/prog_pic/servoter/ mais c'est infiniment plus simple en assembleur ou l'on a la maitrise totale du temps.

Gilles
 

Fichiers joints

  • turbine.zip
    2,2 KB · Vues: 5
gedonet;2572454 à dit:
Bonjour

Je ne sais pas de quelle fonction pulselen ramboman parle.

bin pulseIn, comme son nom l'indique sert à ... mesurer une impulsion ( entrée ), et Pulselen sert à ... générer une impulsion ( sortie )

on trouve cette fameuse fonction dans la librairie "PWM servo driver" de chez Adafruit ....

Alain
 
Haut