Я создаю эскиз Arduino, в котором я хочу общаться с моим Arduino для управления полосой neorgb с помощью adafruit, которая представляет собой полосу с 60 RGB светодиодами с каждым светодиодом.Я заставил его работать с простой конструкцией if, чтобы проверить, отправил ли я команду «off» для переключения всей полосы или отправил шестнадцатеричный код для определенного цвета.Это работает нормально, но теперь я хочу также уменьшить яркость полосы, моя функция затемнения каждого цветового компонента работает нормально, но мне нужен способ вызвать его с помощью команды.Моя проблема в том, что я не знаю, как я могу справиться с этим, если я отправил конкретную строку (в данном случае «выключено»), шестнадцатеричный цветовой код или процент для затемнения моей полосы.Также другой вопрос, почему мне нужно ввести «off» в последовательном мониторе, чтобы набросок повернул мою полосу.
Весь мой код выглядит так:
#include <Adafruit_NeoPixel.h>
//Vars
int stripPin = 6; //NeoPixel Strip Pin
int numberLED = 60; //How many LEDs?
int maxBrightness = 50; //maximum Brightness
String incomming;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numberLED, stripPin, NEO_GRB + NEO_KHZ800);
void setup() {
// put your setup code here, to run once:
strip.setBrightness(maxBrightness);
strip.begin();
strip.show(); //Clear Strip
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) { //Listening for Commands
incomming = Serial.readString();
if(incomming == "off "){ //if command is "off", switch strip of
setStripColor(0,0,0);
}
else{
// Get rid of '#' and convert it to integer
long number = (long) strtol( &incomming[1], NULL, 16);
// Split them up into r, g, b values
long r = number >> 16;
long g = number >> 8 & 0xFF;
long b = number & 0xFF;
setStripColor(r,g,b); //Set Color for whole Strip
strip.show();
}
Serial.println(incomming);
}
delay(10);
}
int setStripColor(int redValue, int greenValue, int blueValue) //Set Color for whole strip
{
for(int i = 0; i < numberLED; i++ ){
strip.setPixelColor(i, redValue,greenValue,blueValue);
}
}
int dim(int color, int dimVal) //Dim color to dimVal in percent
{
color = color / 100 * dimVal;
return color;
}