Page 1 sur 1
reset via DMX
Posté : sam. 13 nov. 2021 16:42
par cousing
Hello,
peut-on faire un Reset de la carte par un canal dmx comme sur les asservis ?
bises
Re: reset via DMX
Posté : sam. 13 nov. 2021 21:22
par RitoonL
tu peux tenter d'utiliser la fonction
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.
Re: reset via DMX
Posté : sam. 13 nov. 2021 22:08
par Jacques
Oui en effet, il faut déjà déclarer la fonction, en dehors de toute boucle :
Puis appeller
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.
Re: reset via DMX
Posté : sam. 13 nov. 2021 22:10
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.
Re: reset via DMX
Posté : lun. 15 nov. 2021 13:36
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?
Re: reset via DMX
Posté : lun. 15 nov. 2021 17:39
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.
Re: reset via DMX
Posté : mar. 16 nov. 2021 07:45
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 !