Aller au contenu

GO Print

Commande M42/M226 SOLUTION


Messages recommandés

Bonjour,

Vous souhaitez utiliser la commande M42 ou M226 mais ça ne fonctionne pas ? 

C'est normal, marlin bloque certaines pins pour ces fonctions pour vérifier si les pins sont bloquées ou non pour ces fonctions, il vous suffit de vous rendre dans le fichier "pins.h" et d'aller à la ligne où se trouve "#DEFINE SENSITIVE PINS" vous trouverez la liste des pins bloquées pour ces fonctions, il vous suffit donc de mettre en commentaire celle que vous voulez utiliser pour votre commande. 

Pour mieux comprendre le chemin allons dans le fichier "marlin_main.cpp", allons voir pour la commande M226 par exemple :

 

/**
 * M226: Wait until the specified pin reaches the state required (M226 P<pin> S<state>)
 */
inline void gcode_M226() {
  if (parser.seen('P')) {
    const int pin_number = parser.value_int(),
              pin_state = parser.intval('S', -1); // required pin state - default is inverted

    if (WITHIN(pin_state, -1, 1) && pin_number > -1 && !pin_is_protected(pin_number)) {

      int target = LOW;

      stepper.synchronize();

      pinMode(pin_number, INPUT);
      switch (pin_state) {
        case 1:
          target = HIGH;
          break;
        case 0:
          target = LOW;
          break;
        case -1:
          target = !digitalRead(pin_number);
          break;
      }

      while (digitalRead(pin_number) != target) idle();

    } // pin_state -1 0 1 && pin_number > -1
  } // parser.seen('P')
}

 

Ici en gras, nous pouvons voir que l'on cherche avant de lancer cette commande de voir si la pin utilisé n'est pas protégé.

Dans le même fichier nous avons :

/**
 * Sensitive pin test for M42, M226
 */
 static bool pin_is_protected(const int8_t pin) {
  static const int8_t sensitive_pins[] PROGMEM = SENSITIVE_PINS;
  for (uint8_t i = 0; i < COUNT(sensitive_pins); i++)
    if (pin == (int8_t)pgm_read_byte(&sensitive_pins)) return true;
  return false;
}

 

Nous pouvons donc voir que nous avos des protected pins aussi appelé sensitive_pins dans le fichier pins.h qui sont "interdite" pour ces fonctions. Désolé si ce n'est pas clair mais je commence depuis peu à bidouiller au marlin donc je ne peux détailler les morceaux de programme mais la solution fonctionne test approuvé !

Melvin

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...