Bonjour , ayant récemment entendu parler de la new ping library peut on m'expliquer comment l'utiliser ainsi que la fonction Max distance , merci d'avance pour vos réponses .
Bonjour,
Tout est expliqué ici.
Max distance est précisée dans le constructeur.
Merci beaucoup pour ta réponse mais a quelle partis du code l'utilise (et avec quelle autre fonction l'utiliser ) , merci d'avance ![]()
C'est le constructeur qui l'utilise
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
et donc il ne me reste plus qu'a definir mes mesures et et mes broches ?
Lisez un des exemples...
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(115200);
}
void loop() {
delay(50);
Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");
}
Ce n’est pas super compliqué à comprendre... on définit la variable sonar comme une instance de la classe, connectée sur les pins 11 et 12 et on lui dit de ne pas essayer de lire au delà de 2m (200cm)
La boucle ensuite lit la distance et l’affiche, avec une petite attente de 50ms entre chaque lecture
est ce correct de cette manière :
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 11
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
/* Utilisation du capteur Ultrason HC-SR04 pour contrôler un servomoteur*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// définition des broches utilisées
int servo = 9
long lecture_echo;
long cm;
int val;
long lastCm = 0;
#include <Stepper.h>
const int enable = 30;
int nombreDePas = 48*64;
Stepper monMoteur(nombreDePas,8,13,10,6);
void setup()
{
myservo.attach(servo);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
monMoteur.setSpeed(9);
}
void loop()
{
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo, HIGH);
cm = lecture_echo / 58;
int diff = int(abs(lastCm - cm)); // detection de grand saut
if(diff < 20){ // seulement si diff est faible
val = min(cm,179);
if( val< 179){
Serial.print(diff);
Serial.print(" : ");
Serial.println(val);
myservo.write(val);
}
}
delay(10);
lastCm = cm;
monMoteur.step(100);
monMoteur.step(-200);
}
dsl nouvelle version :
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 11
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
/* Utilisation du capteur Ultrason HC-SR04 pour contrôler un servomoteur*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// définition des broches utilisées
int servo = 9 ;
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
int val;
long lastCm = 0;
#include <Stepper.h>
const int enable = 30;
int nombreDePas = 48*64;
Stepper monMoteur(nombreDePas,8,13,10,6);
void setup()
{
myservo.attach(servo);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
monMoteur.setSpeed(9);
}
void loop()
{
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo, HIGH);
cm = lecture_echo / 58;
int diff = int(abs(lastCm - cm)); // detection de grand saut
if(diff < 20){ // seulement si diff est faible
val = min(cm,179);
if( val< 179){
Serial.print(diff);
Serial.print(" : ");
Serial.println(val);
myservo.write(val);
}
}
delay(10);
lastCm = cm;
monMoteur.step(100);
monMoteur.step(-200);
}
ça veut dire quoi « correct » ? Est-ce que ça compile ? qu’est-ce que ça fait ce que voulez ?
je veux savoir si l'application du code est correct et bien employé
Ben on sait pas... si c’est pour faire clignoter la Tour Eiffel, non ça ne marchera pas.... ![]()
Sinon vous utilisez toujours lecture_echo = pulseIn(echo, HIGH); donc c’est que vous n’avez pas compris ou pas étudié l’exemple... bref pas bien...
et comment pourrai-je changeai lecture_echo = pulseIn(echo, HIGH); , sachant que mon objectif est de faire un robot ramasseur avec un capteur ultrason . Et pour faire clignoter la Tour Eiffel je repasserai ![]()
Et bien vous étudiez comment fonctionne l’exemple Posté plus haut...vous regardez comment on lit une distance...et vous appliquez
Indice: c’est cette ligne qui mesure et qui imprime la distance en cmSerial.print(sonar.ping_cm());
C’est difficile, hein? ![]()
OUi c'est compliqué
mais est ce bon :
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 11
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
/* Utilisation du capteur Ultrason HC-SR04 pour contrôler un servomoteur*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// définition des broches utilisées
int servo = 9 ;
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
int val;
long lastCm = 0;
#include <Stepper.h>
const int enable = 30;
int nombreDePas = 48*64;
Stepper monMoteur(nombreDePas,8,13,10,6);
void setup()
{
Serial.begin(115200);
myservo.attach(servo);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
monMoteur.setSpeed(9);
}
void loop()
{
delay(50);
Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo, HIGH);
cm = lecture_echo / 58;
int diff = int(abs(lastCm - cm)); // detection de grand saut
if(diff < 20){ // seulement si diff est faible
val = min(cm,179);
if( val< 179){
Serial.print(diff);
Serial.print(" : ");
Serial.println(val);
myservo.write(val);
}
}
delay(10);
lastCm = cm;
monMoteur.step(100);
monMoteur.step(-200);
}
Non mais sérieusement, vous le faites exprès - hein ? c'est rien que pour m'embêter ??
d'après vous à quoi servent ces lignes dans votre code?
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo, HIGH);
cm = lecture_echo / 58;
Je dois supprimer ces lignes ou les modifier ?
Dans sa réponse #12, le monsieur te dit que l'instruction
Serial.print(sonar.ping_cm());
affiche la distance en centimètres. Donc il est probable que ceci
sonar.ping_cm()
calcule la distance en centimètres.
Si tu veux mettre cette distance dans une variable appelée cm, tu as juste à faire
cm = sonar.ping_cm();
Le reste tu peux l'enlever
Vous ne comprenez pas une seule des lignes de code que vous avez pompées quelque part, c’est ça?
lesept:
Dans sa réponse #12, le monsieur te dit que l'instructionSerial.print(sonar.ping_cm());affiche la distance en centimètres. Donc il est probable que ceci
sonar.ping_cm()calcule la distance en centimètres.
Si tu veux mettre cette distance dans une variable appelée cm, tu as juste à fairecm = sonar.ping_cm();Le reste tu peux l'enlever
lesept:
Dans sa réponse #12, le monsieur te dit que l'instructionSerial.print(sonar.ping_cm());affiche la distance en centimètres. Donc il est probable que ceci
sonar.ping_cm()calcule la distance en centimètres.
Si tu veux mettre cette distance dans une variable appelée cm, tu as juste à fairecm = sonar.ping_cm();Le reste tu peux l'enlever
Merci , pour ta réponse , je dois donc le déclarer comme une constante ?
Si tu veux mettre cette distance dans une variable