Ativar e desativar uma função com (if)

Olá amigos, estou trabalhando em um projeto de automação e exibindo um pequeno problema, LED RGB, esse LED funciona tão bem com atraso e algumas bibliotecas. Porem ao usar deley voces sabem o problema que há ne ?.
então resolva usar uma biblioteca.
porem eu quero usar um sensor de presença para ativar e desativar o led.

e a única solução que encontrei foi colocar uma função que faz o LED ativar dentro de um (se). mas o problema é o que levou essa liga. quando uma condição e falha, ele não desliga, apenas para.

Use uma variável booleana para fazer uma comparação.

Vou colocar o código aqui para ver se os vcs podem me ajudar.


boolean valor = false;
Float = distancia;  


void loop() {
if (distancia >= 30 && valor == false) {
    sequence.Update(); //Função para ativar o efeito do LED RGB
  } if ( distancia < 30 && valor == true) {
    valor = false;
    sequence.Update();//Função para ativar o efeito do LED RGB
  }
  delay(10);
}

Quem pode me ajudar na agradeço.

1ª postagem

Quando é que a variável valor volta a mudar de false para true?

no primeiro if."

Você não colocou nenhuma condição para ele desligar, testa esse código abaixo:

boolean valor = false;
Float = distancia; 
void loop() {
if (distancia >= 30 && valor == false) {
    sequence.Update(); //Função para ativar o efeito do LED RGB
  } else if ( distancia < 30 && valor == true) {
    valor = false;
    sequence.Update();//Função para ativar o efeito do LED RGB
  } else {
     //coloque aqui o código para desligar o led RGB
  }
  delay(10);
}

sequence.Update(); //Função para ativar o efeito do LED RGB

essa é a função que ativa o LED, então eu pensei que esse if desligasse essa função fazendo o LED desligar!

} if ( distancia < 30 && valor == true) {
valor = false;
sequence.Update();//Função para ativar o efeito do LED RGB
}

está confuso?!

Acho que o melhor é meteres o código todo aqui...