deplacement.c 1.28 KB
#include <avr/io.h>
#include <util/delay.h>

#define STEP_GAUCHE 0x10 // pin 7
#define DIR_GAUCHE 0x08 // pin 6
#define STEP_DROIT 0x20 // pin 12
#define DIR_DROIT 0x10 // pin 11

// valeurs a remplacer par ceux donne par PercTeacher
const uint8_t deltaL[] = {};
const uint8_t delaiL[] = {};
const uint8_t deltaR[] = {};
const uint8_t delaiR[] = {};
#define N_DEPLACEMENT 0

void init_deplacements(void){
    DDRH |= STEP_GAUCHE | DIR_GAUCHE;
    DDRB |= STEP_DROIT | DIR_DROIT;
}

static uint16_t* deplacement_commande_suivante(uint16_t num){
    return {deltaL[num], delaiL[num], deltaR[num], delaiR[num]};
}

void deplacement(uint8_t mot){
	int i;
	for(i=0; i<N_DEPLACEMENT; i++){
		uint16_t *commande = deplacement_commande_suivante(i);
		if(mot == GAUCHE)
			deplacement_moteur(mot, commande[0], commande[1]);
		else
			deplacement_moteur(mot, commande[2], commande[3]);
	}
}

static void deplacement_moteur(uint8_t mot, uint16_t delta, uint16_t delai){
	uint16_t i;
    for(i=0; i<delta; i++){
        if (mot == GAUCHE)
            PORTH |= STEP_GAUCHE;
        else if (mot == DROIT)
            PORTB |= STEP_DROIT;
        _delay_ms(delai);
        if (mot == GAUCHE)
            PORTH &= ~STEP_GAUCHE;
        else if (mot == DROIT)
            PORTB &= ~STEP_DROIT;
        _delay_ms(delai);
    }
}