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
- Installer qwant moteur de recherche - Télécharger - Navigateurs
- Copernic moteur de recherche - Télécharger - Navigateurs
- Le fichier pdf à télécharger est disponible avec le même nom sur le site de l'assemblée nationale. mais vous ne le trouverez pas directement avec un moteur de recherche… quelle est l'url de ce fichier pdf sur le site web de l'assemblée nationale ? - Forum Réseaux sociaux
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