J'ai trouvé la solution pour la PWM, merci à vous
cependant j'ai un petit doute sur le code:
Quand la fonction IF va être vrai, cela va activer la commande PWM mais quand, le programme va la revérifier et quel sera fausse ce sera donc "ELSE" qui sera exécuté, ce que j'ai peur c'est que le vérin n'aura pas le temps de faire ça cours, du coup j'ai deux solution:
-
Mettre qu'une fonction IF sans ELSE donc le vérin restera en mode PWM (faut qu'il soit équipé d'une "fin de cours" ou d'un potentiomètre)
-
Installer deux capteurs, type "bouton poussoir" et une fonction IF qui active la broche SD et cela coupera la PWM
Je ne sais pas trop ce qui est le plus simple, et le moins risqué ?
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 | #include <Wire.h>
#include <RTClib.h>
const int IN_gauche = 3;
const int IN_droite = 5;
const int sd = 6;
int etat_verin;
RTC_DS1307 RTC;
void setup()
{
Serial.begin(57600);
Wire.begin();
RTC.begin();
etat_verin = LOW; // le verin est relacher
pinMode(IN_gauche, OUTPUT); // les drivers sont en sortie
pinMode(IN_droite, OUTPUT);
pinMode(sd, OUTPUT);
analogWrite(sd, 255);
}
void loop()
{
DateTime now = RTC.now();
if (now.hour() == 05 && now.minute() < 01 && etat_verin == LOW) // fonction verin relaché
{
analogWrite(IN_gauche, 191);
analogWrite(IN_droite, 64);
etat_verin = HIGH; // pour etat poussé
}
else
{
analogWrite(sd, 255);
}
if (now.hour() == 17 && now.minute() < 01 && etat_verin == HIGH) // fonction verin poussé
{
analogWrite(IN_gauche, 64);
analogWrite(IN_droite, 191);
etat_verin = LOW; // pour etat laché
}
else
{
analogWrite(sd, 255);
}
}
|