Help
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Ground Controller Lvl 1
Message 1 of 2

Help with the Arduino code

Снимок.PNG

hello, I'm still new to arduino, and would like to ask for help from you,
I need to make the Fade effect for the LED (NEO_KHZ800) on the esp8266 board(Adafruit_NeoPixel).
Idle is a wait state.
Anyone at least help a lot thanks a lot
#include "LED.h" // All code LED

LED::LED() {}

LED::~LED() {
    if (led) delete led;
}

void LED::setup() {
  #if defined(DIGITAL_LED)
    led = new DigitalLED(LED_PIN_R, LED_PIN_G, LED_PIN_B, LED_ANODE);
    led->setup();
  #elif defined(RGB_LED)
    led = new LED::AnalogRGBLED(LED_PIN_R, LED_PIN_G, LED_PIN_B, LED_MODE_BRIGHTNESS, LED_ANODE);
    led->setup();
  #elif defined(NEOPIXEL_LED)
    led = new LED::NeopixelLED(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, LED_MODE_BRIGHTNESS);
    led->setup();
  #endif // if defined(DIGITAL_LED)
}

void LED::update() {
    if (!tempEnabled || !led) return;

    if (!settings.getLedEnabled() && tempEnabled) tempDisable();

    if (scan.isScanning() && (scan.deauths < settings.getMinDeauths())) setMode(LED_MODE::SCAN, false);
    else if (scan.deauths >= settings.getMinDeauths()) setMode(LED_MODE::DEAUTH, false);
    else if (attack.isRunning()) setMode(LED_MODE::ATTACK, false);
    else setMode(LED_MODE::IDLE, false);
}

void LED::setMode(uint8_t mode, bool force) {
    if (!led) return;

    if ((mode != LED::mode) || force) {
        LED::mode = mode;

        switch (mode) {
        case LED_MODE::OFF:
            led->setColor(0, 0, 0);
            break;

        case LED_MODE::SCAN:
            led->setColor(0, 0, 255);
            break;

        case LED_MODE::ATTACK:
            led->setColor(255, 255, 0);
            break;

        case LED_MODE::DEAUTH:
            led->setColor(255, 0, 0);
            break;

        case LED_MODE::IDLE:
            led->setColor(255, 0, 255);
            break;
        }
    }
}

void LED::setColor(uint8_t r, uint8_t g, uint8_t b, bool output) {
    // debug output
    if (output) {
        char s[30];
        sprintf_P(s, L_OUTPUT, r, g, b);
        prnt(String(s));
    }

    led->setColor(r, g, b);
}

void LED::setColor(uint8_t r, uint8_t g, uint8_t b, uint8_t brightness, bool output) {
    led->setBrightness(brightness);
    setColor(r, g, b, output);
}

void LED::tempEnable() {
    tempEnabled = true;
    prntln(L_ENABLED);
}

void LED::tempDisable() {
    tempEnabled = false;
    prntln(L_DISABLED);
}

bool LED::getTempEnabled() {
    return tempEnabled;
}

#ifdef DIGITAL_LED
// ===== DigitalLED ===== //
LED::DigitalLED::DigitalLED(uint8_t rPin, uint8_t gPin, uint8_t bPin, bool anode) {
    LED::DigitalLED::anode = anode;
    LED::DigitalLED::rPin  = rPin;
    LED::DigitalLED::gPin  = gPin;
    LED::DigitalLED::bPin  = bPin;
}

LED::DigitalLED::~DigitalLED() {}

void LED::DigitalLED::setup() {
    if (rPin < 255) pinMode(rPin, OUTPUT);

    if (gPin < 255) pinMode(gPin, OUTPUT);

    if (bPin < 255) pinMode(bPin, OUTPUT);
}

void LED::DigitalLED::setColor(uint8_t r, uint8_t g, uint8_t b) {
    if (anode) {
        if (rPin < 255) digitalWrite(rPin, r > 0);

        if (gPin < 255) digitalWrite(gPin, g > 0);

        if (bPin < 255) digitalWrite(bPin, b > 0);
    } else {
        if (rPin < 255) digitalWrite(rPin, r == 0);

        if (gPin < 255) digitalWrite(gPin, g == 0);

        if (bPin < 255) digitalWrite(bPin, b == 0);
    }
}

void LED::DigitalLED::setBrightness(uint8_t brightness) {}
#endif

#ifdef RGB_LED
// ===== AnalogRGBLED ===== //
LED::AnalogRGBLED::AnalogRGBLED(uint8_t rPin, uint8_t gPin, uint8_t bPin, uint8_t brightness, bool anode) {
    LED::AnalogRGBLED::anode = anode;
    LED::AnalogRGBLED::rPin  = rPin;
    LED::AnalogRGBLED::gPin  = gPin;
    LED::AnalogRGBLED::bPin  = bPin;

    setBrightness(brightness);
}

LED::AnalogRGBLED::~AnalogRGBLED() {}

void LED::AnalogRGBLED::setup() {
    analogWriteRange(0xff);

    if (rPin < 255) pinMode(rPin, OUTPUT);

    if (gPin < 255) pinMode(gPin, OUTPUT);

    if (bPin < 255) pinMode(bPin, OUTPUT);
}

void LED::AnalogRGBLED::setColor(uint8_t r, uint8_t g, uint8_t b) {
    if ((r > 0) && (brightness < 100)) r = r * brightness / 100;

    if ((g > 0) && (brightness < 100)) g = g * brightness / 100;

    if ((b > 0) && (brightness < 100)) b = b * brightness / 100;

    if (anode) {
        r = 255 - r;
        g = 255 - g;
        b = 255 - b;
    }

    analogWrite(rPin, r);
    analogWrite(gPin, g);
    analogWrite(bPin, b);
}

void LED::AnalogRGBLED::setBrightness(uint8_t brightness) {
    if (brightness > 100) brightness = 100;
    LED::AnalogRGBLED::brightness = brightness;
}
#endif

#ifdef NEOPIXEL_LED
// ===== NeopixelLED ===== //
LED::NeopixelLED::NeopixelLED(int num, uint8_t dataPin, uint8_t brightness) {
    strip = new Adafruit_NeoPixel(num, dataPin, LED_NEOPIXEL_MODE);
    setBrightness(brightness);
}

LED::NeopixelLED::~NeopixelLED() {
    delete strip;
}

void LED::NeopixelLED::setup() {
    strip->begin();
    strip->show();
}

void LED::NeopixelLED::setColor(uint8_t r, uint8_t g, uint8_t b) {
    int num = strip->numPixels();

    for (uint16_t i = 0; i < num; i++) strip->setPixelColor(i, strip->Color(r, g, b));
    strip->show();
}

void LED::NeopixelLED::setBrightness(uint8_t brightness) {
    if (brightness > 100) brightness = 100;
    strip->setBrightness(brightness);
}
#endif
 

 

1 Reply
Highlighted
Commander Lvl 2
Message 2 of 2

Re: Help with the Arduino code

You've given us the LED code, but not your code. Please show us what you've written so far when attempting the fade effect.

 

Here is the first hit I had from googling "arduino LED fade":  https://www.arduino.cc/en/tutorial/fade

Please follow-up to let us know how you made out. For good karma, mark a reply as the answer if it helped!