projet crepp_git/crepp-projects/raspi-bot · branche main
HBRIDGE.cpp Voir sur GitLab
/* Bibliothèque HBRIDGE pour commande moteur cc by Nicolas LE GUERROUE
 * Version : 20.03.17
 */
#include "Arduino.h"
#include "HBRIDGE.h"



HBRIDGE::HBRIDGE(byte enable_voie_gauche, byte sens_voie_gauche, byte enable_voie_droite, byte sens_voie_droite)  
{
	
	_enable_voie_gauche = enable_voie_gauche;
	_sens_voie_gauche = sens_voie_gauche;
	_enable_voie_droite = enable_voie_droite;
	_sens_voie_droite = sens_voie_droite;
	
	pinMode(_enable_voie_gauche, OUTPUT);
	pinMode(_enable_voie_droite, OUTPUT);
	pinMode(_sens_voie_gauche, OUTPUT);
	pinMode(_sens_voie_droite, OUTPUT);
}


void HBRIDGE::debug() {

	pinMode(_enable_voie_gauche, OUTPUT);
	pinMode(_enable_voie_droite, OUTPUT);
	pinMode(_sens_voie_gauche, OUTPUT);
	pinMode(_sens_voie_droite, OUTPUT);

	
}


void HBRIDGE::motor_on(byte sens_voie_gauche, byte val_voie_gauche, byte sens_voie_droite, byte val_voie_droite) {

	analogWrite(_enable_voie_gauche, val_voie_gauche);
	analogWrite(_enable_voie_droite, val_voie_droite);
	digitalWrite(_sens_voie_gauche, sens_voie_gauche);
	digitalWrite(_sens_voie_droite, sens_voie_droite);


}

void HBRIDGE::motor_on(byte sens_voie_gauche, byte val_voie_gauche, unsigned long delai_motor_gauche_on,     byte sens_voie_droite, byte val_voie_droite, unsigned long delai_motor_droite_on ) {

	delta_delai = delai_motor_gauche_on - delai_motor_droite_on;

	if(delta_delai>0) {//si delta>0, alors delai_gauche>delai_droite

		analogWrite(_enable_voie_gauche, val_voie_gauche);
		analogWrite(_enable_voie_droite, val_voie_droite);
		digitalWrite(_sens_voie_gauche, sens_voie_gauche);
		digitalWrite(_sens_voie_droite, sens_voie_droite);
		delay(delai_motor_droite_on);
		motor_off(1,0);//coupe la voie droite
		delay(delta_delai);
		motor_off(0,0); //coupe toutes les voies
	}
	
	if(delta_delai<0) { //si delta<0, alors delai_gauche<delai_droite

		analogWrite(_enable_voie_gauche, val_voie_gauche);
		analogWrite(_enable_voie_droite, val_voie_droite);
		digitalWrite(_sens_voie_gauche, sens_voie_gauche);
		digitalWrite(_sens_voie_droite, sens_voie_droite);
		delay(delai_motor_gauche_on);
		motor_off(0,1);//coupe la voie gauche
		//delay(abs(delta_delai));
		motor_off(0,0); //coupe toutes les voies

	}

	if(delta_delai==0) { //les moteurs se coupent en même temps

		analogWrite(_enable_voie_gauche, val_voie_gauche);
		analogWrite(_enable_voie_droite, val_voie_droite);
		digitalWrite(_sens_voie_gauche, sens_voie_gauche);
		digitalWrite(_sens_voie_droite, sens_voie_droite);
		//delay(delai_motor_gauche_on);//attend le delai d'un moteur (gauche ou droit est similaire !!)
		motor_off(0,0); //coupe toutes les voies
	}

}

void motor_prog(byte sens_voie_gauche, byte val_voie_gauche, int delai_acceleration_voie_gauche,      byte sens_voie_droite, byte val_voie_droite, int delai_acceleration_voie_droite) {



}

void HBRIDGE::motor_off(bool state_voie_gauche, bool state_voie_droite) {

	if(state_voie_gauche==false) {
	analogWrite(_enable_voie_gauche, 0);
	digitalWrite(_sens_voie_gauche, 0);
	}

	if(state_voie_droite==false) {
	analogWrite(_enable_voie_droite, 0);
	digitalWrite(_sens_voie_droite, 0);	
	}
}//fin arret