Bonjour,
Je suis un photographe professionnel en pleine conception de rail de Time Laps photo.
L'objectif serait de pouvoir prendre des photos avec le déplacement de mon appareil photo sur un rail.
exemple : Plains Milky Way - YouTube
Le programme fait :
photo
deplacement
pause
photo
deplacement
pause
...
J'ai fini tout l'aspect mécanique, rail, chariot, moteur pas à pas, branchements Arduino...
Il me manque plus qu'à finir le programme de l'Arduino.
Maintenant l'objectif est de pouvoir modifié les valeur( rpm nombreDePas et TempsDePausePhoto) avec 3 boutons. Les valeurs devrons augmenté de 5 en 5 et avoir un nombre max qui ramène la valeur à zero. Tous en ayans le visuelle sur mon écran LCD
Les boutons seront
int btnS1 = 7;
int btnS2 = 6;
int btsS3 = 8;
Voici le code
// MOTEUR
int nombreDePas = 200;
int rpm = 11;
int tempsDePausePhoto = 5;
#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
const int stepsPerRevolution = nombreDePas;
Stepper myStepper(stepsPerRevolution, dirA, dirB);
//Commande
int btnS1 = 7; // Pin for button S1
int btnS2 = 6; // Pin for button S2
//LCD
#include <SerialLCD.h>
#include <SoftwareSerial.h> //this is a must
SerialLCD slcd(0,1);//this is a must, assign soft serial pins
//LCD
void setup()
{
{
//LCD
slcd.begin();// set up :
slcd.backlight();
slcd.setCursor(0,0);
slcd.print("RPM:");
slcd.print(rpm,10);
slcd.setCursor(8,0);
slcd.print("PaP:");
slcd.print(nombreDePas,10);
slcd.setCursor(0,1);
slcd.print("TDP:");
slcd.print(tempsDePausePhoto,10);
slcd.setCursor(8,1);
slcd.print("Cpt:");
Serial.print(compteur,10);
if (digitalRead(9)==LOW)
compteur +1;
//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
Serial.begin(9600);
pinMode(interupteur, OUTPUT);
pinMode(btnS1, INPUT);
pinMode(btnS2, INPUT);
}
}
void loop()
{
while (digitalRead(interupteur)== HIGH)
{
Moteurav();
delay (tempsDePausePhoto*1000);
}
}
void Moteurav() // Moteur Av
{
myStepper.step(stepsPerRevolution);
}
void Moteurar() // Moteur Ar
{
myStepper.step(-stepsPerRevolution);
}
le troisième bouton doit servir de validation, non?
appuie sur le bouton1= bouton1+5 si bouton1>maxi => bouton1=0
idem pour le bouton2
bouton3 = validation et départ du programme
ne pas oublier de mettre un antirebond pour les boutons afin d'avoir une seule impulsion.
si tu veux pouvoir garder en mémoire utilise l'eepromWrite et read
Oui la question est comment modifié les valeur(rpm et nombreDePas et TempsDePausePhoto) avec 3 boutons.
chaque boutons ajoutera :
int btnS1 = 7; Le bouton 1 = rpm + 5 retour à 0 si rpm > 200.
int btnS2 = 6; Le bouton 2 = nombreDePas + 5 retour à 0 si nombreDePas > 200.
int btnS3 = 8; Le bouton 3 = TempsDePausePhoto + 2 retour à 0 si TempsDePausePhoto > 300.
Pour l'antirebond je sais pas trop se que c'est Je vais me renseigné.
Pourriez-vous me montré la méthode pour que à chaque tour de loop la valeur compteur augmente de 1.
Merci pour votre aide. Je suis dans l'impasse cérébral
Si vous avez le moindre problème sur Photoshop Zbrush lightroom ... Je peux être de bon conseil.
// MOTEUR
long rpm = 11;
long nombreDePas = 20;
long tempsDePausePhoto = 1;
long compteur=0;
long antireb=50;
#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
const int stepsPerRevolution = nombreDePas;
Stepper myStepper(stepsPerRevolution, dirA, dirB);
//Commande
int btnS1 = 7; // Pin for button S1
int btnS2 = 6; // Pin for button S2
int btnS3 = A5; // Pin for button S3
int interupteur = 8;
//LCD
#include <SerialLCD.h>
#include <SoftwareSerial.h> //this is a must
SerialLCD slcd(0,1);//this is a must, assign soft serial pins
//LCD
void setup()
{
//LCD
slcd.begin();// set up :
slcd.backlight();
slcd.setCursor(0,0);
slcd.print("RPM:");
slcd.print(rpm,10);
slcd.setCursor(8,0);
slcd.print("PaP:");
slcd.print(nombreDePas,10);
slcd.setCursor(0,1);
slcd.print("TDP:");
slcd.print(tempsDePausePhoto,10);
slcd.setCursor(8,1);
slcd.print("Cpt:");
slcd.print(compteur,10);
//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
Serial.begin(9600);
pinMode(interupteur, OUTPUT);
pinMode(btnS1, INPUT);
pinMode(btnS2, INPUT);
pinMode(btnS3, INPUT);
//btn1
}
void loop()
{
while (digitalRead(interupteur)== HIGH){
Moteurav();
delay (tempsDePausePhoto*1000);
compteur = compteur+1;
}
}
void Moteurav() // Moteur Av
{
myStepper.step(stepsPerRevolution);
}
void Moteurar() // Moteur Ar
{
myStepper.step(-stepsPerRevolution);
}