Salut tout le monde!
Je travaille actuellement avec mon groupe en technologie pour faire une maquette d'une maison tournante.
Le but est de faire une maison qui va tourner suivant la direction du soleil.
Pour cela j'utilise un arduino uno avec un base shield V2 où je branche deux capteur de luminosité en A0 et en A3. J'utilise aussi un motor sheild pour contrôler mes moteurs qui sont eux même alimentés via le moto shield par une pile 9V.
Les deux capteurs de luminosité sont placés côte à côte sur la maison et ce que je fais dans le programme c'est que je fais une comparaison entre les variables qui reçoivent le nombre de lux:
Mon problème est que je reste toujours dans la boucle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Tant que (CapteurDroite > CapteurGauche) {<div style="margin-left:40px">Tourner la maison à droite Récupérer la valeur des deux capteurs</div>} Tant que (CapteurGauche > CapteurDroite) {<div style="margin-left:40px">Tourner la maison à gauche Récupérer la valeur des deux capteurs</div>} Tant que (CapteurDroite == CapteurGauche) {<div style="margin-left:40px">Arrêter les moteurs Récupérer la valeur des deux capteurs</div>}
Voilà une partie du programme sans les capteurs fin de course, la LED d'alerte et le bouton d'arrêt d'urgence:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Tant que (CapteurGauche > CapteurDroite) {<div style="margin-left:40px">Tourner la maison à gauche Récupérer la valeur des deux capteurs</div>} //même si je cache l'un des capteurs avec mon pouce
Merci d'avance!
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 void setup() { //Moteur pinMode(12, OUTPUT); //Moteur sur le pin 12 (A) //LOW -> droite //HIGH -> gauche } void loop() { //Capteur de luminosité int CDroitP = 3; int CGauchP = 0; //Récupération de la luminosité int DroitL = analogRead(CDroitP); int GauchL = analogRead(CGauchP); //Tant que la luminosité à droite > gauche alors tourner à droite while (DroitL > GauchL) { //Attendre 500MS delay(500); //Faire tourner le moteur à droite avec sa vitesse maximal digitalWrite(12, HIGH); analogWrite(3, 255); //Récupération de la luminosité int DroitL = analogRead(CDroitP); int GauchL = analogRead(CGauchP); } //Tant que la luminosité à gauche > droite alors tourner à gauche while (GauchL > DroitL) { //Attendre 500MS delay(500); //Faire tourner le moteur à gauche avec sa vitesse maximal digitalWrite(12, LOW); analogWrite(3, 100); //Récupération de la luminosité int DroitL = analogRead(CDroitP); int GauchL = analogRead(CGauchP); } //Si DroitL = GauchL alors stop if (DroitL == GauchL) { //Attendre 500MS delay(500); //Arrêt du moteur analogWrite(3, 0); //Récupération de la luminosité int DroitL = analogRead(CDroitP); int GauchL = analogRead(CGauchP); } }
PS: Il me faudrait une technique en C pour pouvoir faire une troncature sur les lux récupérer car je ne pense pas qu'on arriveras à avoir exactement Droite == Gauche!
Partager