Bom dia, Sou novo no fórum e estou aprendendo a programar, alguém poderia me ajudar?

Tenho uma fita de led RGB e gostaria de fazer varias formas para ele mudar de cor, e apenas um botão para ir alterando a sequência das cores, mas quando pressiono o botão ela termina de executar o bloco e depois passa para o outro, alguém tem alguma dica de como faço para trocar a sequência sem ela terminar o que estava executando?

Obrigado.

Exibições: 167

Responder esta

Respostas a este tópico

Fica meio impossivel ajudar sem saber como está fazendo.

Mas imaginando que sejam loops com for() para cada "efeito" vc pode sair de um loop com for() usando 2 caminhos:

1) No teste vc pode usar logica (or ou and) para testar uma segunda condição, permitindo verificar uma variavel que indica que deve parar de contar.

2) Não recomendo, nunca usei, mas existe esse comando:

https://www.arduino.cc/en/Reference/Continue

estou usando interrupção, mas não sei se é o caminho, vou colocar o cod abaixo, assim acho que consegue entender melhor

int R = 9;
int G = 10;
int B = 11;
int status = 0;

void setup() {
Serial.begin(9600);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
attachInterrupt(0, blink, RISING);

}

void blink()
{
++status;
delay(200);
}

void loop() {

Serial.print(status);

switch(status)
{
case 0:
digitalWrite(R, 1);
delay(300);
digitalWrite(R, 0);
delay(300);
digitalWrite(G, 1);
delay(300);
digitalWrite(G, 0);
delay(300);
digitalWrite(B, 1);
delay(300);
digitalWrite(B, 0);
delay(300);
break;

case 1:
digitalWrite(R, 1);
delay(300);
digitalWrite(R, 0);
delay(300);
break;

case 2:
digitalWrite(G, 1);
delay(300);
digitalWrite(G, 0);
delay(300);
break;

case 3:
digitalWrite(B, 1);
delay(300);
digitalWrite(B, 0);
delay(300);
break;

case 4:
status = 0;
delay(700);
break;

}
}

Boa tarde TG,

por favor, leia o tópico:

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço