reset via DMX

Questions sur les codes officiels du core arpschuino
Questions about official codes from arpschuino core
Répondre
cousing
Messages : 2
Enregistré le : lun. 8 nov. 2021 14:49

reset via DMX

Message par cousing »

Hello,

peut-on faire un Reset de la carte par un canal dmx comme sur les asservis ?

bises
Avatar du membre
RitoonL
Administrateur du site
Messages : 112
Enregistré le : dim. 31 oct. 2021 10:21

Re: reset via DMX

Message par RitoonL »

tu peux tenter d'utiliser la fonction

Code : Tout sélectionner

resetFunc();
Cela ne redémarre pas physiquement la carte mais redémarre le programme en passant par le setup, donc réinitialise les variables.

Pour un hard reset, le seul moyen est de brancher physiquement une sortie du microcontrôleur sur le la pin de reset de l'arduino. par contre c'est un peu un hack sur l'arpschuino car il va falloir souder directement sur une patte du switch de reset, et une sortie sera monopolisée que pour cette fonction.

Il suffit ensuite de faire mettre ta sortie au niveau haut pour reset la carte. C'est un peu de code, mais rien de méchant.
Administrateur - Forum arpschuino
Jacques
Messages : 267
Enregistré le : dim. 31 oct. 2021 19:37

Re: reset via DMX

Message par Jacques »

Oui en effet, il faut déjà déclarer la fonction, en dehors de toute boucle :

Code : Tout sélectionner

void(* resetFunc) (void) = 0;
Puis appeller

Code : Tout sélectionner

resetFunc();
Pour en avoir le cœur net, j'ai écrit un petit code de test pour l'arpschuino :

Code : Tout sélectionner

#include <Arpschuino.h>
#include <lib_dmx.h>
int address=1;
int nbre_circuits (2);//////////minimum 2/////////

void setup()
{ 
  pinMode(LED_BUILTIN, OUTPUT);  //met la led verte (temoin) en output
  digitalWrite(LED_BUILTIN,HIGH);//eteind la led
  
  for(int i=0;i<3;i++)//clignote 3 fois lentement au démarrage pour montrer qu'on a bien redémarré
  {
    digitalWrite(LED_BUILTIN,LOW);//
    delay(1000);
    digitalWrite(LED_BUILTIN,HIGH);//
    delay(1000);    
  }
  DMX.attachRXInterrupt  (frame_received);
  DMX.set_control_pin(ArpDMXControl);    // Arduino output pin for MAX485 input/output control (connect to MAX485 pins 2-3) 
  DMX.set_rx_address(address);      // dmx start address
  DMX.set_rx_channels(nbre_circuits);     // number of rx channels
  DMX.init_rx(DMX512);        // starts universe 0 as rx, NEW Parameter DMX mode
}

void(* resetFunc) (void) = 0;  // declare reset fuction at address 0

void loop() 
{
  delay(500);//la led s'éteind apres 500ms sans reception DMX
  digitalWrite(LED_BUILTIN,HIGH);  //
} 

void frame_received(uint8_t universe) // cette boucle est executé à chaque réception d'une trame DMX
{
  Arp_led_temoin ();//la led clignote si elle reçoit un signal DMX 
  if (DMX.RxBuffer[0]== 255 )
  {
     resetFunc(); //call reset
  } 
} 
Ca fonctionne ! quand on envoie le circuit 1 à full, la carte reset, on le visualise facilement par 3 clignotements lents au démarrage de la carte. Le code ne fait rien de plus mais c'est facilement adaptable à d'autre codes.
Jacques
Messages : 267
Enregistré le : dim. 31 oct. 2021 19:37

Re: reset via DMX

Message par Jacques »

Concernant le hard reset, on peut aussi récupérer la broche reset sur les port Serial ou I²C si ils ne sont pas déjà utilisés.
maryno
Messages : 22
Enregistré le : ven. 12 nov. 2021 16:13

Re: reset via DMX

Message par maryno »

c'est drôle, je réfléchissais justement à déporter le bouton du reset quand je vois qu'un ami d'enfance de la metteuse en scène avec qui je travaille se la pose aussi.. bon, moi je voudrais faire un reset si je perds le dmx, vous pensez que je peux faire ça avec un câble de 15m pour aller le confier à la régie plateau?
Jacques
Messages : 267
Enregistré le : dim. 31 oct. 2021 19:37

Re: reset via DMX

Message par Jacques »

Le monde est petit !
Oui on peut déporter le reset harware, il faut récupérer la masse et la broche reset (sur le port Serial ou I2C), tirer 2 fils terminés par un bouton poussoir.
15m c'est long ! C'est peut-être prudent d'utiliser un fil blindé pour éviter les resets intempestif. Si ça ne suffit pas, on peut remplacer la résistance 10k de l'arpschuino par une valeur plus faible. C'est une résistance de pull up qui sert justement à ça, une résistance plus faible maintiendra la broche au niveau haut un peu plus "fermement" et la carte consommera un petit peu plus.
Avatar du membre
RitoonL
Administrateur du site
Messages : 112
Enregistré le : dim. 31 oct. 2021 10:21

Re: reset via DMX

Message par RitoonL »

Ou alors avec un aprsensors RF indépendant qui effectue le hard reset de l'arpschuino en RF12, mais c'est un peu un délire !
Administrateur - Forum arpschuino
Répondre