L'objectif est de disposer d'une solution de commande avec témoins lumineux pour arduino.
La solution doit être facilement intégrable pour des projets arduino avec des librairies clef en main.
Je profite de cette occasion pour :
Afin d'économiser les entrées/sorties du microcontrôleur et d'être scalable, des registres à décalage sont choisis contre d'autres solutions de ce type : switch_analogique
Avec les registres input ou output, il est possible de les disposer en cascade à volonté.
En résulte seulement 3 pins microcontrôleur pour n*8 entrées ou sorties.
Le schéma eagle développé pour l'occasion est le suivant :
L'autoroutage proposé par eagle en double couche sur un format shield arduino :
Un lien esayeda où j'ai exporté les fichiers eagle : easyeda.com/florian.tales/uno-shield-switch-led
Réalisation sur circuit imprimé :
En définitive la lecture de l'état des boutons se fait via :
Switch_Manager_checkButtons();
A tout moment on peut lire l'état des boutons dans les tableaux : pressed[] justpressed[] justreleased[]
L’écriture d'état des LEDs se fait via :
Led_Manager_setLed(Led Number, boolean status HIGH or LOW);
Code complet : GitHub
- HC595 not the best part for LEDs, limit of 70mA for the part, so 8-9 mA per LED. cd74AC164 much better part, especially in matrix use, with 20-24mA/pin drive capability. or TPIC6B595 for sinking current, 150mA/pin sink capability.
- 74hc595 Led flashing on start up: http://forums.parallax.com/discussion/139862/74hc595-on-start-up
- un composant très malin qui va faire tout ça pour nous : TM1638
Pour les boutons (Entrées) : Arduino Playground - ShiftIn
Pour les LEDs (Sorties): Arduino Playground - ShiftOut
Réalisation presque identique (dessin Freezing et gravure PCBWay.com) : www.whatimade.today