Ajuda com parar um LOOP

Ola pessoALL, sou novo nisto e estou a precisar da ajuda dos veteranos.

Tenho o seguinte código em que após accionar um interruptor começa a acender um led, e depois o segundo e depois o terceiro e depois acendem todos.
E eu queria que ao acenderem todos, permanecessem acesos ate novo clique do interruptor.
Alguém para dar uma dica?

Tenho o arduino uno original R3

Obrigado.

Ajeiras

CODIGO COMPLETO DO QUE TENHO

const int btnPin = 7; //RESISTENCIA 1K DO POSITOVO AO PINO 7 E AO INTERRUPTOR
//OUTRO PINO DO INTERRUPTOR À MASSA
const int led1Pin = 2;
const int led2Pin = 3;
const int led3Pin = 5;
const int led4Pin = 6;

enum fcnMode {
 OFF,
 LED1,
 LED2,
 LED3,
 LED4,
 ALL,
 NBSTATE
};

int ledState1 = LOW, ledState2 = LOW, ledState3 = LOW;           // ledState used to set the LED
unsigned long buttonState = 0;
int funcState = 0;
unsigned long currentMillis1, currentMillis2, currentMillis3;      // will store current time
unsigned long previousMillis1, previousMillis2, previousMillis3;      // will store last time LED was updated


void setup()
{
 pinMode(btnPin, INPUT);
 pinMode(led1Pin, OUTPUT);
 pinMode(led2Pin, OUTPUT);
 pinMode(led3Pin, OUTPUT);
 pinMode(led4Pin, OUTPUT);
}

void loop() {

 buttonPressed();
 setMode();

}

void buttonPressed() {
 buttonState = pulseIn(btnPin, HIGH, 1000000);
 if (buttonState > 5) {
   funcState += 1;
 }
 funcState = funcState % NBSTATE;
}


void setMode() {
 // All Off
 digitalWrite(led1Pin, LOW);
 digitalWrite(led2Pin, LOW);
 digitalWrite(led3Pin, LOW);
 digitalWrite(led4Pin, LOW);
 switch (funcState) {
   case OFF:
     break;

   case LED1:
     digitalWrite(led1Pin, HIGH);
     delay(1000);
     digitalWrite(led1Pin, LOW);

   case LED2:
     digitalWrite(led2Pin, HIGH);
     delay(1000);
     digitalWrite(led2Pin, LOW);


   case LED3:
     digitalWrite(led3Pin, HIGH);
     delay(1000);
     digitalWrite(led3Pin, LOW);
     delay(1000);


   case ALL:
     digitalWrite(led1Pin, HIGH);
     digitalWrite(led2Pin, HIGH);
     digitalWrite(led3Pin, HIGH);

     delay(2000);
     digitalWrite(led1Pin, LOW);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led3Pin, LOW);

   case LED4:
     digitalWrite(led4Pin, HIGH);
       delay(500);


 }
}

Algumas dúvidas:
1- foi você quem fez o código?( pq tá estranho)
2 - apertando o botão apenas uma vez, ele deverá acender todos os led's?
3 - há algum intervalo de tempo entre acender um led e depois o outro?

Como disseram esse seu código está estranho.
O que vai aproveitar são os pinos, mas o resto é mais simples de implementar.
Recomendo usar esse exemplo simples Exemplo Ligar Led com Botão
Ajuste o delay para quanto tempo quiser

#include <stdio.h>
#include <stdlib.h>

const int button = 7;            // GPIO 8 for the buttonconst int led1Pin = 2;[color=#222222][/color]
const int led2Pin = 3;[color=#222222][/color]
const int led3Pin = 5;[color=#222222][/color]
const int led4Pin = 6;
int ledflag=0;                   // LED status flag
[color=#222222][/color]


void setup() {
  pinMode(button,INPUT);         // define button as an input 
  pinMode(led1Pin ,OUTPUT);      // define LED as an output
  pinMode(led2Pin ,OUTPUT);
  pinMode(led3Pin ,OUTPUT);
  pinMode(led4Pin ,OUTPUT);

  digitalWrite(led1Pin ,LOW);         // turn output off just in case
  digitalWrite(led2Pin ,LOW);
  digitalWrite(led3Pin ,LOW);
  digitalWrite(led4Pin ,LOW);
}

void loop() {
  if (digitalRead(button)==HIGH){ // if button is pressed
    if (ledflag==0) {             // and the status flag is LOW
      ledflag=1;                  // make status flag HIGH
      digitalWrite(led1Pin ,HIGH);         // turn output off just in case
      digitalWrite(led2Pin ,HIGH);
      digitalWrite(led3Pin ,HIGH);
      digitalWrite(led4Pin ,HIGH);      }                           // 
    else {                        // otherwise...
      ledflag=0;                  // make status flag LOW
      digitalWrite(led1Pin ,LOW);         // turn output off just in case
      digitalWrite(led2Pin ,LOW);
      digitalWrite(led3Pin ,LOW);
      digitalWrite(led4Pin ,LOW);      // and turn off the LED
    }
  delay(1000);                    // wait a sec for the 
  }                               // hardware to stabilize
}                                 // begin again

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.