From 3bb630c4ac76f6405275aad0495489471433e66d Mon Sep 17 00:00:00 2001 From: RaffaelW Date: Sun, 13 Apr 2025 21:46:46 +0200 Subject: [PATCH] remove blinking led that uses a hardware timer --- src/main.cpp | 104 ++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index ce64fd4..7a01321 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,8 @@ #ifdef ESP32 #include #include -//#include -//#include "USBCDC.h" +// #include +// #include "USBCDC.h" #include "driver/temp_sensor.h" #elif defined(ESP8266) #include @@ -16,7 +16,7 @@ #include #include -//#include "ESPDMX.h" +// #include "ESPDMX.h" #include #include @@ -24,8 +24,8 @@ #include "routes/config.h" #include "routes/networks.h" -//DMXESPSerial dmx1; -//DMXESPSerial dmx2; +// DMXESPSerial dmx1; +// DMXESPSerial dmx2; dmx_port_t dmx1 = DMX_NUM_0; // for esp32s2 dmx_port_t dmx2 = DMX_NUM_1; byte dmx1_data[DMX_PACKET_SIZE]; @@ -42,7 +42,7 @@ bool dmx2_IsConnected = false; uint8_t brightness_led = 20; bool status_led; -hw_timer_t *timer = NULL; // H/W timer defining (Pointer to the Structure) +/* hw_timer_t *timer = NULL; // H/W timer defining (Pointer to the Structure) portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; void IRAM_ATTR onTimer() { // Defining Inerrupt function with IRAM_ATTR for faster access @@ -57,7 +57,7 @@ void IRAM_ATTR onTimer() analogWrite(PIN_LED, 0); } portEXIT_CRITICAL_ISR(&timerMux); -} +} */ // Ethernet stuff #define ETH_SCK 36 @@ -77,7 +77,7 @@ uint8_t universe1; uint8_t universe2; Direction direction1; Direction direction2; - +/* void ledBlink(int ms) { if (timer == NULL) @@ -96,7 +96,7 @@ void ledBlink(int ms) timerAlarmWrite(timer, ms, true); // Match value= 1000000 for 1 sec. delay. timerAlarmEnable(timer); // Enable Timer with interrupt (Alarm Enable) } -} +} */ float getTemperature() { @@ -124,7 +124,7 @@ void setup() mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - esp_read_mac(mac, ESP_MAC_WIFI_STA); //ESP_MAC_BASE + esp_read_mac(mac, ESP_MAC_WIFI_STA); // ESP_MAC_BASE Serial.printf("%02x:%02x:%02x:%02x:%02x:%02x ESP MAC BASE\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); @@ -139,14 +139,14 @@ void setup() pinMode(PIN_BUTTON, INPUT_PULLUP); if (digitalRead(PIN_BUTTON) == LOW) { - ledBlink(100); + // ledBlink(100); unsigned long startTime = millis(); while (digitalRead(PIN_BUTTON) == LOW && (millis() - startTime <= 3000)) { } if (digitalRead(PIN_BUTTON) == LOW) { - ledBlink(0); + // ledBlink(0); Serial.println("Reset config"); config.begin("dmx", false); config.clear(); @@ -155,7 +155,7 @@ void setup() } } - ledBlink(500); + // ledBlink(500); // wait for serial monitor delay(5000); @@ -271,7 +271,7 @@ void setup() Serial.print("MAC address : "); Serial.println(ETH.macAddress()); Serial.print("Broadcast IP: "); - Serial.println(broadcastIp); + Serial.println(broadcastIp); Serial.println("Ethernet Successfully Initialized"); break; } @@ -294,9 +294,9 @@ void setup() // Initialize DMX ports Serial.println("Initialize DMX..."); - #ifdef CONFIG_IDF_TARGET_ESP32S2 - //dmx1.init(21, 33, Serial0); - //dmx2.init(17, 18, Serial1); +#ifdef CONFIG_IDF_TARGET_ESP32S2 + // dmx1.init(21, 33, Serial0); + // dmx2.init(17, 18, Serial1); Serial.print("DMX driver 1 installed: "); Serial.println(dmx_driver_is_installed(dmx1)); @@ -304,7 +304,6 @@ void setup() Serial.print("DMX driver 2 installed: "); Serial.println(dmx_driver_is_installed(dmx2)); - dmx_config_t dmx_config = DMX_CONFIG_DEFAULT; dmx_personality_t personalities[] = {}; @@ -332,40 +331,37 @@ void setup() // TX/RX Pins und Serial0/Serial1 ausgeben + /* Now set the DMX hardware pins to the pins that we want to use and setup + will be complete! */ - /* Now set the DMX hardware pins to the pins that we want to use and setup - will be complete! */ - - #else +#else dmx1.init(21, 33, Serial1); dmx2.init(17, 18, Serial2); - #endif +#endif // Initialize Art-Net Serial.println("Initialize Art-Net..."); artnet.begin(); // if Artnet packet comes to this universe, this function is called - if (direction1 == Output) + if (direction1 == Output) { Serial.println("DMX1 as out"); artnet.subscribeArtDmxUniverse(universe1, [&](const uint8_t *data, uint16_t size, const ArtDmxMetadata &metadata, const ArtNetRemoteInfo &remote) - { + { dmx_write_offset(dmx1, 1, data, size); dmx_send(dmx1); - dmx_wait_sent(dmx1, DMX_TIMEOUT_TICK); - }); + dmx_wait_sent(dmx1, DMX_TIMEOUT_TICK); }); } if (direction2 == Output) { Serial.println("DMX2 as out"); artnet.subscribeArtDmxUniverse(universe2, [&](const uint8_t *data, uint16_t size, const ArtDmxMetadata &metadata, const ArtNetRemoteInfo &remote) - { + { dmx_write_offset(dmx2, 1, data, size); dmx_send(dmx2); - dmx_wait_sent(dmx2, DMX_TIMEOUT_TICK); - }); + dmx_wait_sent(dmx2, DMX_TIMEOUT_TICK); }); } // if Artnet packet comes, this function is called to every universe @@ -410,9 +406,8 @@ void setup() // scan networks and cache them WiFi.scanNetworks(true); - ledBlink(0); + // ledBlink(0); - // Internal temperature RP2040 /*float tempC = analogReadTemp(); // Get internal temperature Serial.print("Temperature Celsius (ÂșC): "); @@ -438,7 +433,6 @@ void loop() // check if artnet packet has come and execute callback artnet.parse(); - /* We need a place to store information about the DMX packets we receive. We will use a dmx_packet_t to store that packet information. */ dmx_packet_t dmx1_packet; @@ -448,21 +442,22 @@ void loop() officially times out. That amount of time is converted into ESP32 clock ticks using the constant `DMX_TIMEOUT_TICK`. If it takes longer than that amount of time to receive data, this if statement will evaluate to false. */ - if (direction1 == Input) { - //Serial.println("Recv DMX1"); + if (direction1 == Input) + { + // Serial.println("Recv DMX1"); /* If this code gets called, it means we've received DMX data! */ - dmx_read_offset(dmx1, 1, dmx1_data, 512); - artnet.sendArtDmx(broadcastIp, universe1, dmx1_data, 512); - + dmx_read_offset(dmx1, 1, dmx1_data, 512); + artnet.sendArtDmx(broadcastIp, universe1, dmx1_data, 512); } - if (direction2 == Input && dmx_receive(dmx2, &dmx2_packet, DMX_TIMEOUT_TICK)) { - //Serial.println("Recv DMX2"); + if (direction2 == Input && dmx_receive(dmx2, &dmx2_packet, DMX_TIMEOUT_TICK)) + { + // Serial.println("Recv DMX2"); /* If this code gets called, it means we've received DMX data! */ - dmx_read_offset(dmx2, 1, dmx2_data, 512); - artnet.sendArtDmx(broadcastIp, universe2, dmx2_data, 512); + dmx_read_offset(dmx2, 1, dmx2_data, 512); + artnet.sendArtDmx(broadcastIp, universe2, dmx2_data, 512); /* Get the current time since boot in milliseconds so that we can find out how long it has been since we last updated data and printed to the Serial @@ -470,37 +465,44 @@ void loop() unsigned long now = millis(); /* We should check to make sure that there weren't any DMX errors. */ - if (!dmx2_packet.err) { + if (!dmx2_packet.err) + { /* If this is the first DMX data we've received, lets log it! */ - if (!dmx2_IsConnected) { + if (!dmx2_IsConnected) + { Serial.println("DMX2 in is connected!"); dmx2_IsConnected = true; } /* Don't forget we need to actually read the DMX data into our buffer so that we can print it out. */ - + /*dmx_read_offset(dmx2, 1, dmx2_data, dmx2_packet.size); artnet.sendArtDmx(broadcastIp, universe2, dmx2_data, 512);*/ - if (now - dmx2_lastUpdate > 1000) { + if (now - dmx2_lastUpdate > 1000) + { /* Print the received start code - it's usually 0. */ - //Serial.printf("Start code is 0x%02X and slot 1 is 0x%02X\n", dmx2_data[0], dmx2_data[1]); + // Serial.printf("Start code is 0x%02X and slot 1 is 0x%02X\n", dmx2_data[0], dmx2_data[1]); dmx2_lastUpdate = now; } - } else { + } + else + { /* Oops! A DMX error occurred! Don't worry, this can happen when you first connect or disconnect your DMX devices. If you are consistently getting DMX errors, then something may have gone wrong with your code or something is seriously wrong with your DMX transmitter. */ Serial.println("A DMX 2 error occurred."); - } - } else if (dmx2_IsConnected) { + } + } + else if (dmx2_IsConnected) + { /* If DMX times out after having been connected, it likely means that the DMX cable was unplugged. When that happens in this example sketch, we'll uninstall the DMX driver. */ Serial.println("DMX 2 was disconnected."); dmx2_IsConnected = false; - //dmx_driver_delete(dmx2); + // dmx_driver_delete(dmx2); } }