Bienvenu
- Robot Maker
- → Affichage d'un profil : Messages: Roms
Statistiques de la communauté
- Groupe Membres
- Messages 12
- Visites sur le profil 3 749
- Titre Nouveau membre
- Âge Âge inconnu
- Date de naissance Anniversaire inconnu
-
Gender
Homme
-
Location
France, Bourgogne
-
Interests
Electronique,cinéma, sport
Messages que j'ai postés
Dans le sujet : Salut à tous!
14 mai 2017 - 09:21
Dans le sujet : Robot autonome
13 mai 2017 - 02:33
Merci pour tous vos conseils et je pense avoir compris mais le cerveau a chauffé
#include<Servo.h> Servo myservo; long duration; long distance; int pos; #define trigPin 13 #define echoPin 12 #define led A5 #define led2 A4 #define led3 A3 #define ROUGE B110 // définition du code couleur rouge #define BLEU B011 // définition du code couleur bleu #define BLANC B000 // définition du code couleur blanc #define ETEINT B111 // définition du code couleur pour éteindre les leds void allumerLED(int couleur){ digitalWrite(led, couleur & B001); // Association du code couleur avec les pins de sortie des leds digitalWrite(led2, couleur & B010); digitalWrite(led3, couleur & B100); } void capteurULT(){ digitalWrite(trigPin, LOW); // Vérification de la présence d'un obstacle delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; } void setup(){ myservo.attach(3); // Servomoteur surla broche 3 pinMode(trigPin, OUTPUT); // trigPin est une sortie pinMode(echoPin, INPUT); // echoPin est une sortie pinMode(led, OUTPUT); // led est une sortie pinMode(led2, OUTPUT); // led2 est une sortie pinMode(led3, OUTPUT); // led3 est une sortie digitalWrite(led,HIGH); // A5 au niveau haut digitalWrite(led2,HIGH); // A4 au niveau haut digitalWrite(led3,HIGH); // A3 au niveau haut } void loop(){ int x = 2; for (int pos = 20; pos > 19; pos = pos + x){ // Incrémentation et décrementation if (pos == 160) x = -2; // entre 20 et 160 avec un pas = 2 delay(10); myservo.write(pos); // Action du servomoteur delay(10); capteurULT(); // Détection d'obstacle if (distance < 25) { // Limite détection obstacle 25 cm ; if ( pos <= 110) { // Limite pour l'affichage BLANC if ( pos <= 70) { // Limite pour l'affichage BLEU allumerLED(ROUGE); // Affichage ROUGE entre 70 et 110 delay(10);} else { allumerLED(BLEU); delay(10);}} else { allumerLED(BLANC); delay(10);}} else { allumerLED(ETEINT); delay(10);}} }
Peut-on se servir de ce programme pour faire un robot suiveur ?
Au lieu d'allumer des leds on actionne des moteurs et un autre servomoteur pour la direction du robot type voiture.
Dans le sujet : Robot autonome
12 mai 2017 - 12:58
Proposition : traiter l'aller et le retour dans la même boucle For(...) ajouterait une légère touche d'élégance
Pourquoi pas par contre quel est le principe ?
Je ne vois pas comment faire.
Dans le sujet : Robot autonome
12 mai 2017 - 08:00
Et le résultat fonctionne?
Oui très bien.
Dans le sujet : Robot autonome
11 mai 2017 - 08:08
Bonjour,
Désolé de répondre tardivement mais beaucoup de travail en ce moment.
J'ai réussi à programmer le servomoteur et le capteur ultrason (type radar).
J'ai fais 2 erreurs :
- mauvaise connexion des broches (merci au conseil de Arobasseb)
- ma boucle if ne fonctionnait pas correctement, j'ai donc changé de méthode.
Ce qui nous donne :
#include<Servo.h> Servo myservo; int pos = 0; #define trigPin 13 #define echoPin 12 #define led A5 #define led2 A4 #define led3 A3 void setup() { Serial.begin(9600); myservo.attach(3); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop(){ for(pos = 20; pos < 160; pos += 2) { myservo.write(pos); delay(10); long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; delay(10); if (distance < 20) { // Limite 20 cm ; if ( pos <= 90) { digitalWrite(led,HIGH); // Led Rouge digitalWrite(led2,HIGH); digitalWrite(led3,LOW); delay(10);} else { digitalWrite(led,LOW); // Led White digitalWrite(led2,LOW); digitalWrite(led3,LOW); delay(10); } } else { digitalWrite(led,HIGH); // Led White digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); delay(10); } } for(pos = 160; pos>=20; pos-=2) { myservo.write(pos); delay(10); long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; delay(10); if (distance < 20) { // Limite 20 cm ; if ( pos <= 90) { digitalWrite(led,HIGH); // Led Rouge digitalWrite(led2,HIGH); digitalWrite(led3,LOW); delay(10);} else { digitalWrite(led,LOW); // Led White digitalWrite(led2,LOW); digitalWrite(led3,LOW); delay(10); } } else { digitalWrite(led,HIGH); // Led White digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); delay(10); } } }
- Robot Maker
- → Affichage d'un profil : Messages: Roms
- Privacy Policy