Problème d'état haut des Pins d'une XIAO

Bonjour,

Je travaille actuellement sur un projet avec une arduino XIAO SAMD21 et 4 electro Vanne 6V 2 positions. Mon programme utilise les electrovanne une par une sur des cycles de temps et fonctionne parfaitement. Cependant, lorsque la XIAO est allumé (que ca soit par connexion sur PC ou par alimentation externe), toutes les électrovannes s'allument pendant quelques instants à chaque boot ...

Je ne sais pas si leurs états par défaut à l'initialisation est l'état haut mais nous n'arrivons pas à les garder à l'état bas.

Voici le schéma de câblage :

Et le code (D'autres modules s'ajoutent donc un Pin en communication avec une Arduino mais les tests ne la concernent pas ) :

#include <Arduino.h>

// 4 Pins Enable
#define PIN_ENABLE_ELECTRO_1  1
#define PIN_VENTILO 4
#define PIN_ENABLE_ELECTRO_2  2
#define PIN_ENABLE_ELECTRO_3  3
#define PIN_ENABLE_ELECTRO_4  9
#define PIN_COMMUNICATION_LORA 5
#define PIN_LED_TEST 7



const uint16_t delai_ouverture_electrovanne = 5000;
const uint16_t delai_attente = 1;
//Variables
int counter=0;
const double_t seuil_altitude[] = {0,1000,1500,}; // Définit les 4 différents seuils d'altitudes pour déclencher les expériences
const int electro_vannes[] = {PIN_ENABLE_ELECTRO_1, PIN_ENABLE_ELECTRO_2, PIN_ENABLE_ELECTRO_3, PIN_ENABLE_ELECTRO_4}; // Définit les PINS des 4 électrovannes (pour y avoir accès via un indice) 
  
// 1 Pins Inputdefine 
#define PIN_ELECTROVANNE_MUTUAL_INPUT 10

// put function declarations here:
void lock_electro(uint8_t vanne_1,u_int16_t c_delay){
  /*Active une électroVanne (vanne_1) pendant un délai (c_delay)
  *params:
  *uint8_t : vanne_1 : Pin de la vanne à activer
  *int16_t : c_delay : Delai d'activation de l'electrovanne
  */
    digitalWrite(vanne_1,HIGH);
    digitalWrite(PIN_LED_TEST,HIGH);
    digitalWrite(PIN_VENTILO,HIGH);
    digitalWrite(PIN_ELECTROVANNE_MUTUAL_INPUT,HIGH);

    delay(c_delay);
    digitalWrite(vanne_1,LOW);
    digitalWrite(PIN_LED_TEST,LOW);
    digitalWrite(PIN_VENTILO,LOW);
    digitalWrite(PIN_ELECTROVANNE_MUTUAL_INPUT,LOW);

}

/* int select_eletro(double_t altitude, const double_t seuil_altitude[]){
  int selected_index = 0;
  for(int i=0;i<4;i++){
    if (seuil_altitude[i] < altitude) {
      selected_index = i;
    }
  }
  return selected_index;
} */

void setup() {
  // Définition des PIN Electrovanne Enable en mode OUTPUT
  pinMode(PIN_ENABLE_ELECTRO_1,OUTPUT);
  pinMode(PIN_ENABLE_ELECTRO_2,OUTPUT);
  pinMode(PIN_ENABLE_ELECTRO_3,OUTPUT);
  pinMode(PIN_ENABLE_ELECTRO_4,OUTPUT);
  // Définition du Pin Ventilo 
  pinMode(PIN_VENTILO,OUTPUT);
  // Définition des pins Electrovanne commun
  pinMode(PIN_ELECTROVANNE_MUTUAL_INPUT,OUTPUT);
  pinMode(PIN_LED_TEST,OUTPUT);
  // Activation par défaut des Pins
  pinMode(PIN_COMMUNICATION_LORA,INPUT);
  digitalWrite(PIN_ENABLE_ELECTRO_1,LOW);
  digitalWrite(PIN_ENABLE_ELECTRO_2,LOW);
  digitalWrite(PIN_ENABLE_ELECTRO_3,LOW);
  digitalWrite(PIN_ENABLE_ELECTRO_4,LOW);
  digitalWrite(PIN_ELECTROVANNE_MUTUAL_INPUT,LOW);

}



void loop() {
  while(digitalRead(PIN_COMMUNICATION_LORA)!=HIGH){
    delay(delai_attente);
  }
  counter+=1;
  if (counter==0){return;}
  else if(counter>0 && counter <5){
    lock_electro(electro_vannes[counter-1],delai_ouverture_electrovanne);
  }
  delay(1000);
}


Bonjour. You have posted in the English section of the forum. I will move your topic. Please always read the sticky post at the top of each forum section to know if it is a suitable section for your question.

As tu essayé de mettre des résistances de pulldown sur les entrées de commande des L293 pour que la tension soit état bas à la mise sous tension?

En plus des pulldown sur les enable tu peux aussi modifier le setup() ainsi

void setup() {
  // Définition des PIN Electrovanne Enable en mode OUTPUT
  //et Activation par défaut des Pins
  pinMode(PIN_ENABLE_ELECTRO_1,OUTPUT);
  digitalWrite(PIN_ENABLE_ELECTRO_1,LOW);
  pinMode(PIN_ENABLE_ELECTRO_2,OUTPUT);
  digitalWrite(PIN_ENABLE_ELECTRO_2,LOW);
  pinMode(PIN_ENABLE_ELECTRO_3,OUTPUT);
  digitalWrite(PIN_ENABLE_ELECTRO_3,LOW);
  pinMode(PIN_ENABLE_ELECTRO_4,OUTPUT);
  digitalWrite(PIN_ENABLE_ELECTRO_4,LOW);
  // Définition du Pin Ventilo 
  pinMode(PIN_VENTILO,OUTPUT);
  // Définition des pins Electrovanne commun
  pinMode(PIN_ELECTROVANNE_MUTUAL_INPUT,OUTPUT);
  digitalWrite(PIN_ELECTROVANNE_MUTUAL_INPUT,LOW);
  pinMode(PIN_LED_TEST,OUTPUT);
  pinMode(PIN_COMMUNICATION_LORA,INPUT);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.