L'adressage dmx.
Deux possibilités pour l'adressage Dmx
1 - Méthode la plus connue, la plus ancienne et très efficace. Les Dip-Switchs
Deux possibilités pour l'adressage Dmx
1 - Méthode la plus connue, la plus ancienne et très efficace. Les Dip-Switchs
2 - Méthode plus récente, 3 ou 4 boutons poussoirs et un afficheur ( 4 digits, lcd, oled.... j'utilise plus de lcd)
( voir page : Affichage ( LCD, OLED, TM1637, I2C ) )
( voir page : Affichage ( LCD, OLED, TM1637, I2C ) )
1 - adressage par dip-switchs :
Programme dip-switch simple
Explication : l’adressage (le choix de l’adresse de début) se fait via des dipswitchs.
Pour une adresse Dmx 9 dip-switchs suffisent.
Sur le schéma suivant j'utilise 1 bloc de 10 dip-switch, ils sont plus faciles à trouver que les blocs de 9 et le dip-switch restant peut être utilisé pour commuter une fonction supplémentaire.
Les états logiques de chaque interrupteur sont additionnés.
un petit schéma de câblage d'une simplicité enfantine : R3 à R12 (10k ohms) sont des résistances de pull-up.(les 10 résistances peuvent être remplacées par un réseau de résistances)
Dans le setup déclarer toutes les entrées reliées aux dip-switchs. En théorie si vous déclarez les entrées en pullup, vous n’êtes pas obligé de mettre le réseau de résistance. (par précaution, je les utilise quand mème)
Exemple : (choisissez les pins que vous désirez utiliser (à choisir entre D3 à D12 et A0 à A7 )
En premier : en début de programme crée une variable pour l'adresse dmx
int adress = 0;
dans le setup copié les lignes
pinMode(3, INPUT_PULLUP); // déclaration des pins
pinMode(4, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
adress = 0; // Lire l’état des pins et additionné les valeurs
if(digitalRead(3) == LOW) adress += 1; // lecture des entrées
if(digitalRead(4) == LOW) adress += 2;
if(digitalRead(5) == LOW) adress += 4;
if(digitalRead(6) == LOW) adress += 8;
if(digitalRead(7) == LOW) adress += 16;
if(digitalRead(8) == LOW) adress += 32;
if(digitalRead(9) == LOW) adress += 64;
if(digitalRead(10) == LOW) adress += 128;
if(digitalRead(11) == LOW) adress += 256;
if(digitalRead(4) == LOW) adress += 2;
if(digitalRead(5) == LOW) adress += 4;
if(digitalRead(6) == LOW) adress += 8;
if(digitalRead(7) == LOW) adress += 16;
if(digitalRead(8) == LOW) adress += 32;
if(digitalRead(9) == LOW) adress += 64;
if(digitalRead(10) == LOW) adress += 128;
if(digitalRead(11) == LOW) adress += 256;
2 - adressage par BP et Afficheur :
Trouver sur internet, module diy et programme de gestion de l'afficheur + 4 boutons poussoir + 3 leds d'état en i2c (2 fils pour l'ensemble) non-tester adressage dmxsinon pour créer un adressage par BP et afficheur il vous faut un afficheur (voir pas de page).
+ 4 Bp relié entre une entrée Arduino et la masse. (Bp = Bouton poussoir voir bas de page)
déclarer les entrées avec les résistances de pull-up
exemple : " pinMode ( MODEPIN,INPUT_PULLUP ); "
Plus une led " Signal dmx " pour indiquer la réception ou l'absence de dmx, (le choix se fait à la programmation)
fonction des Bp
Menu => un appui appelle l'adressage.
Up => incrémente la valeur dmx.
Down => Décrémente la valeur dmx.
Set => Mémorise la nouvelle valeur.
Électroniquement, rien de bien compliqué toute la difficulté se trouve dans la programmation.
Schéma 4Bp + led
(bon Ok sur le schéma ce sont des interrupteurs et pas des boutons poussoirs)
Ci 4Bp + Led
( bon, les boutons, il n'y a aucune difficulté, c'est vraiment à titre indicatif)
Explication bouton poussoir
je vous donne le schéma de base pour brancher un bouton poussoir, c'est le schéma type cela dit, on peut se passer de la résistance et du condensateur à condition de quelques lignes de code (vous pouvez utiliser ou l'un ou l'autre ou les 2, si vous n’utilisez rien risque de fonctionnement aléatoire sur les entrées, mais pour comprendre tout ça rien ne vaut une bonne explication, pour ça une bonne page pour tout comprendre).
Affichage
N'oubliez pas qu'avec chaque librairie, il y a des exemples, n’hésitez pas à les tester.
Le Tm1637 est une puce qui gère toutes les entrées des afficheurs 7 segments/4 digits avec seulement 2 signaux de commande (pseudo i2c). Librairie : Tm1637 ou lien github digital groove
À noter que le Tm1637 n'est pas à la norme i2c, même câblage, mais ne fonctionnera pas si vous avez un autre composant i2c (par exemple avec le pca9685)
Câblage i2c à noter que le câblage est identique pour le Tm1637, l'écran LCD (version i2c) et l’écran OLED la différence se trouve dans le soft:
Vcc <==> 5v
Gnd <==> Gnd
Sda <==> A4 (Uno, Nano ), Io4 (Esp-07)
Sck <==> A5 (Uno, Nano ), Io5 (Esp-07)
Gnd <==> Gnd
Sda <==> A4 (Uno, Nano ), Io4 (Esp-07)
Sck <==> A5 (Uno, Nano ), Io5 (Esp-07)
Le deuxième, l’écran LCD : (1602 16 caractères x 2 lignes) ou (2004 20 caractères x 4 lignes ), vieillot, encombrant, mais efficace.
à la base l’écran LCD nécessite pas mal de connexion
image du site Scriptol
mais il existe des interfaces I2C <=> LCD
On passe à 2 connections vers le microcontrôleur (Sda, Sck).
Les plots marqués A0, A1, A2 servent à modifier l'adresse du LCD en cas de besoin.
Le potentiomètre sert à régler le contraste.
J'utilise la librairie Adafruit liquidCrystal_i2c
le troisième l’écran OLED (128x32)
Il offre plein d'avantage, plusieurs tailles de caractère, scolling, graphisme, petite taille (existe en plusieurs tailles) et abordable financièrement.
Pour tout comprendre sur le fonctionnement d'un écran Oled, une très bonne page avec toutes les explications utiles " Afficheur OLED i2c Arduino "
librairie que j'utilise ESP8266 - OLED - ssd1306 pour ESP
Adafruit SSD_1306 + Adadruit GFX pour Nano
Aucun commentaire:
Enregistrer un commentaire