robot avec détecteur d 'obstacle

Portrait de ninaoceane

Bonsoir
j'essaie de monter un robot avec un détecteur d'obstacle sur une carte arduino. J'ai tout assemblé le robot ne fonctionne pas.
j'ai regardé cette vidéo pour s'aider à monter le robot https://www.youtube.com/watch?v=Uf9Gs7sSlQs
voici un résumé de mon montage
Servomoteur pin 9
Capteur ultrason
Ech 8 ligne S sur le shield V5.0
Trig 7 ligne S sur le shield V5.0
Gnd 8 ligne G sur le shield V5.0
Vcc 8 ligne V sur le shield V5.0
L298N
Ena = 1
Enb=6
In1=2
In2=3
In3=4
In4=5
mais quand je téléverse le programme le servomoteur tourne mais les roues ne fonctionnent pas.
Pourriez vous m'aider à résoudre ce probléme
Merci d'avance

Portrait de ninaoceane

voici le cod qui est en italien

#include <Servo.h>
Servo servo1;
int pos = 0;

int posprec = 0;
int gradi = 0;
int incremento = 1;
int ENA=1;
int IN1=2;
int IN2=3;
int IN3=4;
int IN4=5;
int ENB=6;
int gap = 0;
int velocita = 255; // velocità motori (min 120 max 255, gap compreso)
int rotazione90 = 500;
float cm;
void avanti (void)
{
digitalWrite(IN1,0);
digitalWrite(IN2,1);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
analogWrite(ENA, velocita + gap); // Attiva il motore A
analogWrite(ENB, velocita ); // Attiva il motore B
}
void sx90 (void)
{
digitalWrite(IN1,1);
digitalWrite(IN2,0);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
analogWrite(ENA, velocita + gap);
analogWrite(ENB, velocita );
delay (rotazione90);
analogWrite(ENA,0); // blocca il motore A
analogWrite(ENB,0); // blocca il motore B
}

void dx90 (void)
{
digitalWrite(IN1,0);
digitalWrite(IN2,1);
digitalWrite(IN3,0);
digitalWrite(IN4,1);
analogWrite(ENA, velocita + gap);
analogWrite(ENB, velocita );
delay (rotazione90);
analogWrite(ENA,0);
analogWrite(ENB,0);
}

void sensore (void)
{
gradi = posprec;
incremento = 1;
if (pos <= posprec)
incremento = -1;
for(posprec = gradi; posprec != pos; posprec = posprec + incremento)
{
servo1.write(posprec);
delay(15);
}
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
cm = pulseIn(7, HIGH) / 58.0;
}

void setup()
{
delay (3000);
servo1.attach(9);
servo1.write (90);
posprec = 90;
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, INPUT);
analogWrite(ENA,0); // blocca il motore A
analogWrite(ENB,0); // blocca il motore B
}

void loop()
{
pos = 90;
sensore ();

if (cm > 30)
{
avanti();
}
else
{
analogWrite(ENA,0); // blocca il motore A
analogWrite(ENB,0); // blocca il motore B
pos = 0;
sensore ();
if (cm > 30)
{
dx90 ();
}
else
pos = 180;
sensore ();
if (cm > 30)
{
sx90 ();
}
else
{
sx90 ();
sx90 ();
}
}
}

Portrait de ninaoceane

J'ai testé le L298N avec les deux moteurs et ça fonctionne correctement que je branche les pins 2 de Ena et Enb sur 5 volts. Quelqu'un a t-il déjà rencontrés ses difficultés avec un L298N. Je suis une débutante sur arduino.

Portrait de Alex

Est-ce que le L298N est bien alimenté directement par les piles?

Le composant répond bien au signaux de commande? IN1, IN2, etc...

Portrait de ninaoceane

Bonjour,

oui il est directement alimenté par des piles 9 V

Merci d'avance

désolée pour le retard de la réponse