Eu pego todos os valores da serial, e outro coisa que esqueci de comentar, quando abro o monitor serial e envio os valores, as vezes ele demora um tempo para retornar. E agora vou postar o código completo.
#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 6
#define NUMPIXELS 60
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#include <EEPROM.h>
String vermelho0 = "0", verde0 = "0", azul0 = "0", vermelho1 = "0", verde1 = "0", azul1 = "0", vermelho2 = "0", verde2 = "0", azul2 = "0", vermelho3 = "0", verde3 = "0", azul3 = "0", vermelho4 = "0", verde4 = "0", azul4 = "0";//declaração da variaveis do tipo texto
String customizacaoLeds = "0", valores = "0", tempoSeg = "0", tempoMil = "0", valorBrilho = "0", efeitoLeds = "0"; //declaração da variaveis do tipo texto
byte red0 = 0, green0 = 0, blue0 = 0, red1 = 0, green1 = 0, blue1 = 0, red2 = 0; //declaração da variaveis do tipo Inteiro
byte customizacao = 0, efeito = 0, green2 = 0, blue2 = 0, red3 = 0, green3 = 0, blue3 = 0, red4 = 0, green4 = 0, blue4 = 0, brilho;
int milissegundos = 0, segundos = 0;
void setup() {
#if defined(AVR_ATtiny85) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
Serial.begin(9600);
customizacao = EEPROM.read(10);
efeito = EEPROM.read(30);
brilho = EEPROM.read(50);
milissegundos = EEPROM.read(60);
segundos = EEPROM.read(80);
red0 = EEPROM.read(100);
green0 = EEPROM.read(110);
blue0 = EEPROM.read(120);
red1 = EEPROM.read(130);
green1 = EEPROM.read(140);
blue1 = EEPROM.read(150);
red2 = EEPROM.read(160);
green2 = EEPROM.read(170);
blue2 = EEPROM.read(180);
red3 = EEPROM.read(190);
green3 = EEPROM.read(200);
blue3 = EEPROM.read(210);
red4 = EEPROM.read(220);
green4 = EEPROM.read(230);
blue4 = EEPROM.read(240);
}
void pegarValores() {
if (Serial.available()) {//retorna o número de bytes (caracteres) disponíveis para leitura da porta serial
valores = Serial.readString();//pega os valores recebidos do java ou do monitor serial
Serial.println(valores);
customizacaoLeds = valores.substring(0, 1);//pega a customizacao dos leds
efeitoLeds = valores.substring(2, 3); //pega o efeito dos leds
valorBrilho = valores.substring(4, 7);//pega o valor do brilho que varia entre 0 e 255
tempoMil = valores.substring(8, 9);//pega o delay em milissegundos
tempoSeg = valores.substring(10, 11);//pega o delay em segundos
//pega os valores em rgb que varia de 0 a 255 (vermelho,verde,azul)
vermelho0 = valores.substring(12, 15);
verde0 = valores.substring(16, 19);
azul0 = valores.substring(20, 23);
//pega os valores em rgb que varia de 0 a 255 (vermelho,verde,azul)
vermelho1 = valores.substring(24, 27);
verde1 = valores.substring(28, 31);
azul1 = valores.substring(32, 35);
vermelho2 = valores.substring(36, 39);
verde2 = valores.substring(40, 43);
azul2 = valores.substring(44, 47);
//pega os valores em rgb que varia de 0 a 255 (vermelho,verde,az
vermelho3 = valores.substring(48, 51);
verde3 = valores.substring(52, 55);
azul3 = valores.substring(56, 59);
//pega os valores em rgb que varia de 0 a 255 (vermelhom,verde,azul)
vermelho4 = valores.substring(60, 63);
verde4 = valores.substring(64, 67);
azul4 = valores.substring(68, 71);
customizacao = (byte) customizacaoLeds.toInt();
efeito = (byte) efeitoLeds.toInt();
brilho = (byte) valorBrilho.toInt();
milissegundos = (byte) tempoMil.toInt();
segundos = (byte) tempoSeg.toInt();
red0 = (byte) vermelho0.toInt();
green0 = (byte) verde0.toInt();
blue0 = (byte) azul0.toInt();
red1 = (byte) vermelho1.toInt();
green1 = (byte) verde1.toInt();
blue1 = (byte) azul1.toInt();
red2 = (byte) vermelho2.toInt();
green2 = (byte) verde2.toInt();
blue2 = (byte) azul2.toInt();
red3 = (byte) vermelho3.toInt();
green3 = (byte) verde3.toInt();
blue3 = (byte) azul3.toInt();
red4 = (byte) vermelho4.toInt();
green4 = (byte) verde4.toInt();
blue4 = (byte) azul4.toInt();
EEPROM.update(10, customizacao);
EEPROM.update(30, efeito);
EEPROM.update(50, brilho);
EEPROM.update(60, milissegundos);
EEPROM.update(80, segundos);
EEPROM.update(100, red0);
EEPROM.update(110, green0);
EEPROM.update(120, blue0);
EEPROM.update(130, red1);
EEPROM.update(140, green1);
EEPROM.update(150, blue1);
EEPROM.update(160, red2);
EEPROM.update(170, green2);
EEPROM.update(180, blue2);
EEPROM.update(190, red3);
EEPROM.update(200, green3);
EEPROM.update(210, blue3);
EEPROM.update(220, red4);
EEPROM.update(230, green4);
EEPROM.update(240, blue4);
}
}
void loop() {
pegarValores();
milissegundos = EEPROM.read(60);
segundos = EEPROM.read(80);
milissegundos = (milissegundos * 100);
segundos = (segundos * 1000);
if (customizacao == 5 && efeito == 1) {
for (int x = 0; x < 60; x++) {
pixels.setPixelColor(x, pixels.Color(red0, green0, blue0)); //seta os leds que irão acender
pixels.setBrightness(brilho);//seta o brilho dos leds
pixels.show();//acende os leds
delay(milissegundos);//delay para acende os leds
}
delay(segundos);
for (int x = 0; x < 60; x++) {
pixels.setPixelColor(x, pixels.Color(red1, green1, blue1)); //seta os leds que irão acender
pixels.setBrightness(brilho);//seta o brilho dos leds
pixels.show();//acende os leds
delay(milissegundos);//delay para acende os leds
}
delay(segundos);
for (int x = 0; x < 60; x++) {
pixels.setPixelColor(x, pixels.Color(red2, green2, blue2)); //seta os leds que irão acender
pixels.setBrightness(brilho);//seta o brilho dos leds
pixels.show();//acende os leds
delay(milissegundos);//delay para acende os leds
}
delay(segundos);
for (int x = 0; x < 60; x++) {
pixels.setPixelColor(x, pixels.Color(red3, green3, blue3)); //seta os leds que irão acender
pixels.setBrightness(brilho);//seta o brilho dos leds
pixels.show();//acende os leds
delay(milissegundos);//delay para acende os leds
}
delay(segundos);
for (int x = 0; x < 60; x++) {
pixels.setPixelColor(x, pixels.Color(red4, green4, blue4)); //seta os leds que irão acender
pixels.setBrightness(brilho);//seta o brilho dos leds
pixels.show();//acende os leds
delay(milissegundos);//delay para acende os leds
}
delay(segundos);
}
}