Bonjour,

Je viens de finir mon code et l'assemblage d'un rail time-lapse photo.
Actuellement pour faire les réglages de fonctionnement du rail:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int rpm=0, stepsPerRevolution=200, tempsDePausePhoto=0,
j'ai besoin de 3 boutons, deux sur la carte arduino et un bouton analogique de rotation en externe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
//Commande
int btnS1 = 7;  // Pin for button S1
int btnS2 = 6;  // Pin for button S2
int btnS3 = A0;  // Pin for button S3
L'objectif serait d'arrivé à avoir deux boutons en externe du boitier un pour se déplacé dans le menu et l'autre pour changer les valeurs.

Un pour choisir la valeur à modifier et l'autre pour la modifier.

Par exemple quant j’appuie sur le btnS1, sur mon écran lcd la valeur RPM clignote. Si je rappuis le btnS1 stepsPerRevolution clignote. Et quant je tourne le btnS3 la valeur stepsPerRevolution et modifier.

Si je suis pas clair dans mes explications n'hésitez pas à me le dire.
Bonne journée et merci.

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <SerialLCD.h>
#include <SoftwareSerial.h>
 
#define valeurMin 0
#define valeurMax 202
 
int rpm=0, stepsPerRevolution=200, tempsDePausePhoto=0, compteur;
 
#include <Stepper.h>
int enA  = 10;  // Enable pin 10 on Motor Control Shield
int enB  = 11;  // Enable pin 11 on Motor Control Shield
int dirA = 12;  // Direction pin dirA on Motor Control Shield
int dirB = 13;  // Direction pin dirB on Motor Control Shield
 
Stepper myStepper(stepsPerRevolution, dirA, dirB);
 
//Commande
int btnS1 = 7;  // Pin for button S1
int btnS2 = 6;  // Pin for button S2
int btnS3 = A0;  // Pin for button S3
int interupteur = 8;
int analogValue = A0;
int relayPin = A2;
//LCD
 
SerialLCD slcd(0,1);
 
void setup(void)
 
{
 
 
  pinMode(relayPin,OUTPUT);
  pinMode(interupteur, OUTPUT);
  pinMode(btnS1, INPUT);
  pinMode(btnS2, INPUT);
  pinMode(btnS3, INPUT);
  pinMode(7,INPUT);
  digitalWrite(7, HIGH);
  pinMode(6,INPUT);
  digitalWrite(6, HIGH);
 
 
  slcd.begin();// set up :
 
  LCD();
 
 
  //LCD
 
    // set the speed at 60 rpm:
  myStepper.setSpeed(rpm);
  // Enable power to the motor
  pinMode(enA, OUTPUT);
  digitalWrite (enA, HIGH);
  pinMode(enB, OUTPUT);
  digitalWrite (enB, HIGH);
 
 
  //interupteur
 
  //btn1
}
void loop()
{
  while (digitalRead(interupteur)== HIGH){
 
    slcd.noBacklight();
    Moteurar();
 
 
 
 
    slcd.setCursor(8,0);
 
    LCD();
    delay(100);
    digitalWrite(relayPin,HIGH);
    delay (tempsDePausePhoto*1000);
    digitalWrite(relayPin, LOW);
    if (compteur<99999)compteur++,delay(150);
 
 
  }
  while (digitalRead(btnS1)==LOW) {
    Moteurvite();
 
    LCD();
  }
 
  while (digitalRead(btnS2)==LOW) {
    slcd.backlight();
    if (tempsDePausePhoto<valeurMax)tempsDePausePhoto++,delay(50);
    if(tempsDePausePhoto > 201) {
      tempsDePausePhoto = 0;
      slcd.clear();
    }
 
    LCD();
  }
  while (digitalRead(btnS3)==HIGH) {
    slcd.backlight();
    if (stepsPerRevolution<valeurMax)stepsPerRevolution++,delay(50);
    if(stepsPerRevolution> 201) {
      stepsPerRevolution = 0;
      slcd.clear();
    }
 
    LCD();
  }
}
 
void LCD(){
 
  slcd.setCursor(0,1);
  slcd.print("Rpm:");
  slcd.print(rpm,DEC);
  slcd.setCursor(8,1);
  slcd.print("PaP:");
  slcd.print(stepsPerRevolution,DEC);
  slcd.setCursor(0,0);
  slcd.print("Tdp:");
  slcd.print(tempsDePausePhoto,DEC);
  slcd.setCursor(8,0);
  slcd.print("Cpt:");
  slcd.print(compteur,DEC);
  delay(100);
 
 
}
 
 
void Moteurav()   // Moteur Av
{
  myStepper.step(stepsPerRevolution);
}
void Moteurar()   // Moteur Ar
{
  myStepper.step(-stepsPerRevolution);
 
}
 
void Moteurvite()   // Moteur vite
{
  myStepper.setSpeed(rpm);
    if (rpm<valeurMax)rpm++,delay(50);
    if(rpm> 200) {
      rpm = 0;
      slcd.clear();
      LCD();
    }
}