Aller au contenu


Abdessamad Abalhi

Inscrit(e) (le) 05 juin 2015
Déconnecté Dernière activité sept. 14 2021 02:46
*----

Sujets que j'ai initiés

Arduino Cotoxis probmlème détection obstacle

06 juin 2015 - 12:10

Bonjour,

 

j'ai voulu réaliser cotoxis V2 avec l'arduino. j'ai réaliser tout le montage en respectant le tout. Mon problème est assez simple. Mon robot avance, mon capteur détecte les obstacle mais le robot ne réasis pas, il continue tout droit.

J'ai pas mis de micro-rupteur comme dans le tuto mais je n'ai pas changé le code. Pourrais-ce être un problème?(je pense pas).

 

dans le tuto c'est un duelimanova qui est t'uliliser et dans la tuto, un DUemilanova, cela pourrais-til posé un problème?

 

et si quelqu'un pourrais m'expliquer ce qu'est "intvldr" s'il vous plait ?

 

je suis débutant 

 

Je vous remercie de votre attention !

 

j'ai utilisé ce code:

 
 
#include <Servo.h>

#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0

#define UPDDG 3
#define UPDDD 4

#define SHARP 4

#define VMAX 5

Servo servog;
Servo servod;

int vLdr = 5;

int getNeutral(int s)
{
if(s == SERVOG)
return 86;
else
return 84;
}


void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}


void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

void handleUPDD(int updd)
{
if(digitalRead(updd) == HIGH)
{
move(ARRIERE);
delay(500);

if (updd == UPDDG)
{
move(DROITE);
}
else
{
move(GAUCHE);
}
delay(800);
}
}

void sharp()
{
int v = analogRead(SHARP);
if (v >= 180)
{
move(ARRIERE);
delay(300);
move(DROITE);
delay(900);
}
else if (v >= 100)
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0);
delay(1500);
}
}
void setup()
{
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);

Serial.begin(9600);
servog.attach(10);
servod.attach(9);
move(AVANT);
}

void loop()
{
handleUPDD(UPDDG);
handleUPDD(UPDDD);
sharp();
move(AVANT);
delay(100);
}