Bienvenu
- Robot Maker
- → Affichage d'un profil : Messages: Roms
Statistiques de la communauté
- Groupe Membres
- Messages 12
- Visites sur le profil 4 065
- 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


Mon contenu


