Arduino UNO R3 Led L off

Bonjour,

Je me lance.

Mon projet consiste en une Porte automatique dont l'ouverture est gérée via une cellule photorésistance.

Le Code

// ###################################################################
// Code permettant ouverture / fermeture d'une porte de poulailler
// selon la luminausité
// Composants : 
// + Moteur pas à pas - Stepper
// + Cellule photorésistance
//####################################################################
// Auteur : FRDev66
// Date : 2022-04-09
// version : 1.0.3
// 
// ChangeLog :
// 
// 
// ###################################################################

// Inclut la bibliothèque Arduino Stepper.h:
#include <Stepper.h>

// Définit le nombre de pas par rotation:
const int stepsPerRevolution = 2048;

int MotorPin1= 8; // Déclaration broche commande Bobine 1 moteur
int MotorPin2= 9; // Déclaration broche commande Bobine 2 moteur
int MotorPin3= 10; // Déclaration broche commande Bobine 3 moteur
int MotorPin4= 11; // Déclaration broche commande Bobine 4 moteur
int Tour=0; // Déclaration variable pour gérer le nombre de tours du moteur
int delayTime=5; // Vitesse d'ouverture et fermeture de la porte

int lightPin = 0;
int etat = 0;

// Créez un objet stepper appelé ‘myStepper’, notez l’ordre des broches:
Stepper myStepper = Stepper ( stepsPerRevolution, 8, 10, 9, 11 ) ;

void setup() {
Serial.begin(9600); // Ouverture du port série et debit de communication fixé à 9600 bauds

// Réglez la vitesse sur 5 tr / min:
myStepper. setSpeed ( 20 ) ;

pinMode(MotorPin1, OUTPUT); // Pin 8 de l'arduino en sortie digitale
pinMode(MotorPin2, OUTPUT); // Pin 9 de l'arduino en sortie digitale
pinMode(MotorPin3, OUTPUT); // Pin 10 de l'arduino en sortie digitale
pinMode(MotorPin4, OUTPUT); // Pin 11 de l'arduino en sortie digitale
}

void loop() {

  int reading  = analogRead(lightPin);
  Serial.println(reading);
  //Serial.println(Tour);
  Serial.println(etat);
  if(etat==1){
    if(reading <= 80) // seuil  en-dessous duquel la porte se ferme
    {
      Tour = 0 ; // remise à 0 des Tours
      Fermer_porte();
      Serial.println("Fermeture porte");
      etat = 0;
      delay(21600000);
    }
  }

  if(etat==0){
    if(reading >= 300) // seuil au-dessus duquel la porte ouvre
    {
      Tour = 0 ; // remise à 0 des Tours
      Ouvrir_porte();
      Serial.println("Ouverture porte");
      etat = 1;
      delay(3600000);
    }
  }
}

// Séquence d'alimentation normale des bobines du moteur en Full Step
void Fermer_porte(){
  Serial.println(etat);
  while(Tour <= 2048){ // Equivaut à 1 tours
    digitalWrite(MotorPin1,HIGH); // Alimentation A de la Bobine 1 du moteur pas à pas
    digitalWrite(MotorPin2,HIGH); // Alimentation B de la Bobine 2 du moteur pas à pas
    digitalWrite(MotorPin3,LOW); // Bobine 3 du moteur pas à pas au repos
    digitalWrite(MotorPin4,LOW); // Bobine 4 du moteur pas à pas au repos
    delay(delayTime);
    digitalWrite(MotorPin1,LOW); // Bobine 1 du moteur pas à pas au repos
    digitalWrite(MotorPin2,HIGH); // Alimentation B de la Bobine 2 du moteur pas à pas
    digitalWrite(MotorPin3,HIGH); // Alimentation C de la Bobine 3 du moteur pas à pas
    digitalWrite(MotorPin4,LOW); // Bobine 4 du moteur pas à pas au repos
    delay(delayTime);
    digitalWrite(MotorPin1,LOW); // Bobine 1 du moteur pas à pas au repos
    digitalWrite(MotorPin2,LOW); // Bobine 2 du moteur pas à pas au repos
    digitalWrite(MotorPin3,HIGH); // Alimentation C de la Bobine 3 du moteur pas à pas
    digitalWrite(MotorPin4,HIGH); // Alimentation D de la Bobine 4 du moteur pas à pas
    delay(delayTime);
    digitalWrite(MotorPin1,HIGH); // Alimentation A de la Bobine 1 du moteur pas à pas
    digitalWrite(MotorPin2,LOW); // Bobine 2 du moteur pas à pas au repos
    digitalWrite(MotorPin3,LOW); // Bobine 3 du moteur pas à pas au repos
    digitalWrite(MotorPin4,HIGH); // Alimentation D de la Bobine 4 du moteur pas à pas
    delay(delayTime);
    Serial.println("Fermer porte"); // Affichage sur le moniteur série
    Tour++;
  }
  Serial.println("Porte Fermée"); // Affichage sur le moniteur série
  Arret();
  etat=0;
}


// Séquence d'alimentation inverse des bobines du moteur en Full Step
void Ouvrir_porte(){
  while(Tour <= 2048){ // équivaut à 1 tour
    digitalWrite(MotorPin1,LOW); // Bobine 1 du moteur pas à pas au repos
    digitalWrite(MotorPin2,LOW); // Bobine 2 du moteur pas à pas au repos
    digitalWrite(MotorPin3,HIGH); // Alimentation C de la Bobine 3 du moteur pas à pas
    digitalWrite(MotorPin4,HIGH); // Alimentation D de la Bobine 4 du moteur pas à pas
    delay(delayTime);
    
    digitalWrite(MotorPin1,LOW); // Bobine 1 du moteur pas à pas au repos
    digitalWrite(MotorPin2,HIGH); // Alimentation B de la Bobine 2 du moteur pas à pas
    digitalWrite(MotorPin3,HIGH); // Alimentation C de la Bobine 3 du moteur pas à pas
    digitalWrite(MotorPin4,LOW); // Bobine 4 du moteur pas à pas au repos
    delay(delayTime);
    
    digitalWrite(MotorPin1,HIGH); // Alimentation A de la Bobine 1 du moteur pas à pas
    digitalWrite(MotorPin2,HIGH); // Alimentation B de la Bobine 2 du moteur pas à pas
    digitalWrite(MotorPin3,LOW); // Bobine 3 du moteur pas à pas au repos
    digitalWrite(MotorPin4,LOW); // Bobine 4 du moteur pas à pas au repos
    delay(delayTime);
    
    digitalWrite(MotorPin1,HIGH); // Alimentation A de la Bobine 1 du moteur pas à pas
    digitalWrite(MotorPin2,LOW); // Bobine 2 du moteur pas à pas au repos
    digitalWrite(MotorPin3,LOW); // Bobine 3 du moteur pas à pas au repos
    digitalWrite(MotorPin4,HIGH); // Alimentation D de la Bobine 4 du moteur pas à pas
    delay(delayTime);
    Serial.println("Ouvrir porte"); /// Affichage sur le moniteur série du texte
    Tour++;
  }
  Serial.println("Porte Ouverte"); // Affichage sur le moniteur série
  Arret();
  etat=1;
  Serial.println(etat);
}

// Fonction arrêt du moteur
void Arret(){
digitalWrite(MotorPin1,LOW); // Bobine 1 du moteur pas à pas au repos
digitalWrite(MotorPin2,LOW); // Bobine 2 du moteur pas à pas au repos
digitalWrite(MotorPin3,LOW); // Bobine 3 du moteur pas à pas au repos
digitalWrite(MotorPin4,LOW); // Bobine 4 du moteur pas à pas au repos
}

Celui-ci est fonctionnel.
l'alimentation utilise un bloc de 8 piles A2 LR6.

Cependant, au bout d'un moment, je n'arrive pas à déterminer exactement le temps, la led L de la carte arduino UNO R3 s'éteint et plus rien ne se passe.
Le code semble complètement bloqué.

Je me demande s'il existe un mode veille dans ce type de carte.
Je n'ai pas trouvé cette info sur les manuels UNO.

Voyez-vous une autre raison possible ?

Merci.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Vos instructions Serial.print() affichent-elles une activité sur le moniteur ?

Vers Americanos : LR6 = AA

Le moteur est branché en directe sur les sorties de l'arduino? :cold_face:

Si c'est le cas le problème vient de là.

Bonjour,

Oui le moteur est direct branché sur les sorties Arduino, comme indiqué dans le schéma.

Quel est l'impact de ce type de branchement, je n'ai vu nulle part de contrainte particulière ?

Merci.

Bonjour,

lorsque je suis en UBS pour visionner le moniteur série, il y a bien de l'activité toutes les 10 minutes (tempo du delay).

Par contre, j'avoue que je suis pas resté 3h devant le PC avec l'arduino connecté.

Merci.

L'ATmega est tout juste capable de délivrer quelques dizaines de mA. Tu vas flinguer les sorties du circuit
Un peu de lecture

1 Like

Bonjour,

J'ai tout bien lieu.

Et voici le nouveau schéma électronique...

J'ai donc un composant ULN2003A qui raccorde la carte Arduino UNO au Moteur Pas à Pas.

Cependant, le soucis est toujours le même.

Merci.

Après le schéma, les deux fils d'alimentation de la carte ULN2003 sont branchés sur des lignes non connectées au Gnd et au 5V.


La les a été remplacée par une autre cellule, le code ne peut plus convenir.

Le code utilisé la bibliothèque Stepper, mais les avances du moteur est fait "à la main" sans l'utiliser. Pour qu'un tiers puisse suivre, j'ai l'impression qu'il faut supprimer tout ce qui concerne stepper, ou utiliser la bibliothèque pour faire avancer le moteur. Mettre les deux apporte de la confusion


Dans la fonction qui ferme la porte, un boucle c'est 4 pas. C'est répété 2048 fois. Le moteur devait faire 4 tours et pas un seul comme dit le commentaire.

Merci pour vos retours...

Je vais reprendre depuis le début ce projet.
Et faire étape / étapes car là je ne vois pas pourquoi le système fonctionne en USB et pas avec le bloc de piles.

Merci pour votre aide.

Je reviendrai poster sur le Forum si besoin...

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