Bonjour,
Le but de mon projet est de créer un détecteur de mouvement grâce au HC-SR04, une carte arduino et un moteur 28BYJ48, et une led.
Le HC-SR04 est fixé sur le moteur est donc tourne avec lui. A une certaine distance la led doit s'allumer, mais le problème est que le HC-SR04 ne calcule la distance qu'à la fin des tours du moteur, or je voudrais qu'elle calcule en continu.
Voici mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <Stepper.h>
 
const int stepsPerRevolution = 2048; //2048 pour la 28BYJ-48 = 1 tour
int Nbre_tour ;
int trig = 2; 
int echo = 3; 
int led = 4;
int buzzer = 5;
long lecture_echo; 
long cm;
// initialiser la bibliothèque stepper sur les broches D8 a D11:
Stepper myStepper(stepsPerRevolution, 8,10,9,11); // Attribution des broches
 
void setup() {
  // Règlage de la vitesse (28BYJ-48):
  myStepper.setSpeed(12); // De 4 à 14 vitesse de rotation
  // Initialisation du port série:
   pinMode(trig, OUTPUT); 
  digitalWrite(trig, LOW); 
 
pinMode(buzzer, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
 
   Nbre_tour = 1; // Faire 1 tours dans un sens:
   Serial.println("Sens Horaire");
  myStepper.step(stepsPerRevolution*Nbre_tour);
  delay(1000);
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trig, LOW); 
  lecture_echo = pulseIn(echo, HIGH); 
  cm = lecture_echo / 58; 
  Serial.print("Distancem : "); 
  Serial.println(cm); 
  if (cm < 5)
{
 digitalWrite (led,HIGH);
 delay (1000);
 digitalWrite (led, LOW);
 delay (1000);// action A
 digitalWrite (buzzer,HIGH);
 delay (1000);
 digitalWrite (buzzer,LOW);
 delay(1000);
}
else
{
 digitalWrite (led,LOW);
 digitalWrite (buzzer,LOW);
} 
 
 
 
  Nbre_tour = 1; //Faire 1 tours dans l autre sens:
  Serial.println("Sens inversie du sens horaire");
  myStepper.step(-stepsPerRevolution*Nbre_tour);
  delay(1000); 
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trig, LOW); 
  lecture_echo = pulseIn(echo, HIGH); 
  cm = lecture_echo / 58; 
  Serial.print("Distancem : "); 
  Serial.println(cm); 
    if (cm < 5)
{
 digitalWrite (led,HIGH);
 delay (1000);
 digitalWrite (led, LOW);
 delay (1000);// action A
 digitalWrite (buzzer,HIGH);
 delay (1000);
 digitalWrite (buzzer,LOW);
 delay(1000);
}
else
{
 digitalWrite (led,LOW);
 digitalWrite (buzzer,LOW);
}
}
Que suggerez vous ?