leds en buttons

ik heb heb een vraag.

int LED = 12;
int Led = 11;
int BUTTON = 4;
bool buttonCheck = false;

void setup() 
{ 
 pinMode (LED,OUTPUT);
 pinMode (BUTTON,INPUT);
}

void loop() 
{
 if(digitalRead(BUTTON) == HIGH)
 {
   buttonCheck = true;
 }

 if(buttonCheck == true)
 {
   digitalWrite(LED,HIGH);
   digitalWrite(LED,HIGH);
   delay(2500);
 }
 
 
}

dit is de code die ik tot nu toe heb maar er mist nog wat. namelijk na die delay moeten de leds uit gaan en 2 nieuwe leds aan gaan 2 totaal andere leds. zou iemand mij misschien kunnen helpen ?

Goeden Middag,

Aller eerst zou ik het versimpelen, je gebruikt nu namelijk een dubbele functie om uiteindelijk op 1 functie uit te komen.

Ik heb even een example Sketch gemaakt voor je, kijk er rustig over heen en bij vragen stel ze gerust!

const int LED = 13;
const int LED_2 = 12;
int button = 11;
int pressed = 0; // used to store value if pressed [in case of 1, means pressed].
int interval = 2700;



void setup() {
  Serial.begin(9600);
  Serial.println("Started!");
  Serial.println("");
  pinMode(button,INPUT);
  pinMode(LED,OUTPUT);
  pinMode(LED_2,OUTPUT);

}



void loop() {
  //if -> true state = if(buttonReleased(PIN Nummer)){ Functie/ToDo }
  if(buttonPressed(button)){
    digitalWrite(LED,HIGH);
    delay(interval);
    digitalWrite(LED_2,HIGH);
  }
}





bool buttonPressed(int bttn){ // Bool function for buttonPressed. for the working of this function just ask!
  int i = 0;
  if(digitalRead(bttn) == HIGH){
    i = 1;
    
    if(pressed < 1){
      pressed = 1;
      return true;
    }else{
      return false;
    }
  }else{
    i=0;
    pressed=0;
    return false;
  }
  delay(50);
}

Zoals je kan zien in de sketch worden pin 13 en pin 12 hier aangestuurd, beide pins zijn voor de LED’s.

ah ja ik begrijp wat je bedoeld maar de leds moeten niet aan blijven staan dus wat er eigenlijk moet gebeuren is de eerste twee leds gaan aan door op de knop te drukken. Vervolgens blijven die voor 2500 miliseconden aan en daarna gaan ze uit.

Dan gaan twee nieuwe led lichtjes aan en die blijven ook voor 2500miliseconden aan. je hoeft niet meer op de knop dan te drukken tenzij de hele cyclus voorbij is en het weer wilt zien. dat is wat ik probeer te maken.

Zoals je zelf al benoemd heb je dus 4 IO (input/output) pins nodig voor de ledjes, en 1 voor de knop/schakelaar.

Dit betekent dat je de IO Pins moet initializeren, dit door middel van pinMode(PIN,INPUT of OUTPUT).
In de volgende sketch laat ik je ongeveer zien wat er gebeuren moet, als je er dan ook aandachtig over heen kijkt kun je zien hoe de sketch in zijn werking treed.

// alle gebruikte io pins vind je hier onder.
const int LED = 8;
const int LED_2 = 9;
const int LED_3 = 10;
const int LED_4 = 11;
int button = 13;

int pressed = 0; // deze integer detecteerd of er op de knop word gedrukt. echter kan het via deze weg maar met 1 knop functioneren.
int interval = 2500; // de interval of delay in ms



void setup() {
  Serial.begin(9600);
  Serial.println("Started!");
  Serial.println("");

  /*  het initializeren van de leds gebeurd hier.
   *  INPUT staat voor alle input signalen, dit betekent voor alle inkomende verbindingen (zoals knoppen etc)
   *  OUTPUT staat voot alle uitgaande signalen, Voor bijvoorbeeld de LED's
   */
  pinMode(button,INPUT);
  pinMode(LED,OUTPUT);
  pinMode(LED_2,OUTPUT);
  pinMode(LED_3,OUTPUT);
  pinMode(LED_4,OUTPUT);

}



void loop() {
  // als de knop ingedrukt is word dat hier gedetecteerd = if(buttonReleased(PIN Nummer)){ Functie/ToDo }
  if(buttonPressed(button)){
    // hier schrijven we de status van de led's waar deze in horen te zijn.
    digitalWrite(LED, HIGH);
    digitalWrite(LED_2, HIGH);
    
    delay(interval);
    
    digitalWrite(LED, LOW);
    digitalWrite(LED_2, LOW);
    digitalWrite(LED_3, HIGH);
    digitalWrite(LED_4, HIGH);
    
    delay(interval);
    
    digitalWrite(LED_3, LOW);
    digitalWrite(LED_4, LOW);
  }
}





bool buttonPressed(int bttn){ // Deze functie detecteerd de knop.
  int i = 0;
  if(digitalRead(bttn) == HIGH){
    i = 1;
    
    if(pressed < 1){
      pressed = 1;
      return true;
    }else{
      return false;
    }
  }else{
    i=0;
    pressed=0;
    return false;
  }
  delay(50);
}