Bonjour,
J'ai un problème de compréhension de la librairie ArtNet de hideakitai. GitHub - hideakitai/ArtNet: Art-Net Sender/Receiver for Arduino (Ethernet, WiFi)
Je n'arrive qu'à envoyer les canaux DMX à une valeur identique. Mon but est d'envoyer un canal précis à une valeur définie selon le bouton sur lequel j'appuie.
Je me limite ici à un bouton et aux 10 premiers canaux pour plus de lisibilité sur le moniteur série.
A terme, je voudrais pouvoir lire la valeur d'un seul canal: Si il est à 0 passer son état à 255 avec un appui sur le bouton, et inversement.
Voici le code, un peu modifié:
#include <Artnet.h>
#include <Bounce.h>
const int vert = 5; // LED bouton
const int rouge = 6; // LED PGM OK
// Ethernet stuff
const IPAddress ip(192, 168, 0, 100);
uint8_t mac[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB};
ArtnetSender artnet;
const String target_ip = "192.168.0.11";
uint32_t universe = 1;
uint32_t net = 0;
uint32_t subnet = 0;
const uint16_t size = 10; // nombre de canaux envoyés
uint8_t data[size]; // ?
uint8_t value = 0; // ?
Bounce SW1 = Bounce(3, 5);
void setup() {
Serial.begin(115200);
delay(2000);
pinMode(3, INPUT);
pinMode(rouge, OUTPUT);
pinMode(vert, OUTPUT);
Ethernet.begin(mac, ip);
artnet.begin();
// artnet.begin(net, subnet); // optionally you can change
Serial.println("prêt");
Serial.println(UDP_TX_PACKET_MAX_SIZE);
analogWrite(rouge, 50);
}
void loop() {
SW1.update();
if (SW1.risingEdge())
{
analogWrite(vert, 150);
Serial.print("artnet data (universe : ");
Serial.print(universe);
Serial.print(", size = ");
Serial.print(size);
Serial.print(") :");
for (size_t i = 0; i < size; ++i) {
Serial.print(data[i]);
Serial.print(", ");
memset(data, 125, size);
artnet.streaming_data(data, size);
artnet.streaming(target_ip, net, subnet, universe); // automatically send set data in 40fps
// artnet.streaming(target_ip, net, subnet, univ); // or you can set net, subnet, and universe
}
Serial.println();
}
if (SW1.fallingEdge())
{
analogWrite(vert, 0);
}
}
Merci d'avance
Robin