Bonjour,
je motorise sur deux axes une monture de télescope
le but est d'obtenir un suivi constant de l'objet visé
pour cela il faut motoriser deux axes (néma 17 1:100)
le tout est dirigé en bluetooth par un PC (c'est lui qui fait tous les calculs et transmet les ordres)
dans le loop:
void loop()
{
int received;
if (Serial.available()) {
received = Serial.read();
switch (received) {
// .............
case 'k':
suivi_az=1;
suivi_azimut(aznbpas); //aznbpas a été envoyé auparavant, +-10000 pas mn
suivi_altitude(alnbpas); // idem +-1500 pas mn
break;
//***********************
les fonctions:
void suivi_azimut(int nb_pas_az) //suivi pour 1 mn pas de changement de sens la Terre tournant obstinément dans le même sens :o )
{
int intervalle_az= abs(60000000/nb_pas_az);
int direction;
digitalWrite(azimEnablePin, LOW); //moteur azimut en prise
direction = HIGH;
digitalWrite(azimDirectionPin, direction);
for (unsigned long i = 0; i < nb_pas_az; i++){
digitalWrite(azimStepPin, HIGH);
delayMicroseconds(intervalle_az);
digitalWrite(azimStepPin, LOW);
}
}
//******************************************************
void suivi_altitude(int nb_pas_al) //suivi pour 1 mn
{
int direction_al;
if (aldir > 0){
direction_al = HIGH;
}else{
direction_al = LOW;
}
digitalWrite(altEnablePin, LOW); //moteur altitude en prise
int intervalle_al= abs(60000000/nb_pas_al);
digitalWrite(altDirectionPin, direction_al);
for (unsigned long i = 0; i < nb_pas_al; i++){
digitalWrite(altStepPin, HIGH);
delayMicroseconds(intervalle_al);
digitalWrite(altStepPin, LOW);
}
}
//******************
mon soucis c'est que seule une fonction est exécutée à la fois (je peux les intervertir, elles sont toutes deux fonctionnelles)
il est nécessaire qu'elles s'exécutent en même temps
comme les boucles n'ont jamais la même longueur je ne peux tout faire dans la même
je...nage