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 ?
- Robot Maker
- → Affichage d'un profil : Messages: samuelfer99
Statistiques de la communauté
- Groupe Membres
- Messages 17
- Visites sur le profil 4 359
- Titre Nouveau membre
- Âge Âge inconnu
- Date de naissance Anniversaire inconnu
-
Gender
Non spécifié
Outils utilisateur
Amis
samuelfer99 n'a pas encore ajouté d'ami.
Derniers visiteurs
Messages que j'ai postés
Dans le sujet : Projet robotique arduino
10 mai 2017 - 06:14
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
Dans le sujet : Projet robotique arduino
08 mai 2017 - 06:43
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...
- Robot Maker
- → Affichage d'un profil : Messages: samuelfer99
- Privacy Policy