Go Down

Topic: Pause einfügen, aber wie??? (Read 947 times) previous topic - next topic

mischa_t

Ich will in meine Sketch eine Pause über den pin4 einfügen, dies soll in Blink1 und in Blink2 sein, wenn der Schalter betätigt wird geht das Sketch in Pause und die LED1 und 2 gehen an bis der Schalter wieder auf Low geht. Der Sketch soll aber am gleichen Punkt weiterlaufen wo er auch betätigt worden ist. Bin für jede Hilfe dankbar.

const int led1 = 7;                 // choose a pin for the LED
const int led2 = 8;                 // choose a pin for the LED
const int buzzer = 10;                 // choose a pin for the LED
const int button1 = 2;              // choose a pin for the push button
const int button2 = 3;              // choose a pin for the push button
const int pause = 4;              // choose a pin for the push button

void setup(){
  pinMode(led1, OUTPUT);            // declares LED as an output
  pinMode(led2, OUTPUT);            // declares LED as an output
  pinMode(buzzer, OUTPUT);            // declares LED as an output
  pinMode(button1, INPUT);          // declares push button as an input
  pinMode(button2, INPUT);          // declares push button as an input
  pinMode(pause, INPUT);          // declares push button as an input
}

void loop(){
  int val1 = digitalRead(button1);
  int val2 = digitalRead(button2);
  int val3 = digitalRead(pause);
  if ((val1 == HIGH) && (val2 == LOW)){
    blink1();
   }
  if ((val2 == HIGH) && (val1 == LOW)){
    blink2();
   }
}

void blink1(){
  int i;
  digitalWrite(buzzer, HIGH);
  delay (1000);
  digitalWrite(buzzer, LOW);
  for (i = 0; i < 6; i++){
  digitalWrite(led1, HIGH);
  delay (500);
  digitalWrite(led1, LOW);
  delay (500);
  }
  digitalWrite(buzzer, HIGH);
  delay (1000);
  digitalWrite(buzzer, LOW);
  for (i = 0; i < 3; i++){
  digitalWrite(led1, HIGH);
  delay (250);
  digitalWrite(led2, HIGH);
  delay (250);
  digitalWrite(led1, LOW);
  delay (250);
  digitalWrite(led2, LOW);
  delay (250);
  }
}

void blink2(){
  int i;
  for (i = 0; i < 20; i++){
  digitalWrite(led2, HIGH);
  delay (1000);
  digitalWrite(led2, LOW);
  delay (1000);
  }
}

uwefed

Mit Deinem Code ist das nicht zu machen da Du das gesamte Programm eine  einzige delay()-Anhäufung ist.
Modifiziere es und verwende millis() für die Verzögerung.
Beispiel siehe http://arduino.cc/en/Tutorial/BlinkWithoutDelay
Grüße Uwe

Go Up