Bonjour à toute et tous
Je suis en train de faire un tackeur solaire sur Arduini pour panneaux solaires
J'ai 4 photos resistances est ouest haut et bas
mon désir c'est de faire un ajustement en 1er Est Ouest et une fois positionné faire la position Haut ou bas avec un ecart de lecture de 30 ou 40
Je commence à nager dans mon programme si qq pouvait me venir en aide et me corriger mon programme j'en serait tres heureux
Voici mon programme
Code :

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
86
87
88
89
// Trackeur solaire - ChristianCabannes
 
int PinLdrEst = A0;             // 3 LdRs capteurs de lumière
int PinLdrOuest = A1;
int PinLdrHauteur = A2;
int PinLdrBas = A3;
int Ecart = 5;
 
                                // 2 moteurs horizontal Est/Ouest et vertical Haut/Bas
//Mot H
const int ENA = 10;
const int IN1 = 9;
const int IN2 = 8;
//Mot V
const int ENB = 5;
const int IN3 = 6;
const int IN4 = 7;
 
 
void setup()  
{
  Serial.begin(9600);         // lecture écran
  pinMode(PinLdrEst,INPUT);   // entrées / sorties Ldrs et moteurs
  pinMode(PinLdrOuest,INPUT);
  pinMode(PinLdrHauteur,INPUT);
  pinMode(PinLdrBas,INPUT);
  pinMode(ENA, OUTPUT);  
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
 
}
  void loop()  
  {
  int ValLdrEst = analogRead(PinLdrEst);     // lire et calculer les valeurs                     
  int ValLdrOuest = analogRead(PinLdrOuest); 
  int ValLdrHauteur = analogRead(PinLdrHauteur);
  int ValLdrBas = analogRead(PinLdrBas);
 
  Serial.print("   E "); Serial.println(ValLdrEst);
  Serial.print("   O "); Serial.println(ValLdrOuest);
  Serial.print("   H "); Serial.println(ValLdrHauteur);
  Serial.print("   B "); Serial.println(ValLdrBas);
 
  int Diff1 = ValLdrEst - ValLdrOuest;
  Diff1 = abs(Diff1);
  int Diff2 = ValLdrHauteur - ValLdrBas;
  Diff2 = abs(Diff2);
 
 if ( Diff1 <= Ecart || Diff2 <= Ecart)
 { 
    digitalWrite(ENA, LOW);  // les 2 Moteurs sont arrétés !
    digitalWrite(ENB, LOW);
 }         
  else if (ValLdrEst < ValLdrOuest && Diff1 > Ecart)
 
 {
    digitalWrite(IN1, LOW);  // Moteur H tourne dans un sens
    digitalWrite(IN2, HIGH);
    analogWrite(ENA, 250);
    Serial.println(" Est < Ouest");
 }
  else if ( ValLdrEst > ValLdrOuest && Diff1 > Ecart)
 
 { 
    digitalWrite(IN1, HIGH);  // Moteur H tourne dans l'autre sens
    digitalWrite(IN2, LOW);
    analogWrite(ENA, 250);
    Serial.println(" Est > Ouest ");
 } 
  else if ( ValLdrHauteur < ValLdrBas && Diff2 > Ecart)
 
    digitalWrite(IN1, LOW);  // Moteur V tourne dans un sens
    digitalWrite(IN2, HIGH);
    analogWrite(ENA, 250);
    Serial.println(" Hauteur < Bas");
 }
 else if ( ValLdrHauteur > ValLdrBas && Diff2 > Ecart)
 
 { 
    digitalWrite(IN1, HIGH);  // Moteur V tourne dans l'autre sens
    digitalWrite(IN2, LOW);
    analogWrite(ENA, 250);
    Serial.println(" Hauteur > Bas ");
 }
   delay (1000);
 }