Zitat Zitat von inka Beitrag anzeigen
hallo allerseits,

in einem der erklärungsbeispiele für "blink without delay" stiess ich auf folgenden code:

Code:
/*
/*
Blink Without Delay - anhand von Beispielen erklärt
fünf parallel laufende, voneinander unabhängige, unterschiedliche Zeiten


https://www.arduinoforum.de/arduino-Thread-Blink-Without-Delay-mal-anders-erkl%C3%A4rt




!!! Variablen zum speichern von Zeiten aus millis() und micros() immer 'unsigned long' deklarieren !!!


*/




// Variablen deklarieren in denen die Startzeiten
// der einzelnen Zeitfunktionen gespeichert werden
unsigned long startzeit_1 = 0;
unsigned long startzeit_2 = 0;
unsigned long startzeit_3 = 0;
unsigned long startzeit_4 = 0;
unsigned long startzeit_5 = 0;


// Definitionen der einzelnen Schaltzeiten
#define        laufzeit_1   1234UL
#define        laufzeit_1   1234UL
#define        laufzeit_2   2345UL
#define        laufzeit_3  54321UL
#define        laufzeit_4   1111UL
#define        laufzeit_5     22UL


// Die Anschlusspins der einzelnen LEDs festlegen
const int led_1 = 10;
const int led_2 = 11;
const int led_3 = 12;
const int led_4 = 13;


// Pins als Ausgang
void setup()
{
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
}






void loop()
{




// laufzeit_1 EIN, laufzeit_1 AUS - LED schalten in loop - Schaltzeiten in Millisekunden
if (millis() - startzeit_1 >= laufzeit_1)
{
  startzeit_1 = millis();
  digitalWrite(led_1, digitalRead(led_1) ^ 1);
}








// laufzeit_2 EIN, laufzeit_2 AUS - LED schalten in Funktion - Schaltzeiten in Millisekunden
if (millis() - startzeit_2 >= laufzeit_2)
{
  startzeit_2 = millis();
  led2();
}








// laufzeit_3 EIN, laufzeit_3 AUS - LED schalten in loop - Schaltzeiten in Microsekunden
if (micros() - startzeit_3 >= laufzeit_3)
{
  startzeit_3 = micros();
  digitalWrite(led_3, digitalRead(led_3) ^ 1);
}








// asymetrische Zeiten - laufzeit_5 EIN, laufzeit_4 AUS - LED schalten in loop - Schaltzeiten in Millisekunden
if (!digitalRead(led_4) && millis() - startzeit_4 >= laufzeit_4 )
{
  startzeit_5 = millis();
  digitalWrite(led_4, digitalRead(led_4) ^ 1);
}
if (digitalRead(led_4) && millis() - startzeit_5 >= laufzeit_5 )
{
  startzeit_4 = millis();
  digitalWrite(led_4, digitalRead(led_4) ^ 1);
}






}


// Unterprogramm für Led 2
void led2()
{
digitalWrite(led_2, digitalRead(led_2) ^ 1);
}
was bedeutet z.b. hier: #define "laufzeit_1 1234UL" das "UL"?

oder hier: "digitalWrite(led_4, digitalRead(led_4) ^ 1);" das "^ 1"?

UL hinter einer Zahl heißt, dass sie den Datentyp UL = unsigned long hat (wird z.B. für millis() benötigt)
und ^ ist ein logischer Operator und bedeutet XOR (edit: bitweise)
( x ^ 1 ) ergibt mit x=0 eine 1 und mit x=1 eine 0, invertiert also x.

andere Operatoren der Sprache C(++) findest du z.B. hier:
https://www.tutorialspoint.com/cprog..._operators.htm

HTH!