AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
output/servo/demo_servo.c

Commande la rotation de servo avec un bouton poussoir.

#include <avrio/led.h>
#include <avrio/delay.h>
#include <avrio/button.h>
#include <avrio/servo.h>
/* constants ================================================================ */
#define DEFAULT_PULSE 1500
#define MIN_PULSE 800
#define MAX_PULSE 2200
#define STEP_PULSE 20
/* main ===================================================================== */
int
main (void) {
uint16_t usPulse = DEFAULT_PULSE;
vServoInit (); // Toutes les voies sont validées
// Règlage des largeurs d'impulsion par défaut
for (uint8_t ucServo = 0; ucServo < ucServoChannels(); ucServo++) {
vServoSetPulse (ucServo, DEFAULT_PULSE);
}
for (;;) {
// BP1 appuyé
; // Attente relâchement BP1
usPulse += STEP_PULSE; // Augmente la largeur d'un pas
// Si la largeur est trop grande, on revient au min
if (usPulse > MAX_PULSE) {
usPulse = MIN_PULSE;
}
// On envoie le nouveau réglage aux servos
for (uint8_t ucServo = 0; ucServo < ucServoChannels(); ucServo++) {
vServoSetPulse (ucServo, usPulse);
}
// On bascule l'état de la LED1
}
}
return 0;
}
/* ========================================================================== */