robot avec détecteur d 'obstacle

ninaoceane
lun, 01/30/2017 - 20:24
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
ninaoceane
lun, 01/30/2017 - 20:26
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 ();
}
}
}
ninaoceane
lun, 01/30/2017 - 20:27
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.
Alex
mar, 02/07/2017 - 13:56
Est-ce que le L298N est bien alimenté directement par les piles?
Le composant répond bien au signaux de commande? IN1, IN2, etc...
ninaoceane
mer, 03/08/2017 - 14:16
Bonjour,
oui il est directement alimenté par des piles 9 V
Merci d'avance
désolée pour le retard de la réponse