Carte Romeo
De Wiki Arobose
(→Langage C) |
|||
Ligne 24 : | Ligne 24 : | ||
Dans un premier temps, il faut initialiser les timers en mode PWM. Nous configurons le mode PWM avec des valeurs fréquemment utilisées pour la commande de moteurs. | Dans un premier temps, il faut initialiser les timers en mode PWM. Nous configurons le mode PWM avec des valeurs fréquemment utilisées pour la commande de moteurs. | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="c"> |
/* timer3 is used for phase-correct 8-bits PWM mode | /* timer3 is used for phase-correct 8-bits PWM mode | ||
and with clock prescaled to system clock divided by 64 */ | and with clock prescaled to system clock divided by 64 */ | ||
Ligne 54 : | Ligne 54 : | ||
Il faut activer les pins utilisées par le L298 (5:OC3A et 6:OC4D). | Il faut activer les pins utilisées par le L298 (5:OC3A et 6:OC4D). | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="c"> |
/* enable OC4D (pin D6) as pwm output */ | /* enable OC4D (pin D6) as pwm output */ | ||
void | void | ||
Ligne 75 : | Ligne 75 : | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Pour finir, il faut indiquer la valeur du PWM : cette valeur indique le temps haut du signal compris entre 0 et 255. Par exemple, pour avoir un signal carré (temps haut = temps bas), il faut avoir une valeur de 127. Ces valeurs sont écrites dans les registres OCRnx. | ||
+ | |||
+ | <syntaxhighlight lang="c"> | ||
+ | |||
+ | /* write value a in PWM 3A */ | ||
+ | void | ||
+ | pwm_3A_write(char a) | ||
+ | { | ||
+ | OCR3A = a; | ||
+ | } | ||
+ | |||
+ | /* write value a in PWM 4D */ | ||
+ | void | ||
+ | pwm_4D_write(char a) | ||
+ | { | ||
+ | OCR4D = a; | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
Nous avons ensuite créer des fonctions qui permettent au robot d'avancer, reculer et tourner en précisant la vitesse (de 0 à 255). | Nous avons ensuite créer des fonctions qui permettent au robot d'avancer, reculer et tourner en précisant la vitesse (de 0 à 255). | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="c"> |
/* stop */ | /* stop */ | ||
void | void | ||
Ligne 130 : | Ligne 150 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Pour finir, les fonctions main() et setup() | Pour finir, les fonctions main() et setup() | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="c"> |
+ | |||
+ | void | ||
+ | pin_setup(void) | ||
+ | { | ||
+ | /* Motor controller */ | ||
+ | DDRD = (1 << PORTD4); /* PD4 as output pin */ | ||
+ | DDRE = (1 << PORTE6); /* PE6 as output pin */ | ||
+ | } | ||
+ | |||
void | void | ||
setup(void) | setup(void) |