- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 21

Thema: PWM im Interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    ok einen fehler habe ich jetzt gefunden

    int pwm 127;
    Warum auch immer ich das so schreiben muss
    int pwm = 127;

    - - - Aktualisiert - - -

    mit 3 pin beim antrib bei der lenkung brauch ich kein pwm da ist es direckt auf 5v also 2 pin
    3 pin vor zurück + pwm,
    2 pin lenkung links rechts
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Das ist ja nett.
    In Deinem alten Code arbeitest Du mit Ports, und Bitmasken, die du je nach Bitmuster am Port der Sensoren veroderst, um die entsprechenden Ausgänge zu setzen.

    Dann ist das soweit ich das bei den Sensoren gesehen habe eine inverse Logik.
    Sprich der Sensor der 0 ist bestimmt die Motoren Aktion.

    Im neuen Code erwartet Switch eine Variable, aber bekommt eine leere Funktion.
    Im alten Code war das Bitmuster des Ports die Variable, die mit den definierten Bitmustern verglichen wurde.
    Im neuen Code vergleichts Du also eine leere Funktion mit einer Funktion, die Dir den Zustand eines Bits zurück gibt.

    Bei der Aktion das selbe, da setzt eiine Funktion ein Bit und das ganze wird verodert mit einer anderen Funktion die auch ein Bit setzt.

    So kann das leider nicht funktionieren.
    Da müsstest du auch in Arduino direkte Bitmanipulationen durchführen oder aber dich auf die funktionen einlassen.

    Bin bei dem was ich mir aus dme Post kopiert habe verrutscht und bei den Sensoren Pins gelandet. Das unten ist Mist
    Code:
    Ich vermute mal das du zwei Motoren hast, die mit PWM,IN1,IN2 angesteuert werden.
    Auf Verdacht sage ich mal:
    L_PWM=14
    L_IN1=15
    L_IN2=16
    R_PWM=17
    R_IN1=18
    R_IN2=19
    Demnach hast Du für Vorwärts/Rückwärts IN1,IN2
    und fürs Lenken PWM,IN1,IN2
    ???
    Geändert von i_make_it (02.03.2018 um 19:18 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    ok jetzt habe ich es mal so versucht

    Code:
    // 14-19
    //Sensoren
    const int V_LINKS = 14;
    const int V_MITTE = 15;
    const int V_RECHTS = 16;
    const int H_LINKS = 17;;
    const int H_MITTE = 18;;
    const int H_RECHTS = 19;
    //Motoren
    const int LINKS = 6;
    const int RECHTS = 5;
    const int VOR = 4;
    const int ZURUECK = 2;
    const int PWM = 3;
    
    int pwm = 127;
    
    
    void setup() {
      // put your setup code here, to run once:
    
      pinMode(V_LINKS, INPUT);
      pinMode(V_MITTE, INPUT);
      pinMode(V_RECHTS, INPUT);
      pinMode(H_LINKS, INPUT);
      pinMode(H_MITTE, INPUT);
      pinMode(H_RECHTS, INPUT);
    
      pinMode(LINKS, OUTPUT);
      pinMode(RECHTS, OUTPUT);
      pinMode(VOR, OUTPUT);
      pinMode(ZURUECK, OUTPUT);
      pinMode(PWM, OUTPUT);
    
    }
    
    void loop() {
    
      analogWrite(PWM, pwm);
    
    
      if (V_MITTE == HIGH)
      {
       digitalWrite(ZURUECK, HIGH);
      }
      else if (V_LINKS == HIGH)
      { 
       digitalWrite(ZURUECK, HIGH) | digitalWrite(RECHTS, HIGH); 
      }
      else if (V_RECHTS == HIGH)
      { 
       digitalWrite(ZURUECK, HIGH) | digitalWrite(LINKS, HIGH); 
      }
      else if (H_MITE == HIGH)
      { 
       digitalWrite(VOR, HIGH); 
      }
    
      else if (H_LINKS == HIGH)
      { 
       digitalWrite(VOR, HIGH) | digitalWrite(RECHTS, HIGH); 
      }
      else if (H_RECHTS == HIGH)
      { 
       digitalWrite(VOR, HIGH) | digitalWrite(LINKS, HIGH); 
      } 
    
      else 
      {
      digitalWrite(VOR, HIGH) | digitalWrite(ZURUECK, HIGH) ;
      }
    
    delay(30);
    
    }
    das scheint auch nicht zu gehen
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  4. #4
    HaWe
    Gast
    Zitat Zitat von Ferdinand Beitrag anzeigen

    mit 3 pin beim antrib bei der lenkung brauch ich kein pwm da ist es direckt auf 5v also 2 pin
    3 pin vor zurück + pwm,
    2 pin lenkung links rechts
    du hast doch oben nach pwm gefragt...?
    wenn du jetzt kein pwm brauchst, dann brauchst du auch kein analogWrite(), dann nützt dir auch mein L293/L298 Code nichts.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    für die lenkung brauch ich kein PWM aber für vor und zurück brauche ich PWM

    - - - Aktualisiert - - -

    So habe es jetzt ohne fehler danke für die hinweise auch dafür das meine Sensoren ja invertirt sind habe ich ganz vergesse hir men code
    Code:
    // 14-19
    //Sensoren
    const int V_LINKS = 14;
    const int V_MITTE = 15;
    const int V_RECHTS = 16;
    const int H_LINKS = 17;;
    const int H_MITTE = 18;;
    const int H_RECHTS = 19;
    //Motoren
    const int LINKS = 6;
    const int RECHTS = 5;
    const int VOR = 4;
    const int ZURUECK = 2;
    const int PWM = 3;
    
    int pwm = 127;
    
    
    void setup() {
      // put your setup code here, to run once:
    
      pinMode(V_LINKS, INPUT);
      pinMode(V_MITTE, INPUT);
      pinMode(V_RECHTS, INPUT);
      pinMode(H_LINKS, INPUT);
      pinMode(H_MITTE, INPUT);
      pinMode(H_RECHTS, INPUT);
    
      pinMode(LINKS, OUTPUT);
      pinMode(RECHTS, OUTPUT);
      pinMode(VOR, OUTPUT);
      pinMode(ZURUECK, OUTPUT);
      pinMode(PWM, OUTPUT);
    
    }
    
    void loop() {
    
      analogWrite(PWM, pwm);
    
    
      if (digitalRead(V_MITTE) == LOW)
      {
       digitalWrite(ZURUECK, HIGH);
      }
      else if (digitalRead(V_LINKS) == LOW)
      { 
       digitalWrite(ZURUECK, HIGH);
       digitalWrite(RECHTS, HIGH); 
      }
      else if (digitalRead(V_RECHTS) == LOW)
      { 
       digitalWrite(ZURUECK, HIGH);
       digitalWrite(LINKS, HIGH); 
      }
      else if (digitalRead(H_MITTE) == LOW)
      { 
       digitalWrite(VOR, HIGH); 
      }
    
      else if (digitalRead(H_LINKS) == LOW)
      { 
       digitalWrite(VOR, HIGH);
       digitalWrite(RECHTS, HIGH); 
      }
      else if (digitalRead(H_RECHTS) == LOW)
      { 
       digitalWrite(VOR, HIGH);
       digitalWrite(LINKS, HIGH); 
      } 
    
      else 
      {
      digitalWrite(VOR, HIGH);
      digitalWrite(ZURUECK, HIGH);
      }
    
    delay(30);
    
    }
    jetzt muss ich nur noch alles zusammen stecken und testen

    - - - Aktualisiert - - -

    der volsteligkeitshalber hir noch mein vertiger code

    Code:
    
    
    
    
    
    
    // 14-19
    //Sensoren
    const int V_LINKS = 14;
    const int V_MITTE = 15;
    const int V_RECHTS = 16;
    const int H_LINKS = 17;;
    const int H_MITTE = 18;;
    const int H_RECHTS = 19;
    //Motoren
    const int LINKS = 6;
    const int RECHTS = 5;
    const int VOR = 4;
    const int ZURUECK = 2;
    const int PWM = 3;
    
    int pwm = 80;
    
    
    void setup() {
      // put your setup code here, to run once:
    
      pinMode(V_LINKS, INPUT);
      pinMode(V_MITTE, INPUT);
      pinMode(V_RECHTS, INPUT);
      pinMode(H_LINKS, INPUT);
      pinMode(H_MITTE, INPUT);
      pinMode(H_RECHTS, INPUT);
    
      pinMode(LINKS, OUTPUT);
      pinMode(RECHTS, OUTPUT);
      pinMode(VOR, OUTPUT);
      pinMode(ZURUECK, OUTPUT);
      pinMode(PWM, OUTPUT);
    
    }
    
    void loop() {
    
      analogWrite(PWM, pwm);
    
    
      if (digitalRead(V_MITTE) == LOW)
      {
       digitalWrite(ZURUECK, HIGH);
       digitalWrite(VOR, LOW);
       digitalWrite(LINKS, HIGH);
       digitalWrite(RECHTS, HIGH); 
      }
      else if (digitalRead(V_LINKS) == LOW)
      { 
       digitalWrite(ZURUECK, HIGH);
       digitalWrite(VOR, LOW);
       digitalWrite(RECHTS, HIGH); 
       digitalWrite(LINKS, LOW);
      }
      else if (digitalRead(V_RECHTS) == LOW)
      { 
       digitalWrite(ZURUECK, HIGH);
       digitalWrite(VOR, LOW);
       digitalWrite(LINKS, HIGH); 
       digitalWrite(RECHTS, LOW); 
      }
      else if (digitalRead(H_MITTE) == LOW)
      { 
       digitalWrite(VOR, HIGH);
       digitalWrite(ZURUECK, LOW); 
       digitalWrite(LINKS, HIGH);
       digitalWrite(RECHTS, HIGH);
      }
    
      else if (digitalRead(H_LINKS) == LOW)
      { 
       digitalWrite(VOR, HIGH);
       digitalWrite(ZURUECK, LOW); 
       digitalWrite(RECHTS, HIGH); 
       digitalWrite(LINKS, LOW);
      }
      else if (digitalRead(H_RECHTS) == LOW)
      { 
       digitalWrite(VOR, HIGH);
       digitalWrite(ZURUECK, LOW); 
       digitalWrite(LINKS, HIGH); 
       digitalWrite(RECHTS, LOW); 
      } 
    
      else 
      {
        
      digitalWrite(VOR, HIGH);
      digitalWrite(ZURUECK, LOW);
      digitalWrite(LINKS, HIGH);
      digitalWrite(RECHTS, HIGH); 
      }
    
    //delay(30);
    
    }
    leider tut der nicht so wie ich möchte trozdem danke fr eure hilfe

    das mit dem PWM funktionirt super häte ich so nicht gedacht
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Als erstes würde ich im Code überall pwm ersetzten, z.B. durch pwmm.
    Und PWM ebenfalls, z.B. durch PWMM.

    Wenn ich Deinen Code in meine Arduino IDE stecke mosert er mir die beiden sofort an.
    Variablen werden normalerweise schwarz dargestellt, pwm wird braun und PWM blau dargestellt.
    Das heist die IDE erkennt die also bei mir als Keywords.

  7. #7
    HaWe
    Gast
    Zitat Zitat von Ferdinand Beitrag anzeigen
    für die lenkung brauch ich kein PWM aber für vor und zurück brauche ich PWM
    ok, dann ist die pwm-Sache ja gelöst, oder? Denn mein 3-pin L293/L298-Beispiel war ja nur der aller-einfachste Basis-Code nur fürs erste, grundlegende Verständnis.
    http://www.mindstormsforum.de/viewto...tart=45#p68840

Ähnliche Themen

  1. Interrupt
    Von amal im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 22.07.2011, 22:38
  2. PVD-Interrupt
    Von kmrish im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 3
    Letzter Beitrag: 19.07.2011, 11:32
  3. For Next , Interrupt
    Von wodka im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 16.01.2009, 16:10
  4. Interrupt ADC
    Von Night_MaKu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 27.04.2006, 17:05
  5. [ERLEDIGT] Interrupt waehrend Interrupt
    Von thomas05 im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 08.11.2005, 06:13

Stichworte

Berechtigungen

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

Labornetzteil AliExpress