From 487589ab27dfb19aca2b6a1cf0b74f942e883392 Mon Sep 17 00:00:00 2001 From: Tempest Date: Wed, 21 Aug 2024 09:10:10 +0700 Subject: [PATCH] Added light test firmware --- src/lightingFirmware/esp32_test0.ino | 257 +++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 src/lightingFirmware/esp32_test0.ino diff --git a/src/lightingFirmware/esp32_test0.ino b/src/lightingFirmware/esp32_test0.ino new file mode 100644 index 0000000..094967d --- /dev/null +++ b/src/lightingFirmware/esp32_test0.ino @@ -0,0 +1,257 @@ +// Include Section + +#include "esp_dmx.h" + +// Define Section + +#define ledPin 2 +#define INTERRUPT_PIN 0 + +struct Button { + const uint8_t PIN; + uint32_t numberKeyPresses; + bool pressed; +}; + +// Defining BOOT button on ESP32 as our built-in button. +Button button1 = {INTERRUPT_PIN, 0, false}; + +int mode = 0; +const int modeAmount = 16; +uint8_t brightnessMax = 20; +uint8_t universalBrightness = 10; + + +uint8_t data[DMX_PACKET_SIZE] = {0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0 +}; + +uint8_t dataSeq[modeAmount][DMX_PACKET_SIZE] = + { + { + 0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0 + }, + { + 0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,universalBrightness,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0 + }, + { + 0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0 + }, + { + 0, + universalBrightness,0,0,0, // Orange + 0,universalBrightness,0,0, // White + 0,universalBrightness,0,0, // White + 0,0,universalBrightness,0, // Blue + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,0,universalBrightness,0, + 0,universalBrightness,0,0, + //End Inner Round + //Start Outer Round + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0 + }, + { + 0, + //Start Inner Round + universalBrightness,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + //End Inner Round + //Start Outer Round + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0, + universalBrightness,0,0,0 + } + } +; +void IRAM_ATTR isr() { + button1.pressed = true; +}; + +void ledBlink(int interval, int pinNumber) { + digitalWrite( + pinNumber, + !digitalRead(pinNumber) + ); + delay(interval); +}; + +void dmxSetup() { + const dmx_port_t dmx_num = DMX_NUM_1; + Serial.printf("\nSetting up DMX Port %d", dmx_num); + // First, use the default DMX configuration... + dmx_config_t config = DMX_CONFIG_DEFAULT; + + // Declare Personality RGBW + const int personality_count = 1; + Serial.print("\nDefining DMX Personality... "); + dmx_personality_t personalities[] = { + {4, "RGBW"} + }; + Serial.print("Done"); + Serial.print("\nInstalling DMX Driver... "); + // ...install the DMX driver... + dmx_driver_install(dmx_num, &config, personalities, personality_count); + Serial.print("Done"); + + // ...and then set the communication pins! + const int tx_pin = 18; + const int rx_pin = 5; + const int rts_pin = 21; + Serial.printf("\nSetting up pin %d as Transmit Pin, pin %d as Receive Pin and pin %d as RTS Pin... ", tx_pin, rx_pin, rts_pin); + dmx_set_pin(dmx_num, tx_pin, rx_pin, rts_pin); + Serial.print("Done\n"); +} + +int serialRead(){ + int incomingByte; + if (Serial.available() > 0) { + // read the incoming byte: + incomingByte = Serial.read(); + + // say what you got: + Serial.print("I received: "); + Serial.println(incomingByte, DEC); + } + return incomingByte; +} + +void setup() { + Serial.begin(115200); + pinMode(ledPin,OUTPUT); + pinMode(INTERRUPT_PIN, INPUT_PULLUP); + attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), isr, RISING); + delay(2000); + Serial.println("If you receive this message, ESP32 module has finished setting up Serial Interface for communication."); + dmxSetup(); + const dmx_port_t dmx_num = DMX_NUM_1; +} + +void loop() { + // Send the DMX packet. + dmx_send(DMX_NUM_1); + // Preparing next packet + if (button1.pressed){ + if (mode < modeAmount - 1){mode++;} else {mode = 0;}; + Serial.printf("\n Changing to mode %d", mode); // Increment the value of each slot, excluding the start code. + button1.pressed = false; // Reset button status to FALSE + }; + // Wait until the packet is finished being sent before proceeding. + dmx_wait_sent(DMX_NUM_1, DMX_TIMEOUT_TICK); + // Now write the packet synchronously! + dmx_write(DMX_NUM_1, dataSeq[mode], 100); +}