Aller au contenu


seb03000

Inscrit(e) (le) 22 juil. 2011
Déconnecté Dernière activité juil. 30 2021 12:46
*****

Messages que j'ai postés

Dans le sujet : [Projet Newton] Robot Humanoide

23 août 2016 - 09:36

Bonjour.

 

Pas mal ton robot humanoïde, quelle est sa taille ???

 

​Quelle alimentation utilise tu ??? 

 

Une petite vidéo pour voir une petite démonstration de ton robot c'est possible ???


Dans le sujet : capteur US ( Ultrasons )

22 août 2016 - 11:31

Alors je viens de faire mon programme il fonctionne bien, mais j'ai l’impression qu'il y a des raté au niveau du capteur US , ya t'il moyen d'amélioré cela.

 

Voici mon programme:

#include <Servo.h>
 // Définition des broches utilisées par le capteur HC-SR04 
 int trig = 13; 
 int echo = 12;
 //Les LED
 int LEDYeux = 2;   // Broche pour la LED les yeux
 int LEDLaserRouge = 3; // Broche pour LED Laser ( prévient quant ya un obstacle )
 int LEDBleu = 4; // Broche pour LED Bleu ( prévient quand ya pas d'obstacle )
 // définition des broches utilisées sur le shield contrôle moteur DRI0001 
 int direction_moteur_droite = 7; 
 int controle_moteur_droite = 6; 
 int direction_moteur_gauche = 4; 
 int controle_moteur_gauche = 5;
 long lecture_echo; 
 long cm, cm_gauche, cm_droite; 
 // crée l’objet pour contrôler le servomoteur
 Servo monservo;
//=========================================================================================================//
 void moteur (int moteur_gauche, boolean sens_moteur_gauche, int moteur_droite, boolean sens_moteur_droite) 
{ 
 // définition sens moteur LOW avance, HIGH recule 
 digitalWrite(direction_moteur_gauche, sens_moteur_gauche); 
 analogWrite(controle_moteur_gauche, moteur_gauche); 
 digitalWrite(direction_moteur_droite, sens_moteur_droite); 
 analogWrite(controle_moteur_droite, moteur_droite); 
}
 void virage_90 (boolean sens) 
{ 
  // Garder la valeur PWM à 255 
  // Jouer sur la durée en ms pour effectuer un virage souhaité 
  // sens à HIGH pour gauche, LOW pour droite 
  digitalWrite(direction_moteur_gauche, sens); 
  digitalWrite(direction_moteur_droite, !sens); 
  analogWrite(controle_moteur_gauche, 255); 
  analogWrite(controle_moteur_droite, 255); 
  delay(480); 
  analogWrite(controle_moteur_gauche, 0); 
  analogWrite(controle_moteur_droite, 0);        
}
 void calcul_distance() 
{ 
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trig, LOW); 
  lecture_echo = pulseIn(echo, HIGH); 
  cm = lecture_echo / 58; 
}
void setup() 
{ 
  pinMode(LEDYeux, OUTPUT);
  pinMode(LEDBleu, OUTPUT);
  pinMode(LEDLaserRouge, OUTPUT);
  int i; 
  for (i=4;i<=7;i++) 
  pinMode(i, OUTPUT); //définit les port 4 à 7 en sortie 
  analogWrite(controle_moteur_gauche, 0); // arrêt moteur gauche 
  analogWrite(controle_moteur_droite, 0); // arrêt moteur droite 
  pinMode(trig, OUTPUT); 
  digitalWrite(trig, LOW); 
  pinMode(echo, INPUT); 
  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur 
  monservo.write(70); // positionne le servomoteur en fait à 90° 
}
void loop() 
{ 
  digitalWrite(LEDYeux, HIGH);
  digitalWrite(LEDBleu,HIGH); //LED Bleu éclairé quand pas d'obstacle
  digitalWrite(LEDLaserRouge,LOW); // LED Laser rouge éclaire quand ya un obstacle 
  monservo.write(70); 
  delay(1000); 
  calcul_distance(); 
  if (cm >= 90) 
  { 
   // Robot avance tout droit 
   moteur(255, LOW, 255, LOW); 
  } 
  else 
  { 
  digitalWrite(LEDBleu,LOW);
  digitalWrite(LEDLaserRouge,HIGH);
  // Robot stop 
  moteur(0, LOW, 0, LOW); 
  monservo.write(30); 
  delay(1000); 
  calcul_distance(); 
  cm_droite = cm; 
  monservo.write(120); 
  delay(1000); 
  calcul_distance(); 
  cm_gauche = cm; 
  if (cm_droite < cm_gauche) 
  { 
  // Robot tourne 90° à gauche 
  virage_90(HIGH); 
  } 
  if (cm_droite > cm_gauche) 
  { 
  // Robot tourne 90° à droite 
  virage_90(LOW); 
  } 
  if (cm_droite == cm_gauche) 
  { 
  // Robot demi-tour 
  virage_90(HIGH); 
  virage_90(HIGH); 
  } 
 } 
}
 

A oui j'ai trouvais la librairie en question que me fessai défaut.

 

Si vous avez des idée sur l'amélioration du capteur cela serrer sympas.

 

Je vais creuser de mon coter , est aussi finaliser le codage des moteurs de chaque bras de wall-e que je n'est pas mis au poins.


Dans le sujet : capteur US ( Ultrasons )

22 août 2016 - 02:15

Merci Jekert

 

A cette librairie je les en faite.

 

Bon celle que je souhaite avoir , pour quelle fonctionne c'est celle si.

 

Se programme je les pris sur un des sites pour le testé , le souci c'est que j’obtiens une erreur, suite a une librairie manquante je pense.

 

Voici le code en question:

#include « Ultrasonic.h » //lib capteur HSR04
#include <Servo.h>  //lib servo moteur

const int Trig = 7; //declaration pin carte arduino mega
const int Echo = 6; //declaration pin carte arduino mega
long cm; //variable HCSR04
long cm1; //variable HCSR04
long cm2; //variable HCSR04
Ultrasonic HCSR04(Trig,Echo); //appel des fonctions

int motor1Pin1 = 8;    // MOTEUR GAUCHE
int motor1Pin2 = 9;    // MOTEUR GAUCHE
int enablePin1 = 2;     // COMMANDE GAUCHE

int motor2Pin4 = 10;    // MOTEUR DROIT
int motor2Pin3 = 11;    // MOTEUR DROIT
int enablePin2 = 3;     // COMMANDE DROITE

Servo servoexplo; //nom servo

void setup() {
Serial.begin(9600); //monitoring

// déclaration des sorties
pinMode(motor1Pin1, OUTPUT); //declaration en sortie
pinMode(motor1Pin2, OUTPUT); //declaration en sortie
pinMode(enablePin1, OUTPUT); //declaration en sortie

pinMode(motor2Pin4, OUTPUT); //declaration en sortie
pinMode(motor2Pin3, OUTPUT); //declaration en sortie
pinMode(enablePin2, OUTPUT); //declaration en sortie

servoexplo.attach(5); //declaration en sortie

// Mettre la broche Enable a high comme ca les moteurs tournent
digitalWrite(enablePin1, HIGH); //moteur en route
digitalWrite(enablePin2, HIGH); //moteur en route
}

void loop() {
Serial.println(cm); //affichage sur le monitoring

servoexplo.write(30); //angle du servo
cm2 = HCSR04.convert(HCSR04.timing(), 1); //calcul de la distance par la fonction
delay(400); // pause d’acquisition

if (cm < 20) {
digitalWrite(motor1Pin1, LOW);   // ARRIERE TOUTE
digitalWrite(motor1Pin2, HIGH); //
digitalWrite(motor2Pin4, HIGH);   //
digitalWrite(motor2Pin3, LOW);  //

delay (800); //pause de mouvement

digitalWrite(motor1Pin1, HIGH);   // DROITE TOUTE
digitalWrite(motor1Pin2, LOW); //
digitalWrite(motor2Pin4, HIGH);   //
digitalWrite(motor2Pin3, LOW);  //

delay (800); //pause de mouvement

}
else {
// Le moteur gauche AVANT
digitalWrite(motor1Pin1, HIGH);   // AVANT TOUTE
digitalWrite(motor1Pin2, LOW);  //
// Le moteur droit AVANT
digitalWrite(motor2Pin4, LOW);   //
digitalWrite(motor2Pin3, HIGH);  //
}

servoexplo.write(90);
cm1 = HCSR04.convert(HCSR04.timing(), 1);
delay(400); // pause d’acquisition

if (cm1 < 20) {

digitalWrite(motor1Pin1, LOW);   // GAUCHE TOUTE
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin4, LOW);   //
digitalWrite(motor2Pin3, HIGH);  //

delay (800); //pause de mouvement

}
else {
// Le moteur gauche AVANT
digitalWrite(motor1Pin1, HIGH);   // AVANT TOUTE
digitalWrite(motor1Pin2, LOW);  //
// Le moteur droit AVANT
digitalWrite(motor2Pin4, LOW);   //
digitalWrite(motor2Pin3, HIGH);  //
}

servoexplo.write(140);
cm = HCSR04.convert(HCSR04.timing(), 1);
delay(400); // pause d’acquisition

if (cm2 < 20) {

digitalWrite(motor1Pin1, HIGH);   // DROITE TOUTE
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin4, HIGH);   //
digitalWrite(motor2Pin3, LOW);  //

delay (800); //pause de mouvement

}
else {
// Le moteur gauche AVANT
digitalWrite(motor1Pin1, HIGH);   // AVANT TOUTE
digitalWrite(motor1Pin2, LOW);  //
// Le moteur droit AVANT
digitalWrite(motor2Pin4, LOW);   //
digitalWrite(motor2Pin3, HIGH);  //
}

}

Et voici le message d'erreur:

 

sans_t10.png

 

Le bute de cela, c'est de ne pas prendre son code juste voir comment cela fonctionne , points de vue de sa déclaration de son capteur,

 

est celle la me plais bien, du comme vous avez pus le voir se programme me bloque a causse d'une erreur sans doute banale. 


Dans le sujet : Projet de bipède - marche dynamique

13 avril 2014 - 06:27

Bonjour Leon.

Impressionnant, ton projet bipède chapeaux.

Pour se qui concerne les pieds en forme cylindriques , pour quoi ne pas les faire plus large afin qu'il puise tenir ferment le sole??

En tous cas je suivrai ta progression de ton bipède.

Allez courage , et ne l'ache rien.


Dans le sujet : Problème de code pour shield lcd + arduino

10 avril 2014 - 11:25

C'est pour illustré l'utilisation d'une instruction switch ,et du commutateur il
pourra me déclaré et me permettre de choisir parmi un ensemble de valeurs de caractère grâce aux bouton du LCD
C'est comme une série d'instructions if.