inka
19.09.2017, 16:11
hallo allerseits,
in einem der erklärungsbeispiele für "blink without delay" stiess ich auf folgenden 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"?
in einem der erklärungsbeispiele für "blink without delay" stiess ich auf folgenden 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"?