- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 20

Thema: Kontrolle Funktion für Motor

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    @Ferdinand

    Dein Problem:

    "zum program ablauf war mein gedanke wie schafe ich es in der haupt schleife zu prüfen ob das poti richtig steht und das nur einmal beim starten des programs das heist wen das poti auf 0% steht ist alles ok und er kert in die haupt funktionen das program braucht nicht mehr zu prüfen ob das poti unter 3% steht"

    Dazu muss die while-Schleife bei setup() rein, nicht bei loop().

    Dieser Code muss bei setup() rein, am besten ganz am Ende:

    Code:
          poti_prozent = 4; sicherheit = false;
    
          while( poti_prozent > 0 )
          {  
              poti_Value = analogRead(POTI);
              poti_prozent = map(poti_Value, 0,1023, 0,100);
          }
    
          sicherheit = true;
    Was macht der Code:

    poti_prozent wird auf 4 gesetzt, damit - egal in welchem Fall - die while-Schleife mindestens ein Mal ausgeführt wird, um das Poti abzufragen. Entweder prüfst Du in der while-Schleife auf >3 oder >0. Bei >0 bleibt der so lange in while, bis poti_prozent = 0 ist. Bei while (poti_prozent > 3) bleibt der solange in der while-Schleife, bis poti_prozent kleiner oder gleich 3 ist. Dazu muss in der while-Schleife nur das Poti abgefragt werden. Sobald das Poti den von Dir gewünschten Wert erreicht, wird die while-Schleife beendet (und Du kannst einen Status sicherheit = true; setzen. Im Hauptprogramm loop() musst Du dann nur noch sicherheit prüfen, ob das true oder false ist: if (sicherheit==true)... oder if(sicherheit==false)... ).
    Man kann das mit der Variable sicherheit auch weglassen. Weil der solange in der while-Schleife drin bleibt, bis das Poti einmal richtig steht. Erst dann fängt er überhaupt mit loop() an. Das heißt: in loop() ist sicherheit dann immer true. Da es dort dann sowieso immer true wäre, kann man es dann weg lassen.

    Das war es, viel Erfolg!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    ok das ist doch mal ne gute Idee von dir werde ich gleich mal so um setzen und ausprobieren

    - - - Aktualisiert - - -

    ok es funktioniert habe es jetzt mal so gelöst

    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); 
    
      
      // Sicherheitsschaltung Poti auf 0 und Motor Aus
        
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
              
          while( poti_prozent >= 3 )
          {  
              
               digitalWrite(MOTOR_1, HIGH);
               digitalWrite(MOTOR_2, HIGH);
               digitalWrite(LED, HIGH);
               delay(300); 
              poti_Value = analogRead(POTI);
              poti_prozent = map(poti_Value, 0,1023, 0,100);
              digitalWrite(LED, LOW);
                delay(300);
    
                
               
          }
    
          
    
    
    
    
      
    }
    
    
    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("% ");
    
       
    
       //delay(1000);   
          
      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);
    
    //digitalWrite(LED, HIGH);
    //delay(1000);
    
      // ENDE  
    }
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

Ä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
  •  

12V Akku bauen