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) | ||