Page 1 sur 1

executer une commande seulement si la valeur dmx change

Posté : mer. 13 sept. 2023 16:53
par maryno
bonjour, je pilote 16 relais avec une arpschuino2, ça foctionne avec le code dédié (2x8relays) mais j'aimerais le modifier.
ce sont des verrous à solénoïdes que je pilote via les relais, les alimenter plus de 5'' les amèneraient à s'autodétruire, j'aimerais donc que mon code limite le risque d'incident. j'ai inséré une ligne : digitalWrite(output , HIGH); après celle en LOW et un petit délai, ça referme bien le verrou mais ça le réouvre à la récéption d'une nouvelle trame dmx, et ça ouvre-ferme à toute vitesse.. (si le circuit reste envoyé)
j'aimerais donc n'executer cette boucle que si une des 16 adresses dmx concernées a une valeur différente de la précédente.
je pensais que le code servo avait cette logique pour éviter les tremblements de servo mais je ne trouve pas où ce serait écrit, j'espérais me débrouiller avec des copier-coller..
vous auriez une piste ou une solution ?
merci !

Re: executer une commande seulement si la valeur dmx change

Posté : mer. 13 sept. 2023 17:09
par maryno
ça aide de poster des messages ici, je viens de regarder le code spider-board et je pense avoir trouvé de quoi faire des copier-coller.. mais je n'aboutis qu'à un message d'erreur, soit disant que frame recieved ne serait pas déclaré dans ce scope.. je joins le code si vous avez un moment pour jeter un coup d'oeil..
merci

Re: executer une commande seulement si la valeur dmx change

Posté : jeu. 14 sept. 2023 15:48
par Jacques
Hello Eric,
le code que tu as envoyé ne compile pas simplement parce qu'il manque une accolade fermante.
Juste avant "void frame_received", c'est pour ça que le compilateur ne voit pas la fonction.

Re: executer une commande seulement si la valeur dmx change

Posté : jeu. 14 sept. 2023 19:18
par maryno
D'où l'importance de soigner la mise en page ! Je ne suis pas assez rigoureux.. Je teste ça demain
Merci beaucoup Jacques

Re: executer une commande seulement si la valeur dmx change

Posté : ven. 15 sept. 2023 11:30
par maryno
Bon, finalement ça ne marche pas, ça compile bien mais ce code de referme les verrous que si je repasse en dessous de 127. Le délai semble bien s'exécuter, je ne peux pas ouvrir-fermer très vite, mais le digital write low ne s'exécute pas. Je vais essayer de m'y remettre à tête reposée mais si jamais vous aviez une piste à m'indiquer, je suis preneur !
À bientôt et merci

Re: executer une commande seulement si la valeur dmx change

Posté : ven. 15 sept. 2023 12:08
par Jacques
Il me semble que j'avais écrit un code similaire pour du déclenchement de feux d'artifices.
Le voici tout frais sorti des archives :
arpschuino_16off_on_firework.zip
(1.95 Kio) Téléchargé 343 fois
Dis moi si ça ressemble à ce qu'il te faut.

Re: executer une commande seulement si la valeur dmx change

Posté : dim. 17 sept. 2023 15:10
par maryno
Parfait ce code, j'ai raccourci la durée de l'impulsion pour pouvoir éventuellement les enchainer plus rapidement et j'ai bien l'impression qu'on va jouer ainsi.
Merci beaucoup Jacques !

Re: executer une commande seulement si la valeur dmx change

Posté : dim. 17 sept. 2023 15:17
par Jacques
Bonne nouvelle !
ça fait plaisir.