- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 20

Thema: Kontrolle Funktion für Motor

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zur Unterbrechung Deiner Programmschleife, falls die längere Zeit in Anspruch nimmt. Andernfalls könnte Dir das Gerät einfrieren/abstürzen. Normal baut man das beispielhaft am Ende innerhalb loop() ein. Unterbricht die aktuelle Schleife um dem Prozessor Zeit für andere Aufgaben zu geben.


    yield()

    Description

    Passes control to other tasks when called. Ideally yield() should be used in functions that will take awhile to complete.

    Syntax

    yield();

    Parameters

    none

    Returns

    nothing


    - - - Aktualisiert - - -

    Du initialisierst sicherheit mit 1:
    Code:
    bool sicherheit = 1;
    In loop() geht es dann mit while weiter, while wird solange ausgeführt, wie die angegebene Bedingung erfüllt ist:
    Code:
    while( sicherheit == 0 )
    Da sicherheit schon den Wert 1 hat, macht die while-Schleife gar nichts (While ist zur Schleifenbildung gedacht). Daher geht es dann mit dem Code weiter:

    Code:
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
      
       // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
    
      // Drehrichtung Links 
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, LOW);
      
    
      // Drehrichtung Rechts
    
      digitalWrite(MOTOR_1, LOW);
      digitalWrite(MOTOR_2, HIGH);
    Zum Verständnis muss man wissen: was soll sicherheit bewirken/bezwecken?

    Um das Verständnis zu verbessern, warum nicht zum Beispiel so:

    Code:
    /*
      Analog Input
    
     
    */
    #define MOTOR_1  2
    #define MOTOR_2  4
    #define POTI     A0
    #define PWM      9
    #define TASTER   7
    
    #define LED      3
    
    
    //int poti = A0;    // select the input pin for the potentiometer
    
    int poti_Value = 0;  // variable to store the value coming from the sensor
    
    int poti_prozent = 0;
    bool sicherheit = 1;
    
    void setup() {
      // declare the ledPin as an OUTPUT:
      //pinMode(ledPin, OUTPUT);
    
     Serial.begin(9600);
    
    
      //pinMode(MOTOR_1,OUTPUT);
      //pinMode(MOTOR_2,OUTPUT);
      
      
      pinMode(LED,OUTPUT);
      
      pinMode(TASTER,INPUT_PULLUP);
    
      pinMode(MOTOR_1,OUTPUT);
      pinMode(MOTOR_2,OUTPUT);
      
      pinMode(PWM,OUTPUT);
    
      
      digitalWrite(LED, LOW); 
    }
    
    
    void loop() {
      
    int pwmSpeed;
    
      // Poti Regelbereich 
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
    
         
             
      if (poti_prozent > 3 )
      {
         digitalWrite(LED, HIGH);
         digitalWrite(MOTOR_1, LOW);
         digitalWrite(MOTOR_2, LOW);
         return 0;
      }
     
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
      
       // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
    
      // Drehrichtung Links 
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, LOW);
      
    
      // Drehrichtung Rechts
    
      digitalWrite(MOTOR_1, LOW);
      digitalWrite(MOTOR_2, HIGH);
    
    
      // ENDE  
    }
    Sofern ich das richtig verstanden habe, könntest Du das dann auch so machen:

    Code:
    /*
      Analog Input
    
     
    */
    #define MOTOR_1  2
    #define MOTOR_2  4
    #define POTI     A0
    #define PWM      9
    #define TASTER   7
    
    #define LED      3
    
    
    //int poti = A0;    // select the input pin for the potentiometer
    
    int poti_Value = 0;  // variable to store the value coming from the sensor
    
    int poti_prozent = 0;
    bool sicherheit = 1;
    
    void setup() {
      // declare the ledPin as an OUTPUT:
      //pinMode(ledPin, OUTPUT);
    
     Serial.begin(9600);
    
    
      //pinMode(MOTOR_1,OUTPUT);
      //pinMode(MOTOR_2,OUTPUT);
      
      
      pinMode(LED,OUTPUT);
      
      pinMode(TASTER,INPUT_PULLUP);
    
      pinMode(MOTOR_1,OUTPUT);
      pinMode(MOTOR_2,OUTPUT);
      
      pinMode(PWM,OUTPUT);
    
      
      digitalWrite(LED, LOW); 
    }
    
    
    void loop() {
      
    int pwmSpeed;
    
      // Poti Regelbereich 
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
    
         
             
      if (poti_prozent > 3 )
      {
         digitalWrite(LED, HIGH);
         digitalWrite(MOTOR_1, LOW);
         digitalWrite(MOTOR_2, LOW);
      }
      else
      {
     
         digitalWrite(MOTOR_1, HIGH);
         digitalWrite(MOTOR_2, HIGH);
      
         // Geschwindigkeit regeln
        analogWrite(PWM, poti_Value / 4);
    
        // Drehrichtung Links 
        digitalWrite(MOTOR_1, HIGH);
        digitalWrite(MOTOR_2, LOW);
      
        // Drehrichtung Rechts
    
        digitalWrite(MOTOR_1, LOW);
        digitalWrite(MOTOR_2, HIGH);
      }
    
      // ENDE 
     yield();
    }
    Geändert von Moppi (16.08.2018 um 07:54 Uhr)

Ähnliche Themen

  1. RP6v2 Rechter Motor ohne Funktion.
    Von Kevin0597 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 23.12.2014, 20:51
  2. Platinenlayout Kontrolle
    Von Thalhammer im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 5
    Letzter Beitrag: 08.08.2013, 21:18
  3. Funktion gibt Funktion zurück... nächstes Problem
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 19.12.2008, 08:51
  4. L298: genaue Funktion des "Motor Stop" (Enable)
    Von Dolfo im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 26.08.2008, 11:38
  5. Kontrolle dynamischer Betriebszustände
    Von Reinald im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 31.08.2006, 15:11

Berechtigungen

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

Solar Speicher und Akkus Tests