Servo et Arduino

Bonjour à tous, dans le cadre des PPE de terminal, moi et mon groupe réalisons un bras robot. J'aimerais le commander avec ma petite Arduino Uno. Pour les premier test j'ai réalisé ce programme :

// --- Inclusion des librairies utilisées ---

#include <Servo.h>

// --- constantes des broches ---

const int LED=5;
const int SERVO=2;

// --- Déclaration des variables globales ---

int impulsion = 1500;

// --- Initialisation des fonctionnalités utilisées ---

Servo mon_servo;

// --- Fonction Setup ---

void setup()
{

mon_servo.attach(SERVO);
pinMode(SERVO, OUTPUT);
pinMode(LED, OUTPUT);
}

void loop()

{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
mon_servo.writeMicroseconds(impulsion);
delay(3000);
mon_servo.writeMicroseconds(2000);
delay(3000);
mon_servo.writeMicroseconds(900);
delay(2500);
mon_servo.writeMicroseconds(impulsion);

}

Les servos sont censés être piloté par une PWM mais la sorti 2 n'est pas une PWM (elle n'a pas le ~) pourtant le servo tourne comme le programme le lui demande. Est-ce que c'est la bibliothèque servo qui fait que la sorti PWM n'est pas nécessaire ? J'avoue ne pas tout comprendre, si quelqu'un a une réponse je la prend.

Merci d'avance.

Papey

Bonjour,
les servomoteurs ne sont pas "vraiment" controlés par PWM (dans le sens strict du terme, voir ici).
Toutes les sorties de l'arduino permettent de faire du PWM, et elles permettent toutes de contrôler des servomoteurs.
Les sorties notées PWM permettent de générer facilement (analogWrite) un signal PWM, avec le logiciel arduino. mais rien n'empêche de faire du PWM avec d'autres ports (il faut juste le faire soit-même, avec des "digitalWrite" et "delay" par exemple).

Voilà donc pourquoi on peut contrôler un servomoteur même lorsqu'on est pas sur une sortie PWM :slight_smile:

Oui excuse moi je me suis mal exprimé c'est le temps a l'état haut du signal ! Merci pour la réponse !