Arduino moteur et ultrasons
Résolu/Fermé
WiildLife
Messages postés
85
Date d'inscription
mercredi 21 octobre 2015
Statut
Membre
Dernière intervention
19 novembre 2020
-
24 mars 2018 à 12:59
Utilisateur anonyme - 25 mars 2018 à 14:57
Utilisateur anonyme - 25 mars 2018 à 14:57
A voir également:
- Arduino moteur et ultrasons
- Google moteur de recherche page d'accueil - Guide
- Safari moteur de recherche - Télécharger - Navigateurs
- Copernic moteur de recherche - Télécharger - Navigateurs
- Installer qwant moteur de recherche - Télécharger - Navigateurs
- Moteur de recherche sans censure - Accueil - Services en ligne
2 réponses
Utilisateur anonyme
24 mars 2018 à 16:18
24 mars 2018 à 16:18
Salut, il nous faudrait plus d'informations sur ton montage électrique (schéma) ainsi que le code complet si possible.
Utilisateur anonyme
24 mars 2018 à 18:30
24 mars 2018 à 18:30
Je ne peut pas tester mais essai dans cette idée :
//PIN Utiliser par le moteur
int E1 = 5;
int M1 = 4;
int E2 = 6;
int M2 = 7;
// déclarations des variables pour l'ultrasons
#include "Ultrasonic.h"
long range;
long rangegauche;
long rangedroite;
Ultrasonic ultrasonic(11);
Ultrasonic ultrasonicgauche(8);
Ultrasonic ultrasonicdroite(9);
void setup()
{
// Moteur 1 et Moteur 2 déclarer comme des sorties afins de les alimenters.
Serial.begin(9600);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
mesureCapteur(range);
mesureCapteur(rangegauche);
mesureCapteur(rangedroite);
digitalWrite(M1, LOW);
digitalWrite(M2, LOW);
// Rotation Gauche
if (range < 20 and (rangegauche < rangedroite)) {
rotationMoteur(0, 255);
}
// Rotation Droite
if (range < 20 and (rangedroite < rangegauche)) {
rotationMoteur(255, 0);
}
// Avancer
if (range >= 20) {
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
}
}
void rotationMoteur(long x, long y) {
// ICI REGLE LE TEMPS DE ROTATION EN CHANGANT ""100""
for (int i = 0; i < 100; i ++) {
analogWrite(E1, x);
analogWrite(E2, y);
delay(5);
}
}
void mesureCapteur(long capteur) {
capteur = ultrasonicdroite.MeasureInCentimeters();
Serial.print(capteur);
Serial.println(" cmdroite");
}
WiildLife
Messages postés
85
Date d'inscription
mercredi 21 octobre 2015
Statut
Membre
Dernière intervention
19 novembre 2020
122
24 mars 2018 à 21:11
24 mars 2018 à 21:11
Ok super intelligent , je n'y avais pas du tout penser , merci beaucoup j'essaye et je communique le résultats merci encore !
WiildLife
Messages postés
85
Date d'inscription
mercredi 21 octobre 2015
Statut
Membre
Dernière intervention
19 novembre 2020
122
25 mars 2018 à 14:50
25 mars 2018 à 14:50
Et bien le résultats est super , c'est exactement ce qu'il me fallait , merci beaucoup a toi , voici le programme final avec quelque modification pour les intéressé.
//Module GSM
// Ici entrer le numéro
// Ici le message
//Vitesse des moteurs
int x = 0; //roue droite
int y = 0; //roue gauche
//PIN Utiliser par le moteur
int E1 = 5;
int M1 = 4;
int E2 = 6;
int M2 = 7;
// déclarations des variables pour l'ultrasons
#include "Ultrasonic.h"
int range;
int rangegauche;
int rangedroite;
Ultrasonic ultrasonic(11);
Ultrasonic ultrasonicgauche(8);
Ultrasonic ultrasonicdroite(9);
void setup()
{
//Module GSM
// sendSMS();
//initialisation a 9600 baud
Serial.begin(9600);
// Moteur 1 et Moteur 2 déclarer comme des sorties afins de les alimenters.
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
//Capteur a ultraons devant
long range;
range = ultrasonic.MeasureInCentimeters(); // Mesure en centimetre
Serial.print(range);//Afficher dans le moniteur série la distance de 0 a 400cm
Serial.println(" cmdevant");
//Capteur a ultraons droite
long rangedroite;
rangedroite = ultrasonicdroite.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangedroite);//0~400cm
Serial.println(" cmdroite");
//Capteur a ultraons gauche
long rangegauche;
rangegauche = ultrasonicgauche.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangegauche);//0~400cm
Serial.println(" cmgauche");
// Moteur 1 et 2 initialiser vers l'avant , puis leur vitesse en fonction du x et y dans les if
digitalWrite(M1, LOW);
digitalWrite(M2, LOW);
analogWrite(E1, x); //PWM Speed Control
analogWrite(E2, y); //PWM Speed Control
// Rotation Gauche
if (range < 20 && (rangegauche < rangedroite)) {
rotationMoteur(0, 255);
}
// Rotation Droite
if (range < 20 && (rangedroite < rangegauche)) {
rotationMoteur(255, 0);
}
// Avancer
if (range >= 20) {
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
}
//Reculer
if ( (rangedroite < 10) && (rangegauche < 10) && (range < 10) ) {
digitalWrite(M1, HIGH);
digitalWrite(M2, HIGH);
rotationMoteur(255, 255);
}
}
// Mini programme pour envoyer les messages
void rotationMoteur(long x, long y) {
// ICI REGLE LE TEMPS DE ROTATION EN CHANGANT ""100""
for (int i = 0; i < 250; i ++) {
analogWrite(E1, x);
analogWrite(E2, y);
delay(5);
}
}
//Module GSM
// Ici entrer le numéro
// Ici le message
//Vitesse des moteurs
int x = 0; //roue droite
int y = 0; //roue gauche
//PIN Utiliser par le moteur
int E1 = 5;
int M1 = 4;
int E2 = 6;
int M2 = 7;
// déclarations des variables pour l'ultrasons
#include "Ultrasonic.h"
int range;
int rangegauche;
int rangedroite;
Ultrasonic ultrasonic(11);
Ultrasonic ultrasonicgauche(8);
Ultrasonic ultrasonicdroite(9);
void setup()
{
//Module GSM
// sendSMS();
//initialisation a 9600 baud
Serial.begin(9600);
// Moteur 1 et Moteur 2 déclarer comme des sorties afins de les alimenters.
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
//Capteur a ultraons devant
long range;
range = ultrasonic.MeasureInCentimeters(); // Mesure en centimetre
Serial.print(range);//Afficher dans le moniteur série la distance de 0 a 400cm
Serial.println(" cmdevant");
//Capteur a ultraons droite
long rangedroite;
rangedroite = ultrasonicdroite.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangedroite);//0~400cm
Serial.println(" cmdroite");
//Capteur a ultraons gauche
long rangegauche;
rangegauche = ultrasonicgauche.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangegauche);//0~400cm
Serial.println(" cmgauche");
// Moteur 1 et 2 initialiser vers l'avant , puis leur vitesse en fonction du x et y dans les if
digitalWrite(M1, LOW);
digitalWrite(M2, LOW);
analogWrite(E1, x); //PWM Speed Control
analogWrite(E2, y); //PWM Speed Control
// Rotation Gauche
if (range < 20 && (rangegauche < rangedroite)) {
rotationMoteur(0, 255);
}
// Rotation Droite
if (range < 20 && (rangedroite < rangegauche)) {
rotationMoteur(255, 0);
}
// Avancer
if (range >= 20) {
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
}
//Reculer
if ( (rangedroite < 10) && (rangegauche < 10) && (range < 10) ) {
digitalWrite(M1, HIGH);
digitalWrite(M2, HIGH);
rotationMoteur(255, 255);
}
}
// Mini programme pour envoyer les messages
void rotationMoteur(long x, long y) {
// ICI REGLE LE TEMPS DE ROTATION EN CHANGANT ""100""
for (int i = 0; i < 250; i ++) {
analogWrite(E1, x);
analogWrite(E2, y);
delay(5);
}
}
24 mars 2018 à 17:31
mais voici le code complet
//Module GSM
// Ici entrer le numéro
// Ici le message
//Vitesse des moteurs
int x = 0; //roue droite
int y = 0; //roue gauche
//PIN Utiliser par le moteur
int E1 = 5;
int M1 = 4;
int E2 = 6;
int M2 = 7;
// déclarations des variables pour l'ultrasons
#include "Ultrasonic.h"
int range;
int rangegauche;
int rangedroite;
Ultrasonic ultrasonic(11);
Ultrasonic ultrasonicgauche(8);
Ultrasonic ultrasonicdroite(9);
void setup()
{
//Module GSM
// sendSMS();
//initialisation a 9600 baud
Serial.begin(9600);
// Moteur 1 et Moteur 2 déclarer comme des sorties afins de les alimenters.
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
//Capteur a ultraons devant
long range;
range = ultrasonic.MeasureInCentimeters(); // Mesure en centimetre
Serial.print(range);//Afficher dans le moniteur série la distance de 0 a 400cm
Serial.println(" cmdevant");
//Capteur a ultraons droite
long rangedroite;
rangedroite = ultrasonicdroite.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangedroite);//0~400cm
Serial.println(" cmdroite");
//Capteur a ultraons gauche
long rangegauche;
rangegauche = ultrasonicgauche.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(rangegauche);//0~400cm
Serial.println(" cmgauche");
// Moteur 1 et 2 initialiser vers l'avant , puis leur vitesse en fonction du x et y dans les if
digitalWrite(M1, LOW);
digitalWrite(M2, LOW);
analogWrite(E1, x); //PWM Speed Control
analogWrite(E2, y); //PWM Speed Control
if (range < 20) {
if (rangegauche < rangedroite) {
delay(700);
x = 0;
y = 255;
}
else {
delay(700);
x = 255;
y = 0;
}
}
else {
x = 255;
y = 255;
} ç
if ( (rangedroite < 10) && (rangegauche < 10) && (range < 10) ) {
digitalWrite(M1, HIGH);
digitalWrite(M2, HIGH);
delay(5000);
x = 255;
y = 255;
}
}
// Mini programme pour envoyer les messages