Aller au contenu


Photo
- - - - -

Mes LEDs ne s'éteignent pas !


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

#1 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 03 juin 2015 - 05:34

Salut les gars,

 

J'écris ici car je suis désespéré... Je suis en train de faire une carte de contrôle pour une bande de LEDs basée sur une arduino Nano et des transistor TIP120 pour contrôler les LEDs 12V. 

 

Pour tester ma carte, j'ai donc écrit un petit code permettant de les faire clignoter. Mais alors que les LEDs devraient clignoter toute les secondes comme le code l'indique, elles s'allument et reste allumées indéfiniment...

 

Quelqu'un à une idée ? J'en reviens pas de bloquer sur un truc comme ca...

 

Mon code :


 
int BLUEPIN = 3;
int GREENPIN = 5;
int REDPIN = 6;

 
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
}
 
 
void loop() {
 analogWrite(BLUEPIN, 255);
 analogWrite(GREENPIN, 255);
 analogWrite(REDPIN, 255);
 delay(1000);
 analogWrite(BLUEPIN, 0);
 analogWrite(GREENPIN, 0);
 analogWrite(GREENPIN, 0);
}


#2 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 03 juin 2015 - 05:37

Mon dieu... Je suis stupide. J'oubliais le second delay... 

 

Sujet résolu X)

 

( J'ai quand même passé une heure à faire fonctionner un Blink() :D )



#3 Nulentout

Nulentout

    Nouveau membre

  • Membres
  • 74 messages
  • Gender:Male

Posté 21 mars 2016 - 05:52

Mon petit grain de sel ...

Persuadé de l'importance de toujours choisir au mieux la taille des variables et des constantes, je te suggèrerai de remplacer les déclarations du genre int BLUEPIN = 3; par

byte BLUEPIN = 3;

Ce changement n'aura aucune influence sur le comportement de ton programme, mais tout programmeur comprendra immédiatement que ce que tu définis après sera limité à 255.

 

Par ailleurs, byte serait plus approprié pour une variable, c'est un contenant qui au cour du programme va changer.

par contre, ces instructions ne font que définir des constantes.

Dans ce cas, il me semble plus "lisible" de remplacer par :

#define BLUEPIN 3

 

Ton programme sera ainsi plus "cartésien".

Enfin, mais c'est personnel, pour ma part j'aurais codé :

 

#define LED_Bleue 3 // Je préfère "écrire" en Français.

 

ATTENTION : Si tu utilises une directive du genre #define REDPIN 6 ce n'est pas une instruction, mais une information que le compilateur utilisera quand il en aura besoin.

De ce fait il ne faut pas faire suivre la directive d'un point virgule.

 

"Mon dieu... Je suis stupide. J'oubliais le second delay..." Si tu savais le nombre de fois où je suis tombé dans ce panneau !

Amicalement : Nulentout.






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

0 members, 0 guests, 0 anonymous users