ARDX-Montages-CIRC05

De MCHobby - Wiki
Révision datée du 20 septembre 2015 à 10:55 par Admin (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que nous faisons

.: 8 Leds de plus :.

.: Le registre à décalage 74HC595 :.'

C'est le moment de jouer avec les puces, ou circuits intégrés (CI, IC en anglais) comme ils sont appelés.

Le boitier des circuits intégrés peut être fort trompeur. Par exemple, la puce sur la carte Arduino (un micro-contrôleur) et la puce que nous utilisons pour ce montage (le registre à décalage) se ressemblent beaucoup mais ils sont pourtant assez différents.

Le prix de la puce ATMega utilisée sur la carte Arduino coûte quelques Euro tandis que le 74HC595 ne coûte que quelques dizaines de cents. C'est un bon CI d'introduction, et une fois que vous vous sentirez à l'aise avec ce matériel et sa fiche technique (disponible en ligne sur ardx.org/74HC595) le monde des circuits intégrés vous appartiendra.

Le registre à décalage (aussi appelé convertisseur série vers parallèle), vous procurera 8 sorties supplémentaires (pour contrôler des LEDs et autres) en utilisant seulement 3 broches d'Arduino.

Ils peuvent aussi être raccordés ensembles pour fournir un nombre illimité de sorties en utilisant les mêmes quatre broches. Pour l'utiliser, vous poussez les données (clock in) pour ensuite les bloquer/mémoriser dedans ( latch ).

Pour y arriver, vous placez la broche data à HIGH ou LOW et vous envoyez une impulsion sur la broche clock jusqu'à avoir envoyé 8 bits de données.

Ensuite, vous envoyez une impulsions sur la broche latch et les 8 bits sont transférés vers les broches du registre à décalage.

Cela semble compliqué mais devient réellement simple une fois que vous l'avez compris (pour une explication plus détaillée du fonctionnement du registre à décalage, visitez ardx.org/SHIF (anglais)

Le montage

Le matériel nécessaire

ARDX-circ-sheet.png

Fiche de montage CIRC-05
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-LED-red.png

LED (ou DEL)
x8

ARDX-R560.png

Résistance de 560 Ohms (vert-bleu-brun)
x8

ARDX-74HC595.png

Registre à décalage 74HC595
x1

 

Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.

Schéma

Circ05-schema.png

Montage

Cir05-montage.png

Le code

Pas besoin de taper tout le code, vous pouvez le télécharger depuis ardx.org/CODE05 puis faire un copier/coller dans un croquis vide.

//    Définition des broches
// Le 74HC595 utilise un protocole appelé SPI.
// Ce protocole utilise 3 broches
int data = 2;
int clock = 3;
int latch = 4;

void setup() //Exécuté une fois seulement
{
   pinMode(data, OUTPUT);
   pinMode(clock, OUTPUT);
   pinMode(latch, OUTPUT); }


void loop() // s'exécute encore et encore
{
   int delayTime = 100;  //temps entre deux mise-à-jour des LEDs

   for(int i = 0; i < 256; i++){
      updateLEDs(i);
      delay(delayTime);
   }
}

/*
 * updateLEDs() - Envoi l'état des LEDs. Envoi
 * la séquence de valeurs au 74HC595
 */
void updateLEDs(int value){
   //Met le latch à LOW sur la puce
   digitalWrite(latch, LOW);

   //envoi les 8 bits au registre à décalage
   shiftOut(data, clock, MSBFIRST, value);

   //Met le latch à HIGH pour afficher les données
   digitalWrite(latch, HIGH);
}

---------- Plus de code en ligne ----------

Cela ne fonctionne pas?

Voici 3 choses à essayer.

La LED témoin d'Arduino s'éteint ?

Si la LED de mise sous tension de votre Arduino s'éteint, cela signifie que le circuit intégré est monté à l'envers. Cela arrive parfois lors des premiers montages.

Rien ne sera endommagé si vous réagissez vite pour corriger le problème.

Cela ne fonctionne pas?

C'est toujours dommage de faire face à un essai raté mais il s'agit probablement de quelque chose d'aussi simple qu'une malheureuse inversion de fils.

Grrrr! Ca ne marche pas!

Envoyez nous un e-mail. Ce circuit est à la fois simple et complexe.

Nous avons besoin de connaître vos problèmes pour les adresser lors d'une future édition.

help@oomlout.com (anglais) ou via le SAV de MCHobby.be

Faire encore mieux

Le faire à la dure!

Un Arduino est capable de faire des choses assez complexes très facilement, envoyer des données bit par bit fait partie de ses possibilités.

Cependant, une des particularités intéressantes d'Arduino est que vous pouvez implémenter vos projets de façon simple ou compliquée en fonction de vos souhaits.

Essayons donc un exemple dans cette optique. Dans la fonction loop, remplacez la ligne de code updateLEDs(i); par updateLEDsLong(i);

Chargez le programme et notez que rien n'a changé. Si vous regardez au code, vous pouvez voir qu'il communique un bit à la fois au circuit intégré (ardx.org/SPI pour plus de détails) (en anglais)

Contrôler les LEDs individuellement

Il est temps de contrôler les LEDs d'une façon identique à celle employée dans le montage CIRC02.

Les états des 8 LEDs sont alors stockés dans un octet (une valeur en 8 bits). Pour plus de détails sur son fonctionnement, voyez ardx.org/BINA.

Arduino est très bon pour manipuler les bits et il dispose d'un ensemble complet d'opérateurs bien utiles pour ces tâches.

Pour plus de détails sur les mathématiques binaires ( http://ardx.org/BITW ).

Notre implémentation:

Remplacer le code de la fonction loop() par

int delayTime = 100; //nbre de ms à attendre
// entre deux mise-à-jour des LEDs
for(int i = 0; i < 8; i++){
    changeLED(i,ON);
    delay(delayTime);
}

for(int i = 0; i < 8; i++){
   changeLED(i,OFF);
   delay(delayTime);
}

Chargez le code et les LEDs s'allument les unes après les autres puis s'éteignent de façon similaire.

Jetez un oeil sur le code et Wikipedia pour comprendre comment cela fonctionne, ou envoyez-nous un e-mail si vous avez des questions (anglais).

Plus d'animations

Maintenant les choses deviennent plus intéressantes. Si vous regardez au code du circuit CIRC02 (Jeu à 8 LEDs), vous pouvez voir que nous changeons les LEDs en utilisant digitalWrite(led, state) qui a le même format que la routine changeLED(led, state) que nous avons écrit.

Vous pouvez utiliser l'animation écrite lors de CIRC02 en copiant le code dans ce sketch et en changeant tous les digitalWrite() par changeLED() .

Puissant non?

(Vous aurez aussi besoin de changer quelques autres petites choses, consultez les erreurs de compilation pour savoir ce qu'il faut adapter).

Plus, plus et encore plus

Plus d'information, où poser vos autres questions: ardx.org/CIRC05 (anglais)

Internet

.:téléchargement:.

LA fiche de montage est disponible sur ardx.org/BBLS05

.: Vidéo :.

La vidéo du montage est disponible sur ardx.org/VIDE05 (anglais)


Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.

Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.

Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).


Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).

Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/