myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Arduino Nano zwei Sketche kombinieren (https://mygully.com/showthread.php?t=5388502)

DrBeshir 18.03.19 07:18

Arduino Nano zwei Sketche kombinieren
 
Ich bastel an einem Arduino Projekt für das meine Fähigkeiten offensichtlich nicht ausreichen. Ich habe zwei Sketche die ich kombinieren möchte. Das Eine lässt LEDs in einer bestimmten Reihenfolge blinken. Das Andere erzeugt einen Ton auf einem passiven Piezo Buzzer. Jeder Sketcht einzeln für sich funktioniert. Nur kombinieren kann ich die Sketche nicht. Es liegt wohl irgendwie an dem delay.
Sketch LED

Code:

int led1 = 5;
int led2 = 7;
int led3 = 9;
int led4 = 11;


void setup() {


pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}


void loop()
{

//Light Status 1
digitalWrite(led4, HIGH);

digitalWrite(led1, HIGH);
delay(600);

digitalWrite(led1, LOW);
delay(600);

//Light Status 2
{digitalWrite(led2, HIGH);
delay(600);

digitalWrite(led2, LOW);
delay(600);}

//Light Status 3
{digitalWrite(led3, HIGH);
delay(600);

digitalWrite(led3, LOW);
delay(600);}

//Light Status 4
{digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(600);

digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(600);}

//Light Status 5
{digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
delay(600);

digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
delay(600);}

//Light Status 6
{digitalWrite(led3, HIGH);
delay(600);

digitalWrite(led3, LOW);
delay(600);}

//Light Status 7
{digitalWrite(led1, HIGH);
delay(600);

digitalWrite(led1, LOW);
delay(600);}

//Light Status 8
{digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(600);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(600);}

//Light Status 9
{digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
delay(600);

digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
delay(600);}

}

Sketch Buzzer

Code:

int buzzer = 8; //Spezifiziert den Buzzer Pin


void setup() {


  pinMode(buzzer, OUTPUT);
}


void loop() {



  unsigned char i;
  while (1)
  {

    //Frequenz 1
    for (i = 0; i < 80; i++)
    {
      digitalWrite (buzzer, HIGH) ;
      delay (1) ;
      digitalWrite (buzzer, LOW) ;
      delay (1) ;
    }
    //Frequenz 2
    for (i = 0; i < 100; i++)
    {
      digitalWrite (buzzer, HIGH) ;
      delay (2) ;
      digitalWrite (buzzer, LOW) ;
      delay (2) ;
    }
  }

}

Habe nun gelesen das ich das mit einer state machine oder yield() machen könnte. Habe jetzt zwei Tage gelesen und versucht zu verstehen. Ohne Erfolg. Offensichtlich bin ich zu dumm :confused:
Könnte mir dabei jemand helfen? :o


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.