Nombre total de pages vues

DMX Adress + interfaçage

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
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 )
 

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.
 
Comprendre l'adressage Dip_switchs voir explication :  Aquila Reloaded 
 
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)

vous avez le choix des entrées, ne pas prendre la " pin 2 " elle pose des problèmes (la pin2 est utilisé dans la bibliothèque dmx pour inverser le sens du max485 (Ro/De))

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(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);
  
 
  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; 



 


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 dmx
 
 sinon 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 

     
Dans mes montages pour l'instant, j'utilise trois variétés d'afficheur, tous avec interface I2c.
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) 
 
 

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