sketch pour 74hc595

bonjour à tous
voilà je m' entraine à programmer des 74hc595 de plusieurs façon
j' ai lu un topic il y quelques temps qui expliquait la façon de programmer plusieurs
74hc595 en cascade à partir d' un tableau, on définissait les pin à allumer et de là
on sortait une valeur en hexadécimale .
le problème est que je n'arrive plus à retrouver ce topic ...

est ce que quelqu'un aurait ce lien
merci à l'avance

Avec cette merveilleuse page ?

Bonjour,

Ce serait pas ce topic par hasard ?
http://arduino.cc/forum/index.php/topic,157756.0.html

non ce n' été pas sur le forum arduino
si je me rappelle bien c 'été une méthode de programmation
qui utilise un tableau
tu remplissait les pin à 0 ou à 1 de là tu suivais une opération sur chaque colonne qui te donné un
chiffre à convertir en hexa tu envoyais ça sur les shifters et ça allumer les pins correspondant
au mot binaire que tu as rentré dans le tableau
j' aurais bien voulu retrouver cette méthode de programmation car dans certaines applications
je trouvais ça pratique
si j'arrive à retrouver ce lien promis cette fois ci je le met en marque page LOL

http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/presentation-du-74hc595

Peut être?

Un 74HC595 est un shift register registre à décalage 8 bit c'est à dire 1 octet.
Ses sorties sont repérées :
QA à QH dans la doc "ST" et "ON" (ex Motorola)
Q0 à Q7 dans la doc "NXP" (ex Philips)

Dans l'univers Arduino il existe une fonction toute prête et simple d'emploi "shiftout() qui gére l'écriture dans un registre à décalage.
Il faut fournir la pin qui sera raccordée à la broche "Horloge" du registre, la pin qui sera raccordé à la broche Donnée (ou Data) et celle qui sera reliée au verrou (ou Latch), l'octet à transmettre et le sens dans lequel on veut le transmettre.

Sous l'effet d'un front d'horloge le premier bit entre dans le registre à décalage d'abord en QA (ou Q0).
Au front suivant la valeur qui était en QA passe en QB et une nouvelle valeur passe en QA et ainsi de suite.
Si on relie la sortie QH (ou Q7) a l'entrée d'un autre registre à décalage on peut obtenir obtenir 2x8 bits et ainsi de suite il n'y a pas de limite.

Le verrou (Latch) sert à éliminer les états intermédiaires. Quand on envoi un octet le bit destiné à Q7 passe successivement par Q0,Q1,Q2,Q3,Q4,Q5,Q6 et enfin Q7.
Un registre à décallage avec latch possède un registre tampon et un registre "de sortie". Les bits défilent dans le tampon et sont transféré en 1 seule fois dans le registre de sortie, comme celà il n'y a qu'une mise à jour quelque soit le nombre de bit transmis.

Ca c'est pour le fonctionnement du registre.
Pour ton histoire de tableau il faut voir les choses simplement il n'y a aucun mystère ni programmation réservée aux génies ou gourous.

Prenons l'exemple d'un afficheur 7 segments il faut un registre à décalage par module afficheur et chaque segment est relié à une sortie du registre.
Il suffit de faire un tableau sur le papier et d'écrire pour chaque chiffre de 0 à 9 quels segments doivent être allumés.
Disons par exemple que le câblage est réalisé ainsi :
Q0 est relié au segment a , Q4 est relié au segment e
Q1 est relié au segment b , Q5 est relié au segment f
Q2 est relié au segment c , Q6 est relié au segment g
Q3 est relié au segment d , Q7 est relié au segment h

En programmation il faut déclarer un tableau d'entiers de taille 10.
uint8_t chiffres[9] ;
et si par exemple pour écrire un 3 il faut allumer les segments a,c,d,e,g,h (ce n'est qu'un exemple je n'ai pas vérifier avec la spec d'un afficheur réel)
il suffira d'écrire chiffres[3] = 0b10111011 ;

J'ai utilisé la notation binaire parce que visuellement je la trouve mieux adaptée pour dialoguer avec le registre à décalage mais la valeur d'un nombre ne change pas qu'il soit exprimé en décimal, en binaire, en octal ou en hexadécimal.

J'ai utilisé aussi les typages forts pour les entiers car eux seuls permettent de bien maîtriser la taille ocupée en mémoire : un type int occupe généralement 2 entiers avec le compilateur avr-gcc.

Tu vois que ce n'est vraiment pas compliqué et la fonction shiftout() arduino est aussi très simple.

Je dirais même que c'est plus simple à faire soit-même que de passer du temps à trouver un bout de programme tout fait qui ne fera jamais exactement ce que tu veux et qu'en plus il te faudra déchiffrer parce que son auteur n'aura pas écrit de documentation.

j' ai enfin réussi à retrouver la page que je chercher voici le lien
pour ceux que cela intéresse: http://arduino103.blogspot.fr/2011/06/augmenter-le-nbre-de-sorties-avec.html
plus particulièrement le chapitre " Représentation Binaire "

en tout cas merci pour vos post