- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: "fremde" zeichen

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    "fremde" zeichen

    Anzeige

    Praxistest und DIY Projekte
    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"?
    Geändert von inka (19.09.2017 um 16:19 Uhr)
    gruß inka

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    ^: Bitweises exklusives Oder.
    UL: Die Konstante hat explizit den Typ unsigned long.

  3. #3
    HaWe
    Gast
    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!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    danke (auch an sisor) es hat geholfen...

    dann bedeutet es, dass:

    mit: " digitalWrite(led_4, digitalRead(led_4) ^ 1);"

    der zustand von "led_4" gelesen und mit einem invertierten wert vom gelesenen wieder beschrieben wird...
    gruß inka

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von inka Beitrag anzeigen
    danke (auch an sisor) es hat geholfen...

    dann bedeutet es, dass:

    mit: " digitalWrite(led_4, digitalRead(led_4) ^ 1);"

    der zustand von "led_4" gelesen und mit einem invertierten wert vom gelesenen wieder beschrieben wird...
    Ja, genau. Folgendes hätte den gleichen Effekt:
    digitalWrite(led_4, !digitalRead(led_4));

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 13:53
  2. Verkaufe Verkaufe jede Menge 2x16 Zeichen LCDs "Truly MCC162A4-5" ohne Backlight
    Von JensBE im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 6
    Letzter Beitrag: 10.06.2013, 20:03
  3. Antworten: 2
    Letzter Beitrag: 15.06.2011, 22:18
  4. "Soft-Reset?" und "Finger-Interrupt?"
    Von trapperjohn im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 11.06.2008, 00:02
  5. ASM: was machen "swap" und "cbr" genau?
    Von RHS im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.08.2004, 18:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen