Bonjour,
Je suis étudiant en Terminal SSI et j'aurai besoin d'aide pour terminer mon projet de Science de l'ingénieur.
Mon programme doit mesurer le temps entre 2 impulsions sur un bouton et ensuite, en fonction du temps mesuré, doit faire bouger un servomoteur.
Pour mesurer le temps j'ai un programme qui me donne celui-ci en milliseconde : (millisBoutonOff est le temps à calculer)
Mais quand je les assemble
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 unsigned long millisBoutonON = millis(); int millisBoutonOff = 0; float milliisBoutonOff; void setup() { pinMode(butonPin, INPUT_PULLUP); Serial.begin(9600); chronoStatus = true; } void loop() { boutonState = digitalRead(butonPin); delay(10); if (boutonState == LOW && chronoStatus == false) { millisBoutonON = millis(); Serial.println("Chrono ON"); chronoStatus = true; } if (boutonState == HIGH && chronoStatus == true) { millisBoutonOff = (millis() - millisBoutonON); Serial.println("Chrono OFF = " + String(millisBoutonOff)); chronoStatus = false; } } Et pour le mouvement du servomoteur, j'en ai un autre : #include <Servo.h> Servo monservo; int Nbpas = 1400; int temps; void setup() { //Chronometre pinMode(butonPin, INPUT_PULLUP); Serial.begin(9600); chronoStatus = true; //Servomoteur monservo.attach(3); } void loop() { if ((temps)<(667)){//<90 Nbpas = Nbpas - 200; } if ((temps>750) && (temps<2000)){//80>temps>30 Nbpas = Nbpas + 200; } } if (Nbpas<800){ Nbpas=800;} if (Nbpas>2200){ Nbpas=2200;} monservo.write(Nbpas); delay(1000); }
Cela me donne un peu n'importe quoi, le servomoteur ne va que dans un seul sens et le temps s'affiche très lentement et fais comme si je cliquait doucement alors que j'ai besoin d'un clicketie assez rapide.
Je ne sais pas comment faire
Je pensais à mettre le chrono en void afin de l'appelé seulement lorsque c'est nécessaire mais je ne sais pas comment faire cela
Partager