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.