Aller au contenu


Photo
- - - - -

comportement étrange de mes arduinos avec ce programme


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 thermo_nono

thermo_nono

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 822 messages

Posté 16 février 2018 - 09:01

Salut les codeurs,
j'ai deux soucis avec un programme d'une petite soixantaine de lignes.. peut-être saurez-vous m'aiguiller.. 
Je construit actuellement une mamecab, dans cette mamecab il y a un arduino (un clone d'arduino nano mais ça fait exactement pareil avec mon arduino leonardo) : 
mon premier problème concerne la commande d'un relais qui doit allumer la TV dès la mise sous tension de l'arduino. J'ai connecté le +5V et le GND de l'arduino aux pins respectifs sur la carte 4 relais, puis j'ai relié le pin 3 de l'arduino au pin de commande d'un des relais. 
j'ai ensuite ballancé le code suivant dans l'arduino (une partie du code concerne le rétroéclairage de la mamecab qui sera aussi géré par l'arduino.. n'y faites pas trop attention c'est juste une led RGB connectée aux pins 9, 10 et 11 de l'arduino et contrôlé par PWM). 

voici le code : 
 

/*
  Utilisation LED RGB par PWM
  modified 15/02/2018
  by Thermo_nono
*/

  const int ledRouge=11; 
  const int ledVert=10; 
  const int ledBleu=9;
  const int relaisTV=3;
// Initialisation des pattes 3, 9, 10 et 11 de l'arduino
void setup() {
  int pinPot=0; //variable pour définir le CAN où est connecté le potentiomètre
  pinMode(ledRouge, OUTPUT);  //Patte 11 reliée à la cathode de la LED rouge
  pinMode(ledVert, OUTPUT);  //Patte 10 reliée à la cathode de la LED vert
  pinMode(ledBleu, OUTPUT);  //Patte 9 reliée à la cathode de la LED bleu
  pinMode(relaisTV, OUTPUT); //Patte 3 reliée au relais de la TV
  //Allumage TV
  analogWrite(relaisTV, 255);
  //Couleur rouge pour demarrer
  CommandePWM_ON(ledRouge);
}

// Actions à faire en boucle
void loop() {
  //Couleur magenta     
  CommandePWM_ON(ledBleu);
  //Couleur bleue
  CommandePWM_OFF(ledRouge); 
  //Couleur cyan    
  CommandePWM_ON(ledVert);    
  //Couleur verte
  CommandePWM_OFF(ledBleu);
  //Couleur jaune
  CommandePWM_ON(ledRouge);
  //Couleur rouge
  CommandePWM_OFF(ledVert);
}

//fonction qui permet d'augmenter progressivement le courant qui traverse la led
void CommandePWM_ON(int NumPin)  {
  for( int i = 0; i <= 255; i++ ) {
        analogWrite(NumPin, i); 
        delay(50);
   } 
   delay(250);
} 

//fonction qui permet de diminuer progressivement le courant qui traverse la led 
void CommandePWM_OFF(int NumPin) {
for( int i = 255; i >= 0; i-- ) {
        analogWrite(NumPin, i);
        delay(50);
  }
  delay(250);
}

Comme vous pouvez le constater j'ai indiqué pour l'allumage de la TV la commande "analogWrite(relaisTV, 255);" .. ça fonctionne très bien comme ça mais j'aurais préféré utiliser la commande "digitalWrite(3, HIGH);" malheureusement si j'utilise le digitalWrite, le relais refuse de commuter.. pensant avoir merdouillé en faisant les soudures, j'ai remplacé le clone nano par mon leonardo et le résultat est le même.
un bon point à qui saura m'expliquer ce phénomène. 

J'ai un second souci avec ce même programme : 
ça concerne cette fois le cycle des couleurs rendues par la led... tout se passe très bien jusqu'à la fin de la boucle ou il semblerait que le dernier "delay(250)" n'est pas pris en compte.. ça execute bien toutes les couleurs, sauf le rouge en fin de "void loop" qui ne marque pas sa pause comme je le souhaiterais et enchaine directement sur le fondu au magenta.
encore un bon point à qui saura éclairer ma lanterne sur ce mystère. 

merci d'avance.
 



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 018 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 17 février 2018 - 12:44

Visiblement tu es pas le seul à avoir le problème ...  Voir cette page en anglais ou une personne a le même problème 

 

Peux tu essayer le digitalWrite avec un pin non PWM ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#3 thermo_nono

thermo_nono

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 822 messages

Posté 17 février 2018 - 02:12

oui, j'ai testé sur le pin 8 et ça n'active pas le relais non plus. 

 






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users