Modifications

Sauter à la navigation Sauter à la recherche
4 165 octets ajoutés ,  7 juin 2012 à 21:27
Ligne 1 : Ligne 1 :  
{{tmbox | text = En cours de traduction}}
 
{{tmbox | text = En cours de traduction}}
   −
=== Introduction ===
+
== Introduction ==
 
Voici un contrôleur PWM/Servo 16 canaux (12 bits) utilisant une interface de communication I2C interface.
 
Voici un contrôleur PWM/Servo 16 canaux (12 bits) utilisant une interface de communication I2C interface.
   Ligne 9 : Ligne 9 :     
Note: ce produit est aussi connu sous son appellation d'origine "''Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685''"
 
Note: ce produit est aussi connu sous son appellation d'origine "''Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685''"
 +
 +
== Détail en image ==
 +
 +
=== Raccordement Servo Moteur ===
 +
Faite attention lors du raccordement de vos servo moteurs.
 +
 +
Inverser le sens de raccordement du servo reviendrait à appliquer +5v sur la broche de commande du PCA9685 (par l'intermédiaire du moteur)... GLOUPS!
 +
 +
TODO - Montage servo moteur ... attention couleur Graupner
 +
 +
== Mise en Oeuvre ==
 +
Voici un exemple de mise en oeuvre ayant pour but de prendre le contrôle de deux servo-moteurs.
 +
 +
L'un deux est placé sur la sortie 1 du breakout tandis que l'autre est placé sur la sortie 9.
 +
 +
=== Montage ===
 +
 +
TODO
 +
 +
=== Résultat ===
 +
Voici un petit exemple du résultat en vidéo :-)
 +
 +
TODO
 +
 +
=== Code ===
 +
  <nowiki>/***************************************************
 +
  Voici un exemple qui utilise breakout PWM Driver d'AdaFruit
 +
  (nom: Adafruit 16-channel PWM & Servo driver)
 +
 
 +
  Ce programme de démonstration commande deux servo moteurs
 +
  (Un TowerPro Micro Servo SG90 et un TowerPro SG 5010).
 +
 
 +
  Disponible sur le WebShop de MCHobby!
 +
  ------> http://www.mchobby.be/
 +
 +
  Cet exemple utilise la communication I2C pour communiquer avec le
 +
  breakout. 2 broches sont nécessaire pour réaliser cet interfaçage.
 +
  Pour Arduino UNOs, SCL -> Analogique 5, SDA -> Analogique 4
 +
 +
  Basé sur l'exemple orginal de la librairie Adafuit_PWMServoDriver/Servo.uno
 +
 +
  ****************************************************
 +
  Adafruit invests time and resources providing this open source code,
 +
  please support Adafruit and open-source hardware by purchasing
 +
  AdaFruit products!
 +
 +
  Original demo written by Limor Fried/Ladyada for Adafruit Industries.
 +
  This sample and translation by MC Hobby (www.mchobby.be) 
 +
  BSD license, all text above must be included in any redistribution
 +
  Cet exemple et traduction par MC Hobby (www.mchobby.be)
 +
  Licence BSD, tout le texte ci-dessus doit etre inclus dans toutes les redistributions.
 +
****************************************************/
 +
 +
#include <Wire.h>
 +
#include <Adafruit_PWMServoDriver.h>
 +
 +
// Utilisation de l'adresse par défaut 0x40 du Breakout.
 +
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver( 0x40 );
 +
 +
// Suivant le type de servo utilisé, la largeur d'impulsion minimale et Maximale
 +
// peut changer. L'idéal est de sélectionner des valeurs aussi petites et aussi
 +
// grande que possible sans jamais atteindre la butée de blocage du servo-moteur.
 +
// Vous aurrez peut-etre besoin de modifier ces valeurs pour les faire correspondrent
 +
// à votre type de servo!
 +
#define SERVOMIN  150 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096)
 +
#define SERVOMAX  600 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096)
 +
 +
// Servos Commandés - Numéro de sorties sur le breakout
 +
uint8_t servo1 = 1;
 +
uint8_t servo9 = 9;
 +
 +
void setup() {
 +
  Serial.begin(9600);
 +
  Serial.println("Controle des Servo Moteur #1 et #9!");
 +
 +
  pwm.begin();
 +
 
 +
  pwm.setPWMFreq(60);  // Les servo sont mis-à-jour à ~60 Hz
 +
  Serial.println("Fin de setup()");
 +
}
 +
 +
void loop() {
 +
  //--- Controle du Premier Servo (no 1) ---
 +
  Serial.println("Servo #1 à 45 degrés");
 +
  // Transformation de degré (0 à 180) en pulse (SERVOMIN à SERVOMAX)
 +
  int pulseLen = map( 45, 0, 180, SERVOMIN, SERVOMAX );
 +
  pwm.setPWM(servo1, 0, pulseLen);
 +
 
 +
  delay(1000);
 +
 
 +
  //--- Controle du Deuxieme Servo (no 9) ---
 +
  Serial.println("Servo #9 à 30 degrés");
 +
  pulseLen = map( 30, 0, 180, SERVOMIN, SERVOMAX );
 +
  pwm.setPWM(servo9, 0, pulseLen);
 +
 
 +
  delay(1000);
 +
 +
  //--- Controle du Premier Servo (no 1) ---
 +
  Serial.println("Servo #1 à 120 degrés");
 +
  // Transformation de degré (0 à 180) en pulse (SERVOMIN à SERVOMAX)
 +
  pulseLen = map( 120, 0, 180, SERVOMIN, SERVOMAX );
 +
  pwm.setPWM(servo1, 0, pulseLen);
 +
 
 +
  delay(1000);
 +
 +
  //--- Controle du Deuxieme Servo (no 9) ---
 +
  Serial.println("Servo #9 à 150 degrés");
 +
  pulseLen = map( 150, 0, 180, SERVOMIN, SERVOMAX );
 +
  pwm.setPWM(servo9, 0, pulseLen);
 +
 
 +
  delay(1000);
 +
 
 +
  //--- Les deux servo à 0 ---
 +
  Serial.println("Servo #1 et #9 à 150 degrés");
 +
  pulseLen = map( 0, 0, 180, SERVOMIN, SERVOMAX );
 +
  pwm.setPWM(servo1, 0, pulseLen);
 +
  pwm.setPWM(servo9, 0, pulseLen);
 +
 
 +
  delay(3000);
 +
}
 +
</nowiki>
    
=== Où Acheter ===
 
=== Où Acheter ===
29 917

modifications

Menu de navigation