La carte l298n :
.
Description des bornes :
.
Le schema interne du composant L298n :
.
Principe de fonctionnement :
.

Code : Tout sélectionner
//Constants
#define nbL298N 2
//Parameters
const int enaL298NPin[2] = {10, 5}; // Borne d'activation de l'alimentation du moteur ENA & ENB
const int fwdL298NPin[2] = {8, 9}; // Enroulement moteur A
const int bwdL298NPin[2] = {6, 7}; // Enroulement moteur B
//Variables
int Power = 200;
void setup()
{
//Init Serial USB
Serial.begin(9600); // initialisation du port USB a 9600 bauds par seconde
Serial.println(F("Initialize System")); // Affichage sur l'écran du PC de ce qui est entre les " "
//Init DCmotor
for (int i = 0; i < nbL298N; i++)
{
pinMode(fwdL298NPin[i], OUTPUT); // initialisation en SORTIE des bornes 8 & 9
pinMode(bwdL298NPin[i], OUTPUT); // initialisation en SORTIE des bornes 6 & 7
pinMode(enaL298NPin[i], OUTPUT); // initialisation en SORTIE des bornes 5 & 10
}
}
void loop()
{
testL298N();
}
void testL298N() { /* function testL298N */
////Scenario to test H-Bridge
for (int i = 0; i < nbL298N; i++)
{
digitalWrite(enaL298NPin[i], HIGH); // mise a 1 (soit 5V) les bornes ENA & ENB
analogWrite(bwdL298NPin[i], 0); // Le moteur B ne fonctionne pas
for (int j = 0; j <= Power; j = j + 10)
{
analogWrite(fwdL298NPin[i], j); // Le moteur A tourne dans un sens
delay(20);
}
for (int j = Power; j >= 0; j = j - 10)
{
analogWrite(fwdL298NPin[i], j); // le moteur A tourne dans l'autre sens
delay(20);
}
delay(2000);
}
}
Code : Tout sélectionner
// Moteur 1
int ENA = 10;
int IN1 = 9;
int IN2 = 8;
// Motor 2
int ENB = 5;
int IN3 = 7;
int IN4 = 6;
void setup (){
// on déclare les pins comme sorties
pinMode (ENA, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void Avancer (){ // fonction avancer
//sens moteur A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
analogWrite (ENA, 100); //Vitesse moteur A
//sens moteur B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite (ENB, 100); //Vitesse moteur B
}
void Reculer (){ // fonction reculer
//sens moteur A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
analogWrite (ENA, 128); //Vitesse moteur A
//sens moteur B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite (ENB, 128); //Vitesse moteur B
}
void Droite (){ // fonction pour tourner a droite
//sens moteur A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
analogWrite (ENA, 200); //Vitesse moteur A
//sens moteur B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite (ENB, 100); //Vitesse moteur B
}
void Gauche (){ // fonction pout tourner a gauche
//Sens moteur A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
analogWrite (ENA, 50); //Vitesse moteur A
//sens moteur B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite (ENB, 150); //Vitesse motor B
}
void Arreter (){ // fonction s'arrêter
//Sens moteur A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
analogWrite (ENA, 0); //Vitesse moteur A
//Sens moteur B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
analogWrite (ENB, 0); //Vitesse moteur B
}
void loop (){ // boucle principal du programme où on fait appel aux fonctions ci-dessus pour les exécuter.
Avancer (); // ont avance
delay (5000); // pendant 5 secondes
Reculer (); // ont recule
delay (2000); // pendant 2 secondes
Droite (); // ont vas a droite
delay (2000); pendant 2 secondes
Gauche (); // ont vas a gauche
delay (2000); pendant 2 secondes
Arreter (); // ont s'arrête
delay (4000); pendant 4 secondes
// Retour au début de la boucle principal du programme (le programme tourne donc en boucle indéfiniment).
}