- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 64

Thema: fahrzeug mit vier motoren und vier encodern

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #24
    Benutzer Stammmitglied
    Registriert seit
    19.05.2015
    Beiträge
    69
    Hallo inka,

    sorry diese WE ist bei mir volles Programm.

    Ich habe das Ganze nochmal auf einen Motor und Encoder heruntergebrochen. Das Programm zeigt nach dem alles initialisiert ist im Wechsel "Regeln" und "andere Aktion" an. Wobei Letzteres mehrfach hintereinander vorkommen kann.
    Wie Du sehen kannst wird die Ticker Variable dabei hochgezählt, ohne das Du Dich darum weiter kümmern mußt. Genau das ist das Praktische mit Interrupts, Aktionen laufen quasi paralel ab und Du kannst in Deiner loop Dich mit anderen Aktionen beschäftigen. Hoffe dieses Beispiel ist verständlicher als der andere uberfrachtete Sketch.

    Code:
    #include <AFMotor.h>
    
    // Motor
    AF_DCMotor motor(4);
    // Die Anzahl der Flankenwechsel
    volatile unsigned long ticks = 0;
    // passender Encode Pin für den Motor
    static const uint8_t enc_pin = 18;
    
    /*
     * Die Interrupt Routine die beim Flankenwechsel aufgerufen wird
     */
    void motor_isr(void){
      ticks++;
    }
    
    /*
     * Serial und den Pin initialisieren, die Interrupt Routine 
     * zuordnen.
     */
    void setup() {
      Serial.begin(9600);
      pinMode(enc_pin, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(enc_pin), motor_isr, CHANGE);
    
      Serial.println("setup fertig");
    }
    
    void loop() {
      unsigned long start_zeit, regel_zeit, aktions_zeit;
      /*
       * Ticks beschreiben, dabei wollen wir nicht von einem 
       * Interrupt unterbrochen werden
       */
      noInterrupts();
      ticks = 0;
      interrupts();
    
      motor.setSpeed(130);
      motor.run(FORWARD);
    
      Serial.println("ticks initialisiert und Motor laeuft");
    
      /*
       * Fuer 10 sec "Regeln" und eine andere Aktion parallel
       * dazu ausführen.
       */
      start_zeit = regel_zeit = aktions_zeit = millis();
      while(start_zeit + 10000 > millis() ) {
        /*
         * Motor "regeln" alle 0,5sec
         */
        static const unsigned long rdiff = 500;
        if(regel_zeit + rdiff <= millis()) {
          regel_zeit = rdiff + millis(); // nächstes Intervall setzen.
          Serial.print(millis());
          Serial.print(": Regeln ");
    
          /*
           * Wir lesen unseren Zaehler und wollen nicht
           * von Interrupts gestört werden
           */
          noInterrupts();
          unsigned long tmp = ticks;
          interrupts();
          
          Serial.println(tmp);
        }
    
        /*
         * Die andere Aktion die Parallel zum "Regeln" ausgeführt wird
         * und nur unterbrochen wird, wenn ein Interrupt auftritt.
         */
         static const unsigned long adiff = 333;
         if(aktions_zeit + adiff <= millis()) {
          aktions_zeit = adiff + millis(); // Nächste Intervall setzen
    
          // Hier irgendetwas anderes machen
          Serial.print(millis());
          Serial.println(": andere Aktion");
         }
      }
    
      Serial.println("Motor stop");
      
      motor.setSpeed(0);
      motor.run(RELEASE);
      
      delay(2000);
    }
    Grüße

    Chris
    Geändert von botty (14.11.2015 um 19:30 Uhr)

Ähnliche Themen

  1. Vier PWM-Lüfter steuern
    Von Bammer im Forum AVR Hardwarethemen
    Antworten: 22
    Letzter Beitrag: 22.10.2010, 10:21
  2. Vier Servos steuern
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 14.04.2008, 23:17
  3. Wie vier Motoren ansteuern???
    Von cinhcet im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 29.06.2006, 12:37
  4. vier L297 und VREF
    Von schmek im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 01.12.2005, 19:47
  5. Bot mit vier Rädern
    Von themaddin im Forum Mechanik
    Antworten: 17
    Letzter Beitrag: 06.11.2005, 21:39

Berechtigungen

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

Solar Speicher und Akkus Tests