-         

Ergebnis 1 bis 3 von 3

Thema: definieren von macros

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    definieren von macros

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo liebe Freunde !
    ich weiss nicht ob es hier genau hingehört, aber Arduino und C++ gehören ja gewissermassen zusammen. Also es geht mir um die Definition von Macros, was ich gerade in einer Arduino Roboteranwendung programmieren möchte und Probleme habe, wenn ich ein Macro aufrufe, Meldung : error: lvalue required as left operand of

    Danke schon mal..
    Gerhard
    Geändert von oderlachs (03.03.2013 um 13:29 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.556
    Zitat Zitat von oderlachs Beitrag anzeigen
    ... wenn ich ein Macro aufrufe, Meldung : error: lvalue required as left operand of ...
    Wie lautet denn das zugehörige Macro?
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Hallo Oberall.. !
    das hat sich erledigt, habe wohl 'nen schlechten Tag heut, aber ich werde dazu noch was schreiben. Habe jetzt nicht Macros, sondern Funktionen genommen.
    So habe ich erst mal den Softwaretest fertig zu bekommen, weil ich das für wem anders schreibe, der noch Anfänger ist, aber bin ich denn mehr ?????

    Folgendes wollte ich ändern in Macros (vorwärts/rückwärtz der beiden Motoren), das sollte in der Definie Anweisung als Macro geschehen
    Code:
    /* Linker Motor fahre vorwärtz */
    void FOR_M1() {
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,HIGH);
    /* Rechter Motor fahre vorwärtz */
    void FOR_M2() {
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,HIGH);
    }
    /* Linker Motor fahre rückwärtz */
    void REV_M1() 
    {
      digitalWrite(IN1,HIGH);
      digitalWrite(IN2,LOW);
    }
    /* Rechter Motor fahre rückwärtz */
    void REV_M2() {
      digitalWrite(IN3,HIGH);
      digitalWrite(IN4,LOW);
    }
    Ich wollte daraus später eine H-Datei schreiben, um sie universial bei meinen Roboterprogrammen zu verwenden...

    Nun habe ich erst mal folgenden funktionierenden Code geschrieben:
    Code:
    /* ========================================================================== */
    /*                                                                            */
    /*   robot_test_1_2.c                                                           */
    /*   (c) 2013 Gerhard Hinze                                                   */
    /*                                                                            */
    /*                                                                            */
    /*                                                                            */
    /*  Anschlüsse                                         Anschlüsse             */
    /*  Motortreiber:           Bezeichnung                Arduino:               */
    /*   VMS                    Motorspannung + (Nur f.Motor)  nc.        !!!!!   */
    /*   GND                    Motorspannung - (gemeins. GND) GND                */
    /*   +5V                      +5V                          +5V                */
    /*   MotorA-1               Motor-1 "-"                   nc. //not connected */
    /*   MotorA-2               Motor-1 "+"                   nc. //nicht verbund.*/
    /*   MotorB-1               Motor-2 "-"                   nc.                 */
    /*   MotorB-2               Motor-2 "+"                   nc.                 */
    /* -------------------------------------------------------------------------- */
    /*   +++  Die Motoren müssen event. umgepolt werden, Herstellerabhängig +++   */
    /* -------------------------------------------------------------------------- */
    /*   ENA                    Enable Motor 1 (PWM)                              */
    /*   IN1                    DIR-1  Motor 1                                    */
    /*   IN2                    Dir-2  Motor 1                                    */
    /* -------------------------------------------------------------------------- */
    /*   IN3                    DIR-1  Motor 2                                    */
    /*   IN4                    Dir-2  Motor 2                                    */
    /*   ENB                    Enable Motor 2 (PWM)                              */
    /*  ------------------------------------------------------------------------- */
    /*                          Definitionen Motoransteuerung                                     */
    /*  ------------------------------------------------------------------------- */
    #include <NewPing.h> // diese Datei muss im Library-Verzeichnis liegen
    #define ENA      5   // Speed Motor 1       = Arduino D5 (PWM)
    #define ENB      6   // Speed Motor 2       = Arduino D6 (PWM)
    #define IN1      2   // Richtung Motor1 A1  = Arduino D2
    #define IN2      4   // Richtung Motor1 A2  = Arduino D4
    #define IN3      7   // Richtung Motor2 B1  = Arduino D7
    #define IN4      8   // Richtung Motor2 B2  = Arduino D8
    #define TRIGGER_PIN  12  // Arduino pin 12 an Trigger Pin am US-Sensor.
    #define ECHO_PIN     11  // Arduino pin 13 an Echo Pin am US-Sensor.
    #define MAX_DISTANCE 200 // Maximum Abstand zum Objekt (400-500cm).
    #define MIN_DISTANCE 10  // Minimum Abstand zum Objekt                 
    /*  ------------------------------------------------------------------------- */
    /*       Benutzerangaben : Nummerierung für die AnalogPins                    */
    /*  ------------------------------------------------------------------------- */
    /*    A0 = 14, A1 = 15, A2 = 16, A3 = 17, A4 = 18, A5 = 19                    */
    /*  ------------------------------------------------------------------------- */
    /*    Geschrieben für ein Arduino-UNO mit L298 H-Brücke als Motortreiber      */
    /*    Objektsuche frontal mit Ultraschall-Sensor HC-04                        */
    /*                                                                            */
    /*                                                                            */
    /*  ------------------------------------------------------------------------- */
    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
    void setup()
    {
      pinMode(ENA, OUTPUT);  //Setze Pins als Ausgang
      pinMode(ENB, OUTPUT);
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
      pinMode(IN3, OUTPUT);
      pinMode(IN4, OUTPUT);
      
    /* Fahre erstmals vorwärtz mit Speed =100   / = 39% Fullspeed                 */
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,HIGH);
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,HIGH);
                  
      analogWrite(ENA, 100); //setze Motorspeed  
      analogWrite(ENB, 100); //setze Motorspeed 
      Serial.begin(9600);
    }
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    /* Linker Motor fahre vorwärtz */
    void FOR_M1() {
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,HIGH);
                        } 
    /* Rechter Motor fahre vorwärtz */
    void FOR_M2() {
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,HIGH);
    }
    /* Linker Motor fahre rückwärtz */
    void REV_M1() 
    {
      digitalWrite(IN1,HIGH);
      digitalWrite(IN2,LOW);
    }
    /* Rechter Motor fahre rückwärtz */
    void REV_M2() {
      digitalWrite(IN3,HIGH);
      digitalWrite(IN4,LOW);
    }
    void HALT()
    {
    analogWrite(ENA, 0); // STOP M1
    analogWrite(ENB, 0); // STOP M2
    }
    
    void loop()
    {
    delay(50);           // Warte 50ms 
    unsigned int uS = sonar.ping();  
    Serial.println(uS);      // sende Entfernung an SerialTerminal zw. Kontrolle
    int cm = uS / US_ROUNDTRIP_CM;
    if (cm < MIN_DISTANCE)          // Abstand kleiner als das Minimum(10cm)
                                    // dann halten vorerst...später ausweichen
      {                             
      HALT();
      }
      else                          // oder weiterfahren wie zuvor
    {
    analogWrite(ENA, 250); //setze Motorspeed  
    analogWrite(ENB, 250); //setze Motorspeed  
    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    }
    Gruss + Danke Gerhard
    Geändert von oderlachs (03.03.2013 um 17:34 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Bascom Assembler und Macros?
    Von MeckPommER im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 24.11.2008, 13:04
  2. Arrays definieren
    Von aircode im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 01.11.2008, 20:50
  3. Speicherbereiche definieren
    Von sooftie im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 28.02.2006, 08:56
  4. User- oder Hardwareproblem beim definieren von Ports?!
    Von DerMicha im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 9
    Letzter Beitrag: 17.02.2004, 14:40
  5. Eagle Macros für C-Control
    Von elktronic im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 15.01.2004, 22:47

Berechtigungen

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