- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 11 bis 15 von 15

Thema: Drucktaster einbinden mit der OneButton Library

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #12
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    was halt komisch ist das wen ich den arduino nano an USB angeschlossen habe sprich an Serial funktioniert alles gut wen ich ihn ohne Laufen lasse macht er Probleme

    hir noch mal den Aktuellen Code

    Code:
    /*
      Analog Input
    
     
    */
    #include "OneButton.h"
    
    #define MOTOR_1  A2
    #define MOTOR_2  A4
    #define POTI     A0
    #define PWM      9
    #define TASTER   5
    
    #define LED      3
    
    bool sto = 0;
    
    
    
    
    
    //void clickedIt();
    OneButton button(TASTER, true);
    //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); 
      poti_prozent = 4;
      // Sicherheitsschaltung Poti auf 0 und Motor Aus
      //poti_Value = analogRead(POTI);
      //poti_prozent = map(poti_Value, 0,1023, 0,100);
    
      //pinMode(TASTER, INPUT);
      button.attachClick(clickedIt);
      button.attachDoubleClick(doubleClickedIt);
    
      
          while( poti_prozent >= 3 )
          {  
               Serial.println("Poti zu Hoch ! ! !");
               digitalWrite(MOTOR_1, HIGH);
               digitalWrite(MOTOR_2, HIGH);
               digitalWrite(LED, HIGH);
               delay(60); 
              poti_Value = analogRead(POTI);
              poti_prozent = map(poti_Value, 0,1023, 0,100);
               digitalWrite(LED, LOW);
               delay(60);
              
          }
    
            
    }
    bool Drehrichtung = true;
    
    void loop() {
     button.tick();
     stopp();
     
           
      //void clickedIt();
      
      int pwmSpeed;
    
       //delay(200);
       //digitalWrite(MOTOR_1, HIGH);
       //digitalWrite(MOTOR_2, HIGH);
       //delay(200);
      
      if(Drehrichtung == true)
      {
           button.tick();
           stopp();
      //void clickedIt();
     // LED Drehrichtung Rechts 
     digitalWrite(LED, LOW);
     
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Rechts Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
      
      // Drehrichtung Rechts
      digitalWrite(MOTOR_1, LOW);
      digitalWrite(MOTOR_2, HIGH);
      
      // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
      
      }
      else
      {
            button.tick();
            stopp();
      //void clickedIt();
      
      // LED Drehrichtung Links
      digitalWrite(LED, HIGH);
    
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Links Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
    
      // Drehrichtung Links 
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, LOW);
      
      // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
      
      
      }
    
    
    
    
      
    }
    
    void clickedIt()
    {
    
      Drehrichtung = !Drehrichtung;
      
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
      
      
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      
      
     }
     
    void doubleClickedIt()
    {
      sto = !sto;
      
     }
    
     void stopp(void)
    {
      while(sto == true )
      {
       button.tick();
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
    
       Serial.println("STOPP!!!");
      
      
      digitalWrite(LED, HIGH);
      delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();  
      digitalWrite(LED, LOW);
      delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();
        delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
      
      }
      
    }
    - - - Aktualisiert - - -

    ok hab es jetzt mal mit einer Funktion versucht leider nach einmaligen Drehrichtungswechsel reagiert er nicht mehr auf Tastendruck


    Code:
    /*
      Analog Input
    
     
    */
    #include "OneButton.h"
    
    #define MOTOR_1  A2
    #define MOTOR_2  A4
    #define POTI     A0
    #define PWM      9
    #define TASTER   5
    
    #define LED      3
    
    bool sto = 0;
    bool drehrichtung = 0;
    
    
    
    
    //void clickedIt();
    OneButton button(TASTER, true);
    //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); 
      poti_prozent = 4;
      // Sicherheitsschaltung Poti auf 0 und Motor Aus
      //poti_Value = analogRead(POTI);
      //poti_prozent = map(poti_Value, 0,1023, 0,100);
    
      //pinMode(TASTER, INPUT);
      button.attachClick(clickedIt);
      button.attachDoubleClick(doubleClickedIt);
    
      
          while( poti_prozent >= 3 )
          {  
               Serial.println("Poti zu Hoch ! ! !");
               digitalWrite(MOTOR_1, HIGH);
               digitalWrite(MOTOR_2, HIGH);
               digitalWrite(LED, HIGH);
               delay(60); 
              poti_Value = analogRead(POTI);
              poti_prozent = map(poti_Value, 0,1023, 0,100);
               digitalWrite(LED, LOW);
               delay(60);
              
          }
    
            
    }
    bool Drehrichtung = true;
    
    void loop() {
     button.tick();
     stopp();
     if(drehrichtung == 1)
     {
        drehrichtun();
     }
           
      //void clickedIt();
      
      int pwmSpeed;
    
       //delay(200);
       //digitalWrite(MOTOR_1, HIGH);
       //digitalWrite(MOTOR_2, HIGH);
       //delay(200);
      
      if(Drehrichtung == true)
      {
           button.tick();
           stopp();
      //void clickedIt();
     // LED Drehrichtung Rechts 
     digitalWrite(LED, LOW);
     
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Rechts Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
      
      // Drehrichtung Rechts
      digitalWrite(MOTOR_1, LOW);
      digitalWrite(MOTOR_2, HIGH);
      
      // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
      
      }
      else
      {
            button.tick();
            stopp();
      //void clickedIt();
      
      // LED Drehrichtung Links
      digitalWrite(LED, HIGH);
    
      poti_Value = analogRead(POTI);
      poti_prozent = map(poti_Value, 0,1023, 0,100);
      // Ausgabe
      Serial.print("Links Poti = ");
      Serial.print(poti_prozent);
      Serial.println("% ");
    
      // Drehrichtung Links 
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, LOW);
      
      // Geschwindigkeit regeln
      analogWrite(PWM, poti_Value / 4);
      
      
      }
    
    
    
    
      
    }
    
    void clickedIt()
    {
    
    drehrichtung = 1;
      
     }
     
    void doubleClickedIt()
    {
      sto = !sto;
      
     }
    
     void stopp(void)
    {
      while(sto == true )
      {
       button.tick();
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
    
       Serial.println("STOPP!!!");
      
      
      digitalWrite(LED, HIGH);
      delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();  
      digitalWrite(LED, LOW);
      delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
        delay(50);
      button.tick();
        delay(50);
      button.tick(); 
        delay(50);
      button.tick(); 
      
      }
      
    }
    
    void drehrichtun(void)
    {
      Drehrichtung = !Drehrichtung;
      
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
      
      
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      drehrichtung = 0;
    }
    ich habe das "button.tick();" noch in der schleife vergessen


    Code:
    
    void drehrichtun(void)
    {
      Drehrichtung = !Drehrichtung;
      
      digitalWrite(MOTOR_1, HIGH);
      digitalWrite(MOTOR_2, HIGH);
      
      
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      digitalWrite(LED, HIGH);
      delay(100); 
      digitalWrite(LED, LOW);
      delay(100);
      drehrichtung = 0;
    }
    wes geht nur sauber wen ich es am PC angeschlossen habe
    Geändert von Ferdinand (19.08.2018 um 21:12 Uhr)
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

Ähnliche Themen

  1. C-Library in BASCOM einbinden??
    Von Jon im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 20.11.2009, 18:26
  2. Library einbinden
    Von fofi1 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 03.02.2009, 22:48
  3. Einbinden einer Library auf Mikrocontroller
    Von SummerTime im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 25.03.2008, 19:53
  4. MSDN Library in MS Visual Studio.Net 2003 Prof einbinden???
    Von sg10241024 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 5
    Letzter Beitrag: 13.02.2005, 14:28
  5. drucktaster entprellen
    Von pebisoft im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 06.01.2005, 07:49

Berechtigungen

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

Labornetzteil AliExpress