Aller au contenu


samuelfer99

Inscrit(e) (le) 27 nov. 2016
Déconnecté Dernière activité mai 12 2017 10:18
-----

Messages que j'ai postés

Dans le sujet : Projet robotique arduino

10 mai 2017 - 06:14

Daccord mais si je veut faire en sorte que quand jappuie sur la touche # il s'execute pour detecter les obstacle pendant disons 1 minute, je fait comment ?


Dans le sujet : Projet robotique arduino

10 mai 2017 - 01:23

Bonjour, j'ai donc procéder autrement, j'ai fait un programme qui télécommande mon robot, et en appuyant sur la touche #, il se met en mode détection d'obstacle pendant 30 seconde, mais quand je televerse tout ca sur mon robot il fonctionne bien pour avancer reculer ou tourner mais des que jappuie sur # il fait qu'avancer et ne sarrete pas...

 

voici mon code : 

#include "IRremote.h"

//capteur ultra-son
#define trigPin 12           
#define echoPin 13


//contrôle moteur
#define avantM1 3 // Marche avant du premier moteur
#define arriereM1 4 // Marche arrière du premier moteur
#define L293DM1 9 // L293D Premier moteur
#define avantM2 5 // Marche avant du deuxième moteur
#define arriereM2 6 // Marche arrière du deuxième moteur
#define L293DM2 10 // L293D deuxième moteur

//Pin Module récepteur IR et variable
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;


#define ETAT_INDEFINI 0
#define ETAT_A 1
#define ETAT_B 2

int etat;

void setup() {
//configurer tous les broches de commande du moteur en sortie
  pinMode(avantM1, OUTPUT);
  pinMode(arriereM1, OUTPUT);
  pinMode(L293DM1, OUTPUT);
  pinMode(avantM2, OUTPUT);
  pinMode(arriereM2, OUTPUT);
  pinMode(L293DM2, OUTPUT);



Serial.begin(9600);

//le récepteur IR
irrecv.enableIRIn();


  pinMode(trigPin, OUTPUT);   //Trig est une sortie
  pinMode(echoPin, INPUT);    //Echo est une entrée

}



/////////////////////////////////////////////////////////////////////////////////////


void loop()
{
Serial.println(results.value, HEX);

//IR signal reçu
if(irrecv.decode(&results))
{

//avant 
if(results.value==0xFF18E7)
{
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, HIGH); 
    digitalWrite(arriereM1, LOW); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, HIGH); 
    digitalWrite(arriereM2, LOW); 
    delay(1000);
}
//recule
else if(results.value==0xFF4AB5)
{
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, LOW); 
    digitalWrite(arriereM1, HIGH); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, LOW); 
    digitalWrite(arriereM2, HIGH); 
    delay(500);
//pivoter vers la gauche
}
else if(results.value==0xFF10EF)
{
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, HIGH); 
    digitalWrite(arriereM1, LOW); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, LOW); 
    digitalWrite(arriereM2, HIGH); 
   delay(150);
//pivoter vers la droite
}
else if(results.value==0xFF5AA5)
{
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, LOW); 
    digitalWrite(arriereM1, HIGH); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, HIGH); 
    digitalWrite(arriereM2, LOW); 
    delay(150);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
else if(results.value==0xFFB04F)
{
  long duration, distance;
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);               //envoie 10ms sur HIGH
  digitalWrite(trigPin, LOW);       
  // calcul de la distance :
  duration = pulseIn(echoPin, HIGH);   
  distance = duration*340/(2*10000); 
  
  if(distance >= 20) {                 //Si il n'y a pas d'obstacle à plus de 20cm 
    analogWrite(L293DM1, 500);  // avance
    digitalWrite(avantM1, HIGH); 
    digitalWrite(arriereM1, LOW); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, HIGH); 
    digitalWrite(arriereM2, LOW);                             
  }
  else {                               //Sinon (si il voix un objet a moin de 20 cm)
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, LOW); 
    digitalWrite(arriereM1, HIGH); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, LOW); 
    digitalWrite(arriereM2, HIGH); 
    delay(500);
    
    analogWrite(L293DM1, 500); 
    digitalWrite(avantM1, LOW); 
    digitalWrite(arriereM1, HIGH); 
  
    analogWrite(L293DM2, 500); 
    digitalWrite(avantM2, HIGH); 
    digitalWrite(arriereM2, LOW); 
    delay(300);
    }
 delay(300000);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//recevoir la prochaine valeur
irrecv.resume();

//court délai d'attente pour répéter le signal IR
// (empêcher de s'arrêter si aucun signal reçu)
delay(150);
}

else
{
  analogWrite(L293DM1, 500);    //Alors il bouge pas 
  digitalWrite(avantM1, LOW); 
  digitalWrite(arriereM1, LOW); 

  analogWrite(L293DM2, 500); 
  digitalWrite(avantM2, LOW); 
  digitalWrite(arriereM2, LOW);
 
  
}
}



Dans le sujet : Projet robotique arduino

08 mai 2017 - 07:02

J'essaye je vous promet..

Dans le sujet : Projet robotique arduino

08 mai 2017 - 06:43

D'accord, ce que je ne comprends pas c'est
if(etat != etatCourant)
Ainsi que
if(etat == ETAT_A) {

Ou dois-je place la commande pour dire quand il détecte se code ir il effectue ca...

Dans le sujet : Projet robotique arduino

08 mai 2017 - 06:17

Si vous plait, j'ai beau remplacer les truc essayer mais je n'arrive pas... je doit rendre çà le plus vite possible avant ce vendredi, j'arrive pas a faire changer de mode, vous ne pouvez vraiment pas modifier mon code, je comprendrai quand ca sera fait je pense, façon faudra bien que je l'explique, mais si je laisse le projet comme ca je vais me prendre une sale note...