Commit 6a8060625fd11c8c0c9ae35f527016f3cf0e2bae

Authored by pfrison
1 parent d8927986

PercTeacher test robot concluant

Showing 1 changed file with 22 additions and 20 deletions   Show diff stats
PercTeacher/Sources/Robot/servoAndStepperControl.c
... ... @@ -2,7 +2,7 @@
2 2 #include <util/delay.h>
3 3  
4 4 #define SERIAL_BAUDE_RATE 9600
5   -#define DELAI_STEP 1000
  5 +#define DELAI_STEP 2
6 6 #define PIN_MOTEUR_GAUCHE 0x40 // pin 12
7 7 #define PIN_MOTEUR_DROIT 0x20 // pin 11
8 8  
... ... @@ -10,24 +10,20 @@
10 10  
11 11 //gestion des moteurs
12 12 void init_pins(void){
13   - // pin 12 et 11
14 13 DDRB = PIN_MOTEUR_GAUCHE | PIN_MOTEUR_DROIT;
15 14 }
16 15  
17   -void pas_moteur_gauche(void){
18   - // pin 12
19   - PORTB |= PIN_MOTEUR_GAUCHE;
20   - _delay_us(DELAI_STEP);
21   - PORTB &= ~PIN_MOTEUR_GAUCHE;
22   - _delay_us(DELAI_STEP);
23   -}
24   -
25   -void pas_moteur_droit(void){
26   - // pin 11
27   - PORTB |= PIN_MOTEUR_DROIT;
28   - _delay_us(DELAI_STEP);
29   - PORTB &= ~PIN_MOTEUR_DROIT;
30   - _delay_us(DELAI_STEP);
  16 +void pas_moteur(int g, int d){
  17 + if (g)
  18 + PORTB |= PIN_MOTEUR_GAUCHE;
  19 + if (d)
  20 + PORTB |= PIN_MOTEUR_DROIT;
  21 + _delay_ms(DELAI_STEP);
  22 + if (g)
  23 + PORTB &= ~PIN_MOTEUR_GAUCHE;
  24 + if (d)
  25 + PORTB &= ~PIN_MOTEUR_DROIT;
  26 + _delay_ms(DELAI_STEP);
31 27 }
32 28  
33 29 //gestion de la liaison serie
... ... @@ -57,6 +53,9 @@ int main(void){
57 53 unsigned char deltaL2 = get_serial();
58 54 unsigned char deltaR1 = get_serial();
59 55 unsigned char deltaR2 = get_serial();
  56 +
  57 +
  58 + send_serial('a');
60 59  
61 60 // conversion 2x8 bits => 16 bits
62 61 int deltaL = (deltaL1 << 8) + deltaL2;
... ... @@ -64,12 +63,15 @@ int main(void){
64 63  
65 64 int deltaMax = deltaL > deltaR ? deltaL : deltaR;
66 65 for(int i=0; i<deltaMax; i++){
67   - if(deltaL > i)
68   - pas_moteur_gauche();
69   - if(deltaR > i)
70   - pas_moteur_droit();
  66 + if(deltaL > i && deltaR > i)
  67 + pas_moteur(1, 1);
  68 + else if(deltaL > i)
  69 + pas_moteur(1, 0);
  70 + else if(deltaR > i)
  71 + pas_moteur(0, 1);
71 72 }
72 73  
  74 + send_serial('b');
73 75 send_serial(0x01);
74 76 }
75 77 return 0;
... ...