je me suis l'ansé dans la fabrication d'un suivi d'ascension droite motorisé pour mon télescope (avec un moteur pas a pas )
avec une grande aide de sandro (sans lui je n'y serais pas arrivé ) j'ais obtenu ce code
/*
Name: Vitesse MPAP
Auteur: robomaker
*/
#define // Moteur arrete
int tempoZoomOut = 500;
int tempoZoomIn = 700;
int tempoAddition = 0;
#define driverDirPin 2
#define driverStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define boutonMarchePin 8
#define boutonArretPin 9
void setup()
{
pinMode(driverDirPin, OUTPUT);
pinMode(driverStepPin, OUTPUT);
pinMode(boutonZoomInPin,
INPUT_PULLUP); // L'autre cote du bouton au GND
pinMode(boutonZoomOutPin, INPUT_PULLUP); // " " "
pinMode(boutonMarchePin, INPUT_PULLUP);
digitalWrite(driverDirPin, LOW); // On met la broche DIR a l'etat bas
}
void loop()
{
for (int i = 0; i <= 200; i++)
{
tempoAddition = 0;
if (digitalRead(boutonZoomInPin) == LOW) // Si le bouton accelerer est presse
{
tempoAddition = tempoZoomOut;
}
else if (digitalRead(boutonZoomOutPin) == LOW) // Si le bouton freiner est presse
{
tempoAddition = tempoZoomIn;
}
tempo = 0;
}
if (tempo > 2008)
{
digitalWrite(driverStepPin, LOW);
delayMicroseconds(tempo + tempoAddition);
digitalWrite(driverStepPin,
HIGH);
delayMicroseconds(tempo + tempoAddition);
}
}
}
avec ca je peu
démarrer le moteur
arreter le moteur
accélérer la vitesse de rotation
freiner la vitesse de rotation
avec 4 boutons poussoir .
J'ai donc voulut motoriser ma mise au point du focus télescope ,avec le meme principe
avec deux boutons poussoir
rotation dans un sens (zoom in )
rotation dans l'autre sens (zoom out )
avec ton code
#define driverDirPin 2
#define driverStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define tempo 500
bool zoom = false;
void setup()
{
pinMode(driverDirPin, OUTPUT);
pinMode(driverStepPin, OUTPUT);
pinMode(boutonZoomInPin, INPUT_PULLUP); // L'autre cote du bouton au GND
pinMode(boutonZoomOutPin, INPUT_PULLUP); // " " "
}
void loop()
{
if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est presse
digitalWrite(driverDirPin, LOW);
zoom = true;
} else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est presse
digitalWrite(driverDirPin, HIGH);
zoom = true;
}
if (zoom) {
digitalWrite(driverStepPin, LOW);
delayMicroseconds(tempo);
digitalWrite(driverStepPin, HIGH);
delayMicroseconds(tempo);
zoom = false;
}
}
Il fonctionne impecable formidable .( c'est meme magique )
mais je ne comprend pas toujours tout .
pourquoi dans le premier programme , on a du tempo 0 et pas dans le tien ?
pourtant si je suis ma logique (qui ne doit pas etre si logique ) on a bien du tempo 0 quand le moteur est a l'arret ?
et
bool zoom = false;
je ne l'aurrait jamais trouver .
enfin déja un grand MERCI a vous
reste plus qua les mètre tout les deux (codes) dans la carte arduino , je suppose qu'il doit y avoir deux trois surprise , et que se ne vas pas etre aussi simple que faire du copier coller comme pour un seul programme ?