Как выключить светодиодную ленту после состояния - PullRequest
0 голосов
/ 16 июня 2019

\

Я работаю над кодом, имитирующим рыцари наездников.Я хочу управлять светодиодом через Bluetooth, как я могу выключить.но я попробовал несколько вещей, но не работает.любая помощь.* / Я работаю над кодом, имитирующим рыцари наездников.Я хочу управлять светодиодом через Bluetooth, как я могу выключить.но я попробовал несколько вещей, но не работает.любая помощь

код:

#include "BluetoothSerial.h" 
#include <Adafruit_NeoPixel.h>
#define N_LEDS 8
#define PIN    23
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + 
NEO_KHZ800);

BluetoothSerial ESP_BT; 
int incoming;
int r;
int pos = 0, dir = 1; 

void setup() {
    strip.begin();
    Serial.begin(9600); 
    ESP_BT.begin("ESP32_LED_Control"); 
    Serial.println("Bluetooth Device is Ready to Pair");
}

void loop() {

    strip.setPixelColor(pos - 2, 0x100000); // Dark red
    strip.setPixelColor(pos - 1, 0x800000); // Medium red
    strip.setPixelColor(pos    , 0xFF3000); // Center pixel is brightest
    strip.setPixelColor(pos + 1, 0x800000); // Medium red
    strip.setPixelColor(pos + 2, 0x100000); // Dark red
    strip.show();
    delay(85);   // control speed

    for (r=-2; r<= 2; r++) strip.setPixelColor(pos+r, 0);

    pos += dir;
    if (pos < 0) {
        pos = 1;
        dir = -dir;
    } else if (pos >= strip.numPixels()) {
        pos = strip.numPixels() - 2;
        dir = -dir;
    }

    if (ESP_BT.available()) //Check if we receive anything from Bluetooth
    {
        incoming = ESP_BT.read(); //Read what we recevive 
        Serial.print("Received:"); Serial.println(incoming);
    }  

    if (incoming == 48)
    {
        //Should put here code that works on stop strip led//
        ESP_BT.println("LED turned OFF");
    }
}

1 Ответ

1 голос
/ 18 июня 2019

Чтобы отключить все светодиоды, я бы сделал что-то вроде:

/**
* Turn off all LEDs
*/
void allBlack()
{
  for (uint16_t indexPixel = 0; indexPixel < N_LEDS; indexPixel++)
  {
     strip.SetPixelColor(indexPixel, 0x000000);
  }
  strip.show();
}

Я знаю, что, возможно, вопрос не в этом вопросе, но я рекомендую проверить эту библиотеку:

https://github.com/Makuna/NeoPixelBus Так как у него много хороших примеров, и, на мой взгляд, было бы намного лучше не использовать задержку, а дать определенное время, как это показано на примерах Makuna, чтобы иметь больше контроля над анимацией.У меня также есть другие примеры анимации в этом небольшом проекте, который запускается командами UDP .

...