Carte Romeo

De Wiki Arobose
m (A protégé « Carte Romeo » (‎[edit=sysop] (infini) ‎[move=sysop] (infini)))
(Langage C)
Ligne 21 : Ligne 21 :
  
 
==== Langage C ====
 
==== Langage C ====
 +
===== Fonctions PWM =====
 
Pour générer un signal PWM, le microcontroleur a besoin d'un timer interne. Il utilise le timer 3A  pour E1 et le timer 4D pour E2.
 
Pour générer un signal PWM, le microcontroleur a besoin d'un timer interne. Il utilise le timer 3A  pour E1 et le timer 4D pour E2.
  
Ligne 95 : Ligne 96 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
===== Fonctions moteur =====
 
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="c">
 
<syntaxhighlight lang="c">
 +
void
 +
motor_setup(void)
 +
{
 +
  /* Motor controller */
 +
  DDRD = (1 << PORTD4); /* E1 (PD4) as output pin */
 +
  DDRE = (1 << PORTE6); /* E2 (PE6) as output pin */
 +
 +
  pwm_3_setup();
 +
  pwm_4_setup();
 +
 +
  pwm_3A_enable();
 +
  pwm_4D_enable();
 +
}
 +
 
/* stop */
 
/* stop */
 
void
 
void
 
stop(void)
 
stop(void)
 
{
 
{
 +
  PORTD &= ~(1 << PORT4); /* E1 (PD4) = 0 */
 +
  PORTE &= ~(1 << PORT6); /* E2 (PE6) = 0 */
 
   pwm_4D_write(0);
 
   pwm_4D_write(0);
 
   pwm_3A_write(0);
 
   pwm_3A_write(0);
Ligne 108 : Ligne 126 :
 
  * speed from 0 to 255 */
 
  * speed from 0 to 255 */
 
void
 
void
advance(char speed)
+
advance(uint8_t m1_speed, uint8_t m2_speed)
 
{
 
{
 
   PORTD |= (1 << PORT4); /* E1 (PD4) = 1 */
 
   PORTD |= (1 << PORT4); /* E1 (PD4) = 1 */
 
   PORTE |= (1 << PORT6); /* E2 (PE6) = 1 */
 
   PORTE |= (1 << PORT6); /* E2 (PE6) = 1 */
   pwm_4D_write(speed);
+
   pwm_3A_write(m1_speed);
   pwm_3A_write(speed);
+
   pwm_4D_write(m2_speed);
 
}
 
}
  
Ligne 119 : Ligne 137 :
 
  * speed from 0 to 255 */
 
  * speed from 0 to 255 */
 
void
 
void
back_off(char speed)
+
back_off(uint8_t m1_speed, uint8_t m2_speed)
 
{
 
{
 
   PORTD &= ~(1 << PORT4); /* E1 (PD4) = 0 */
 
   PORTD &= ~(1 << PORT4); /* E1 (PD4) = 0 */
 
   PORTE &= ~(1 << PORT6); /* E2 (PE6) = 0 */
 
   PORTE &= ~(1 << PORT6); /* E2 (PE6) = 0 */
   pwm_4D_write(speed);
+
   pwm_3A_write(m1_speed);
   pwm_3A_write(speed);
+
   pwm_4D_write(m2_speed);
 
}
 
}
  
Ligne 130 : Ligne 148 :
 
  * speed from 0 to 255 */
 
  * speed from 0 to 255 */
 
void
 
void
turn_left(char speed)
+
turn_left(uint8_t m1_speed, uint8_t m2_speed)
 
{
 
{
 
   PORTD &= ~(1 << PORT4); /* E1 (PD4) = 0 */
 
   PORTD &= ~(1 << PORT4); /* E1 (PD4) = 0 */
 
   PORTE |= (1 << PORT6); /* E2 (PE6) = 1 */
 
   PORTE |= (1 << PORT6); /* E2 (PE6) = 1 */
   pwm_4D_write(speed);
+
   pwm_3A_write(m1_speed);
   pwm_3A_write(speed);
+
   pwm_4D_write(m2_speed);
 +
 
 
}
 
}
  
Ligne 141 : Ligne 160 :
 
  * speed from 0 to 255 */
 
  * speed from 0 to 255 */
 
void
 
void
turn_right(char speed)
+
turn_right(uint8_t m1_speed, uint8_t m2_speed)
 
{
 
{
 
   PORTD |= (1 << PORT4); /* E1 (PD4) = 1 */
 
   PORTD |= (1 << PORT4); /* E1 (PD4) = 1 */
 
   PORTE &= ~(1 << PORT6); /* E2 (PE6) = 0 */
 
   PORTE &= ~(1 << PORT6); /* E2 (PE6) = 0 */
   pwm_4D_write(speed);
+
   pwm_3A_write(m1_speed);
   pwm_3A_write(speed);
+
   pwm_4D_write(m2_speed);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Version du 19 juillet 2013 à 15:00

Outils personnels
Catégories