Bon pour la PWM je vais attendre avant de me pencher là dessus car j'ai un petit souci que j'aimerai régler avant tout.
C'est au niveau des moteurs, de manière un peu aléatoire, le moteur gauche s'arrête quand je change le sens de roation, ou qu'une autre instruction est envoyée au driver. C'est un peu aléatoire, des fois ça marche très bien, des fois pas du tout. Très souvent il s'arrête après le premier changement d'instruction.
Par contre quand j'envoi dans le loop toujours la même instruction, il ne s'arrête presque pas, mais ça arrive quand même. Des fois le moteur gauche s'arrête, puis c'est le tour du droit quelques cycles après.
Je soupçonne un faux contact, j'ai essayé de titiller les fils quand il s'arrête, mais non rien ne se passe.
C'est peut-être du à des chutes de tensions, pourtant la batterie lipo est chargée. J'ai essayé sans le smoke stopper, pas de changement.
Quand il se bloque, j'entend un tout petit bruit ( un genre de "tac" ) , et je vois la chenille bouger pendant un très court instant et puis plus rien. J'ai mesuré le courant aux bornes du moteur avec un multimètre, ya pas de jus qui arrive.
Voici le cablage au niveau du driver :
Et le code :
/*--------------------------------------------------------------------------------------------
- LIBRARY -
---------------------------------------------------------------------------------------------*/
#include "SR04.h" // Ultrasonic sensor library
/*--------------------------------------------------------------------------------------------
- VARIABLES -
---------------------------------------------------------------------------------------------*/
int L_MOTOR_IN1 = 8; // Engines pins
int L_MOTOR_IN2 = 9;
int R_MOTOR_IN3 = 3;
int R_MOTOR_IN4 = 2;
/*--------------------------------------------------------------------------------------------
- SETUP -
---------------------------------------------------------------------------------------------*/
void setup ()
{
pinMode(L_MOTOR_IN1, OUTPUT); // L -> Left engine
pinMode(L_MOTOR_IN2, OUTPUT);
pinMode(R_MOTOR_IN3, OUTPUT); // R -> Right engine
pinMode(R_MOTOR_IN4, OUTPUT);
stopper();
delay(1000);
}
/*--------------------------------------------------------------------------------------------
- LOOP -
---------------------------------------------------------------------------------------------*/
void loop ()
{
backward();
delay(5000);
stopper();
delay(1000);
forward();
delay(5000);
stopper();
delay(1000);
turn_left();
delay(5000);
stopper();
delay(1000);
turn_right();
delay(5000);
stopper();
delay(1000);
}
/*--------------------------------------------------------------------------------------------
- FONCTIONS -
---------------------------------------------------------------------------------------------*/
/* Left forward / backward ------------------------------------------------------------------*/
void left_forward()
{
digitalWrite(L_MOTOR_IN1, HIGH);
digitalWrite(L_MOTOR_IN2, LOW);
}
void left_backward()
{
digitalWrite(L_MOTOR_IN1, LOW);
digitalWrite(L_MOTOR_IN2, HIGH);
}
/* Right forward / backward ------------------------------------------------------------------*/
void right_forward()
{
digitalWrite(R_MOTOR_IN3, HIGH);
digitalWrite(R_MOTOR_IN4, LOW);
}
void right_backward()
{
digitalWrite(R_MOTOR_IN3, LOW);
digitalWrite(R_MOTOR_IN4, HIGH);
}
/* Forward ----------------------------------------------------------------------------------*/
void forward()
{
left_forward();
right_forward();
}
/* Backward ----------------------------------------------------------------------------------*/
void backward()
{
left_backward();
right_backward();
}
/* Turn left ----------------------------------------------------------------------------------*/
void turn_left()
{
left_backward();
right_forward();
}
/* Turn right ----------------------------------------------------------------------------------*/
void turn_right()
{
left_forward();
right_backward();
}
/* Stopper ----------------------------------------------------------------------------------*/
void stopper()
{
digitalWrite(L_MOTOR_IN1, HIGH);
digitalWrite(L_MOTOR_IN2, HIGH);
digitalWrite(R_MOTOR_IN3, HIGH);
digitalWrite(R_MOTOR_IN4, HIGH);
}
La doc du driver est ici
Un exemple de code en PWM ici
Merci d'avance pour votre aide, j'ai passé l'après midi là dessus, mais là je sèche .... si quelqu'un a une idée ....