LOCODUINO

Enseigne de magasin

.
Par : Christian, Dominique, Guillaume, Jean-Luc

DIFFICULTÉ :

L’application proposée est une animation lumineuse mettant en œuvre un ensemble de Leds piloté par le code présenté ci-après. Il comporte plusieurs types d’animations.

Une des applications réelles sur un réseau peut être l’animation d’une enseigne de magasin, mais aussi une fête des lumières ou encore une fête foraine.

L’exemple présente l’animation de 6 Leds. Libre à vous après d’adapter pour plus ou moins de lumières. Une vidéo vaut mieux qu’un long discours.

Les pré-requis

Vous pouvez très bien arrêter votre lecture à ce stade pour essayer de faire comme l’animation pour vous entraîner à programmer et à brancher correctement. Vous pourrez ensuite comparer votre programme avec celui ci-dessous.

Pour quel Arduino ?

Le code est écrit pour un Arduino Uno, mais est facilement transposable à un autre type d’Arduino. Il est toutefois écrit avec la fonction delay( ... ) ce qui nécessite une adaptation pour rajouter d’autres effets de lumière.

Le matériel nécessaire

Il faut :

  1. 1 ordinateur avec l’IDE Arduino installé : pour l’installer ;
  2. 1 Arduino Uno et son cable USB ;
  3. une plaque de prototypage ou breadboard ;
  4. des fils pour relier les composants aux broches ;
  5. 6 Leds avec 6 résistances de 220 ohms.

Si vous ne savez pas ce que sont ces choses, jetez un œil à « Un minimum pour jouer rapidement avec un Arduino ». Pour savoir où les acheter, consultez « Où acheter ? ».

Les branchements

Figure 1
Figure 1
Montage sur une platine d’essai d’une enseigne à 6 DEL

Le principe est simple : les broches 4 à 9 de l’Arduino sont utilisées pour piloter les Leds. Le programme présenté ci-après suppose que les numéros de broches utilisés sont consécutifs. Étant donné le sens de branchement, mettre la broche à HIGH provoque l’allumage de la Led correspondante. La mettre à LOW provoque son extinction.

Le programme

Le code ci-après est à recopier dans l’interface de l’IDE Arduino. Il y a même un bouton télécharger à la fin.

/*
 * Programme pour arduino uno
 * par C. Bézanger Octobre 2013
 * Licence GNU GPLv3
 *
 * Ce programme réalise le clignotement d'une enseigne publicitaire.
 * Il fait clignoter selon un certain rythme six Leds reliées aux sorties 4 à  9.
 * Il utilise des fonctions pour alterner les rythmes.
*/
 
/*
 * Initialisation des broches 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 Leds 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) ;  // délai 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
}
 
/*
 * Séquence N°1 ; chenillard
 */
void sequence_Un ()
{
  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) ;
    }
  }
}
 
/*
 * Séquence N° 2 : cumul sur la gauche du mouvement de Led
 */
void sequence_Deux ()
{
  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
  }
}
 
/*
 * Séquence N°3 : clignotement de l'ensemble 3 fois
 */
void sequence_Trois ()
{
  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) ;
  }
}
 
/*
 * Séquence 4 : extinction successive de la gauche vers la droite
 */
void sequence_Quatre ()
{
  for (byte i = 9 ; i >= 4 ; i--) 
  {
    digitalWrite (i, LOW) ;
    delay (150);
  }
}

10 Messages

  • Enseigne de magasin 9 novembre 2016 16:24, par gilles

    bonjour
    j’ignore si ce lien est encore actif....

    j’ai trouvé votre enseigne par hazrd sur le net, et, j’ai voulu acheter le materiel pour transposer ça sur la plaque a leds de mon camion ;
    le hic est que j’ai acheté un arduino nano :

    votre programme ne peut pas se televerser : message d’erreur sur la ligne "sequence_un"

    en attendant de recevoir un uno, existe -il un moyen de "bidouiller" cette expression ou c’est peine perdue ?

    je dois vous preciser que j’ai autant de connaissances en electronique qu’une poule en astronomie....

    c’est pas gagné

    bonne journée

    Répondre

    • Enseigne de magasin 9 novembre 2016 17:59, par Christian

      Bonjour Gilles,

      Effectivement, ce programme a été écrit à l’époque pour un Arduino Uno, parce que c’était celui qu’on trouvait le plus couramment. Depuis, j’ai refait une enseigne écrivant le mot HOTEL, sur le même principe mais commandé par un microcontrôleur ATtiny45 de chez Atmel, celui-ci étant programmé grâce à un module Arduino Uno. Voici une vidéo qui vous montrera ce montage :
      https://vimeo.com/147948985

      Je vous rassure, il est sans doute possible de "bidouiller" ce programme pour un Arduino Nano, et ce que je peux vous conseiller serait de ne pas faire appel à des fonctions (comme sequence_un qui a l’air de planter d’après le message d’erreur), mais de mettre directement le code des fonctions plutôt que de les appeler (ce programme était aussi prévu pour enseigner l’usage des fonctions). Ainsi vous obtiendrez un seul programme qu’on appelle "séquenceur". Il ne s’agit que d’allumer des LED les unes après les autres, selon le rythme et l’ordre que vous voulez : si les fonctions permettent un code plus lisible, elles ne sont pas indispensables.

      Puisque vous dites ne pas avoir de grandes connaissances, je vous invite à lire l’article sur le feu de carrefour routier ; c’est exactement la même chose. Pour vous en convaincre, voici une autre petite vidéo :
      https://vimeo.com/120179435

      Tout ce qu’il faut savoir et comprendre existe sur le site de Locoduino, mais bien entendu nous restons à votre disposition pour vous apporter l’aide nécessaire.

      Répondre

    • Enseigne de magasin 9 novembre 2016 18:22, par Christian

      Bonjour Gilles,

      Voici dans les grandes lignes, ce que je vous conseille de faire pour passer de l’UNO au NANO.

      Le programme a été écrit pour le UNO et aussi comme exemple pédagogique pour l’utilisation de fonctions (comme "sequence_un" qui fait planter le téléversement vers le NANO). Or, si ces fonctions permettent un code plus lisible, elle ne sont pas indispensables.

      Vous pouvez donc essayer de remplacer l’appel des fonctions, directement par le code de ces fonctions. Votre programme sera alors un séquenceur, comme l’exemple donné sur ce site pour un feu tricolore de carrefour routier.

      Cela ne demande pas de grandes connaissances ; tout ce qu’il faut comprendre est expliqué sur le site de Locoduino. Bien entendu, l’équipe reste à votre disposition si vous avez besoin d’aide.

      Répondre

      • Enseigne de magasin 9 novembre 2016 18:29, par Christian

        Voici, pour compléter ma réponse, deux petites vidéos.
        La première montre une enseigne écrivant HOTEL réalisée à partir de µC ATtiny45 :
        https://vimeo.com/147948985
        La deuxième montre qu’avec un même montage, en changeant simplement le programme, on obtient des choses bien différentes, et pourquoi pas, tout sur le même montage (ici, avec un UNO à cause du nombre de sorties nécessaires).
        https://vimeo.com/120179435
        Voici donc quelques idées pour votre réseau. Bon modélisme ferroviaire !

        Répondre

    • Enseigne de magasin 10 novembre 2016 14:19, par Dominique

      Bonjour à tous les deux.

      Je ne vois rien dans ce programme qui est spécifique à l’UNO.
      Et comme l’UNO et le Nano ont le même processeur ATMega328, le programme doit tourner dans le Nano sans modification (sauf à déclarer le Nano dans l’IDE).

      cordialement

      Répondre

  • Enseigne de magasin 30 janvier 2017 22:05, par lassad

    svp le nom du logiciel

    Répondre

    • Enseigne de magasin 30 janvier 2017 23:57, par Christian

      Le logiciel est celui qui est donné dans l’article et tourne sur un module Arduino.
      Ce montage ci ne se trouve pas dans le commerce ; nous sommes dans le cadre du DIY (Do It Yourself c’est-à-dire faites le vous-même).
      Prochainement, un article décrira un montage analogue réalisé avec un microcontrôleur ATtiny45.

      Répondre

  • Enseigne de magasin 5 février 2017 16:43, par herve augier

    Bonjour
    Débutant Arduino, je suis très intéressé pas ce chapitre.
    Je voudrais inclure ce script dans un ATtiny84, mais j’ai besoin de conseils.
    Pouvez-vous m’éclairer ?
    Merci d’avance.

    Répondre

  • Enseigne de magasin 5 février 2017 17:16, par Dominique

    Bonjour et bienvenue,

    Si vous êtes débutant, profitez de Locoduino pour lire les articles de la rubrique "Pour débuter"

    Quand vous vous sentirez à l’aise avec l’IDE, une série d’articles est consacrée à la famille ATtiny :
    Le microcontrôleur ATtiny45 (1) et Le microcontrôleur ATtiny45 (2) et d’autres sont à venir.

    Visitez aussi le forum où vous trouverez des informations importantes.
    Bon courage

    Répondre

    • Enseigne de magasin 8 février 2017 10:43, par Christian

      Bonjour Hervé,

      Mon ami Dominique a parfaitement répondu en conseillant la série d’article sur l’ATtiny45 qui ressemble fortement à l’ATtiny84 sauf que ce dernier possède un plus grand nombre d’E/S numériques. En conséquence, on peut programmer des enseignes de commerçants avec plus de lettres (comme restaurant par exemple). Mais le principe reste le même.
      Je vais publier aujourd’hui ou demain un troisième article sur l’ATtiny45 ; il faudra l’inclure dans votre lecture, il vous sera très utile pour arriver au même résultat avec un ATtiny84.

      Bon apprentissage.

      Christian

      Répondre

Réagissez à « Enseigne de magasin »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Projets »

Les derniers articles

Les articles les plus lus