- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 69

Thema: Welche Möglichkeiten der Fehlersuche hat man beim Arduino?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Danke für die ausführliche Info. Was ich UP nenne, nennst du offensichtlich Funktion. Soll mir recht sein.

    Zum Thema goto hier mal ein Beispiel. mir ist klar, dass man das auch anders machen kann, aber ist es hier nicht sinnvoll?

    Code:
      if (dir == 0 && (micros() - M5_microsalt)  > Schrittdauer)  {                            //  Drehrichtung
    
    
        switch (M5_i) {             //   es soll nur ein Schritt ausgeführt werden.
    
          case 0:
            M5_i = 1;
            goto M5_0;
            break;
          case 1:
            M5_i = 2;
            goto M5_1;
            break;
          case 2:
            M5_i = 3;
            goto M5_2;
            break;
          case 3:
            M5_i = 4;
            goto M5_3;
            break;
          case 4:
            M5_i = 5;
            goto M5_4;
            break;
          case 5:
            M5_i = 6;
            goto M5_5;
            break;
          case 6:
            M5_i = 7;
            goto M5_6;
            break;
          case 7:
            M5_i = 0;
            goto M5_7;
            break;
    
        }
    
      }   //  ************ ENDE if (dir == 0 && (micros() - M5_microsalt)  > Schrittdauer)
    
    
      else  if (dir == 1 && (micros() - M5_microsalt)  > Schrittdauer)  {      //  Drehrichtung
    
        switch (M5_i) {             //   es soll nur ein Schritt ausgeführt werden.
    
          case 0:
            M5_i = 1;
            goto M5_7;
            break;
          case 1:
            M5_i = 2;
            goto M5_6;
            break;
          case 2:
            M5_i = 3;
            goto M5_5;
            break;
          case 3:
            M5_i = 4;
            goto M5_4;
            break;
          case 4:
            M5_i = 5;
            goto M5_3;
            break;
          case 5:
            M5_i = 6;
            goto M5_2;
            break;
          case 6:
            M5_i = 7;
            goto M5_1;
            break;
          case 7:
            M5_i = 0;
            goto M5_0;
            break;
    
        }
    
    
    
    
    
    M5_0:
    
        digitalWrite(p1, HIGH);
        digitalWrite(p2, LOW);
        digitalWrite(p3, LOW);
        digitalWrite(p4, LOW);
        goto M5_Schritt;
    
    M5_1:
    
        digitalWrite(p1, HIGH);
        digitalWrite(p2, HIGH);
        digitalWrite(p3, LOW);
        digitalWrite(p4, LOW);
        goto M5_Schritt;
    
    M5_2:
    
        digitalWrite(p1, LOW);
        digitalWrite(p2, HIGH);
        digitalWrite(p3, LOW);
        digitalWrite(p4, LOW);
        goto M5_Schritt;
    
    M5_3:
    
        digitalWrite(p1, LOW);
        digitalWrite(p2, HIGH);
        digitalWrite(p3, HIGH);
        digitalWrite(p4, LOW);
        goto M5_Schritt;
    
    M5_4:
    
        digitalWrite(p1, LOW);
        digitalWrite(p2, LOW);
        digitalWrite(p3, HIGH);
        digitalWrite(p4, LOW);
        goto M5_Schritt;
    
    M5_5:
    
        digitalWrite(p1, LOW);
        digitalWrite(p2, LOW);
        digitalWrite(p3, HIGH);
        digitalWrite(p4, HIGH);
        goto M5_Schritt;
    
    M5_6:
    
        digitalWrite(p1, LOW);
        digitalWrite(p2, LOW);
        digitalWrite(p3, LOW);
        digitalWrite(p4, HIGH);
        goto M5_Schritt;
    
    M5_7:
    
        digitalWrite(p1, HIGH);
        digitalWrite(p2, LOW);
        digitalWrite(p3, LOW);
        digitalWrite(p4, HIGH);
        goto M5_Schritt;

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Das ganze wiederholt sich viel zu oft unnötigerweise.

    Statt viele Male
    Code:
        digitalWrite(p1, wert);
        digitalWrite(p2, wert);
        digitalWrite(p3, wert);
        digitalWrite(p4, wert);
    würde einmal
    Code:
    void SetBits(int v1, int v2, int v3, int v4)
    {
        digitalWrite(p1, v1);
        digitalWrite(p2, v2);
        digitalWrite(p3, v3);
        digitalWrite(p4, v4);
    }
    reichen was man dann z.B. als SetBits(LOW, HIGH, HIGH, LOW); aufruft. Dann hat das Programm schon viele Zeilen verloren.

    So müsste man mehrmals da drüber gehen. Am Ende hätte das Programm vielleicht noch 10 % der jetzigen Länge. Dann hätte man schon viel für die Fehlersuche gewonnen.

    - - - Aktualisiert - - -

    Als Ergänzung, selbst wenn im obigen Falle p1 bis p4 Variablen sind, könnte man sowas machen

    Code:
    struct MotorPin
    {
      int p1;
      int p2;
      int p3;
      int p4;
    };
    
    const MotorPin pins[] = { {1, 2, 3, 4}, {5, 6, 7, 8} , /* mehr Pins */}; // nur Beispielwerte
    
    void SetBits(int motor, int v1, int v2, int v3, int v4)  // Motornummer beginnt hier bei 0
    {
        digitalWrite(pins[motor].p1, v1);
        digitalWrite(pins[motor].p2, v2);
        digitalWrite(pins[motor].p3, v3);
        digitalWrite(pins[motor].p4, v4);
    }
    Geändert von Mxt (14.09.2016 um 18:41 Uhr)

Ähnliche Themen

  1. 18 PWM Kanäle - Welche Möglichkeiten?
    Von Hardware-Entwickler im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 19.12.2015, 14:16
  2. Antworten: 8
    Letzter Beitrag: 21.10.2014, 09:18
  3. Möglichkeiten der AVR/Arduino PWM?
    Von ichbinsisyphos im Forum Arduino -Plattform
    Antworten: 10
    Letzter Beitrag: 23.02.2013, 09:03
  4. Spannungen mit PC-Computer Messen. Welche Möglichkeiten?
    Von petermetertr im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 14
    Letzter Beitrag: 26.08.2009, 16:36
  5. [ERLEDIGT] 20 mikrovolt-Hirnwellen registrieren-Welche möglichkeiten?
    Von Thomas Wellheim im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 13
    Letzter Beitrag: 18.12.2004, 18:43

Berechtigungen

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

12V Akku bauen