Une enseigne de commerçant à partir du montage publié dans Loco-Revue 798

Répondre
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6652
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
avr. 2021 21 18:08

Une enseigne de commerçant à partir du montage publié dans Loco-Revue 798

Message par likikiFrance

Une enseigne de commerçant à partir du montage publié dans Loco-Revue 798
Voici une nouvelle application, sans avoir à se fatiguer puisqu'on reprend le montage paru dans Loco-Revue N°798.   :siffle:  

Cette fois, en changeant uniquement le programme, nous allons obtenir une enseigne de commerçant. La couleur des LED importe peu, vous pouvez donc choisir ce que vous voulez ; pour ma part, j'ai choisi des LED vertes et le montage doit ressembler à ceci :

Image

Le clignotement d'une enseigne de commerçant n'obéit à aucune règle : toutes les fantaisies sont permises, alors autant ne pas se priver !   :gne:  Vous pourrez donc modifier le programme que je vais vous donner pour faire à votre guise.

Pour ma part, mon enseigne réalise quatre séquences distinctes et pour chaque séquence, j'ai fait appel à une fonction. Le programme commence par éteindre toutes les LED et utilise pour cela une boucle for, telle qu'elle a été présentée plus haut dans ce forum (voir le chenillard).

Ensuite, l'enseigne flashe comme un chenillard trois fois de suite (c'est ce que j'ai nommé sequence_Un). Deux boucles imbriquées sont nécessaires : la première pour faire le chenillard trois fois de suite, la deuxième pour sélectionner les diodes à faire flasher.

Puis, l'enseigne allume successivement ses LED (lampes à l'échelle) en cumulant vers la gauche, ce qui permet d'écrire progressivement un nom de commerce (comme par exemple BISTRO ou bien GARAGE, selon vos centres d'intérêts !  :lol: ). C'est ce que j'ai appelé sequence_Deux.

Lorsque toutes les LED sont allumées, l'ensemble clignote trois fois grâce, encore à des boucles for imbriquées. C'est la sequence_Trois.

Enfin, les lettres de l'enseigne s'éteignent les unes après les autres, en partant de la gauche vers la droite. C'est la sequence_Quatre.

Le programme ressemble donc à ceci :
/*
Ce programme réalise le clignotement d'une enseigne publicitaire.
Il fait clignoter selon un certain rythme six LED reliées aux sorties 4 à 9.
Il utilise des fonctions pour alterner les rythmes.
*/

// Initialisation des lignes 4 à 9 en sortie
void setup () {
  pinMode (4, OUTPUT) ;
  pinMode (5, OUTPUT) ;
  pinMode (6, OUTPUT) ;
  pinMode (7, OUTPUT) ;
  pinMode (8, OUTPUT) ;
  pinMode (9, OUTPUT) ;
}

// Fonction loop
void loop () {
  // Extinction de toutes les LED au départ du programme
  for (byte i = 4 ; i <= 9 ; i++)
  {
    digitalWrite (i, LOW) ; // éteint la LED reliée à la broche i
  }
  
  // Séquence N°1 ; chenillard
  sequence_Un () ;
  delay (500) ; //delai de 500 millisecondes

  // Séquence N° 2 : cumul sur la gauche du mouvement de LED
  sequence_Deux () ;
  delay (500) ;  // délai de 500 millisecondes
  
  // Séquence N°3 : clignotement de l'ensemble 3 fois
  sequence_Trois () ;
  delay (2000) ;  // délai de 2 secondes

  // Séquence 4 : extinction successive de la gauche vers la droite
  sequence_Quatre () ;
  delay (2000) ;
  
  // Recommence la séquence
}

void sequence_Un ()
{
  // Séquence N°1 ; chenillard
  
  for (byte n = 0 ; n <= 2 ; n++)
  {
    for (byte i = 4 ; i <= 9 ; i++)
    {
      digitalWrite (i, HIGH) ;    // allume la LED sur broche i
      delay (100) ;               // durée du flash 150 millisecondes
      digitalWrite (i, LOW) ;     // éteint la LED
      delay (50) ;
    }
  }
  return ;
}

void sequence_Deux ()
{
  // Séquence N° 2 : cumul sur la gauche du mouvement de LED
  
  for (byte n = 0 ; n <= 5 ; n++)
  {
    for (byte i = 4 ; i <= (9-n) ; i++)
    {
      digitalWrite (i, HIGH) ; // allume la LED sur broche i
      delay (150) ; // durée du flash 150 millisecondes
      digitalWrite (i, LOW) ; // éteint la LED
    }
    digitalWrite ( (9 - n) , HIGH ) ; //dernière LED reste allumée
  }
  return ;
}

void sequence_Trois ()
{
  // Séquence N°3 : clignotement de l'ensemble 3 fois
  
  for (byte j = 1 ; j <= 3 ; j++)
  {
    for (byte k = 4 ; k <= 9 ; k++)
    {
      digitalWrite (k , LOW) ;
    }
    delay (500) ;
    for (byte l = 4 ; l <= 9 ; l++)
    {
      digitalWrite (l, HIGH) ;
    }
    delay (500) ;
  }
  return ;
}

void sequence_Quatre ()
{
  // Séquence 4 : extinction successive de la gauche vers la droite
  
  for (byte i = 9 ; i >= 4 ; i--)
  {
    digitalWrite (i, LOW) ;
    delay (150);
  }
  return ;
}
 
  
:idea:   :arrow:  :arrow:  :arrow:

Les fonctions que j'ai crées réalisent une tâche (une séquence d'allumage) et ne retournent aucun argument. Elles sont définies de type void, portent un nom (ex sequence_Un), et les instructions à réaliser sont entre deux accolades (comme pour la fonction loop). Néanmoins, à la différence de loop, les fonctions se terminent par « return ».

Le programme exécute les instructions contenues dans loop. Lorsqu'il arrive sur une fonction, il va chercher les instructions définissant la fonction et les exécute dans l'ordre. Arrivé à « return », il sait qu'il a fini, alors il reprend le programme contenu dans loop, là où il s'était arrêté.

Bien sûr, ceci n'est qu'un exemple. Vous pouvez maintenant créer vos propres fonctions pour définir d'autres séquences d'allumage (va et vient, allumage aléatoire, chenillard à chaque extrémité se rejoignant au centre et rebondissant vers les extrémités, etc.)  :geek:

Et si vous hésitez entre les feux, le chenillard ou l'enseigne, n'allez surtout pas acheter d'autres modules Arduino : il est possible de faire tenir les trois montages sur un seul module, comme le montre la vidéo postée plus haut dans ce forum :



Dans cette vidéo, la couleur des LED de l'enseigne est rouge ; cela collait mieux avec le mot bistro, mais j'aurais pris des LED bleues si j'avais écrit garage ! J'aurais même pris toutes les couleurs pour écrire Toys R Us, vous savez, ce magasin de jouets où on ne trouve pas (ou peu) de trains électriques !  :siffle:

Nous reparlerons du programme de la vidéo une prochaine fois, ce qui vous laisse le temps pour réfléchir à la façon de faire (en utilisant la fonction delay, sinon c'est trop facile).

Christian

Page d'origine
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Répondre