Go Down

Topic: Code des fonctions MS1,MS2 en low pour EasyDriver (Read 486 times) previous topic - next topic

Sinardets

Je suis depuis devenu un passionné de l'Arduino et de ses possibilités sans limite pour un bidouilleur comme moi.
J'ai donc réalisé un système qui me permet de faire des panoramique sphèrique avec un servomoteur pour le tilt et un moteur pas a pas pour le Pan, tout fonctionne mais je désire que mon moteur pas a pas soit en Full step et l'EasyDriver est par défaut au 1/8 de pas , j'ai lu que dans ce cas il falait passer MS1 et MS2 en LOW. De ce fait, j'avais introduit cette commande "digitalWrite(ms1Pin,LOW);"  dans le Void Setup de même que pour MS2 mais à ce moment là le moteur ne fonctionne plus correctement et il ne tourne plus et vibre comme si il était mal alimenté...
Certes, vous pouvez vous rendre compte que le code n'est pas d'une écriture de qualité mais soyez indulgant car je débute.
J'aimerais donc savoir si une âme charitable pouvais me dire comment l'insérer dans mon sketch, j'ai pour habitude de chercher par tous les moyens mais je n'ai rien trouvé sur le net. Merçi d'avance de me faire profiter de votre expérience.
Ci-dessous mon code:

Code: [Select]
#include <Servo.h>
#define DIR_PIN 8
#define STEP_PIN 9
#define ENAB_PIN 5

Servo servoTilt;            // Define Tilt servo
int buzzer = 11;            // Define buzzer
int freq = 0;               // Define tonalite buzzer
int relai = 10;             // Define relai
int sleep = 4;              // Define Sleep Easydriver
int enable = 5;             // Define enable Easydriver
int ms1Pin = 6;             // Define MS1 Easydriver
int ms2Pin = 7;             // Define MS2 Easydriver
static int compteur = 0;    // variable compteur

void setup()
{
  pinMode(DIR_PIN, OUTPUT);        // Dir Easydriver
  pinMode(STEP_PIN, OUTPUT);       // Step Easydriver
  pinMode(ENAB_PIN, OUTPUT);       // Step Easydriver

  servoTilt.attach(12);             // Tilt servo a digital pin 9
 

  Serial.begin(9600);
  pinMode(relai, OUTPUT);
  tone(buzzer, 5200, 1500);
  servoTilt.writeMicroseconds(1450);

}

void loop()
{               
  movetilt();              //position servotilt a 90-45-135-0-180
  delay(2000);
  shoton();                //ouverture relai declenchement APN
  delay(100);
  shotoff();               //fermeture relai declenchement APN
  delay(1500);
  rotate(224, .07);         //position pan 36°, 0.1 lent fort couple / 1 rapide sans couple (calcul=6,23 x 36= 224,28 microsteps)
  delay(1500);
  compterelai();           // compte declenchement relai
  delay(10);

}

// routines pour rotate, shot, compte, movetilt

void rotate(int steps, float speed){
  //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);

  digitalWrite(DIR_PIN,dir);

  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
  }
}
void shoton()
{
  digitalWrite(relai, HIGH);
  tone(buzzer, 700, 300);
}

void shotoff()
{
digitalWrite(relai, LOW);
}

void compterelai()
{
  // digitalWrite(relai, HIGH)
  compteur++;
}

void movetilt()
{
  switch(compteur) 
  {
    case 0:
      servoTilt.writeMicroseconds(1450);
      break;
    case 10:
      servoTilt.writeMicroseconds(1050);
      break;
    case 20:
      servoTilt.writeMicroseconds(1875);
      break;
    case 30:
      servoTilt.writeMicroseconds(2300);
      digitalWrite(ENAB_PIN, HIGH);
      break;
    case 31:
      servoTilt.writeMicroseconds(650);
      digitalWrite(ENAB_PIN, HIGH);
      break;
    case 32:
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      tone(buzzer, 5200, 1500);
      delay(250);
      tone(buzzer, 20, 1500);
      delay(250);
      while(1) {}
      break;
     
  }



}



Go Up