Motor und Pumpe gleichzeitig betreiben

Wizard91:
Möglicherweise kann man den Code noch vereinfachen, aber zumindest funktioniert er so wie von mir beabsichtigt :slight_smile:

Steile Lernkurve, das hatte ich nicht erwartet!

Etwas Kosmetik (ungetestet):

#include <Wire.h>
#include <Adafruit_MotorShield.h>
// #include "utility/Adafruit_MS_PWMServoDriver.h" // diese Zeile scheint mir überflüssig

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // Motor
Adafruit_DCMotor *myPump = AFMS.getMotor(4); // Membrane Pump

void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP); // Motor forwards
  pinMode(3, INPUT_PULLUP); // Motor backwards
  pinMode(4, INPUT_PULLUP); // Pumpe ein
  AFMS.begin();
  myMotor->setSpeed(100);
  myMotor->run(RELEASE);
  myPump->setSpeed(100);
  myPump->run(RELEASE);
}

void loop() {
  // put your main code here, to run repeatedly:
  bool sensorFWD = digitalRead(2);
  bool sensorRWD = digitalRead(3);
  bool sensorPump = digitalRead(4);

  // rotate while buttons are pressed
  if (sensorRWD != sensorFWD) {
    if (!sensorFWD) {
      myMotor->setSpeed(100);
      myMotor->run(FORWARD);
    }
    if (!sensorRWD) {
      myMotor->setSpeed(50);
      myMotor->run(BACKWARD);
    }
  } else {
    myMotor->run(RELEASE);
  }

  if (sensorPump == LOW) {
    myPump->setSpeed(100);
    myPump->run(FORWARD);
  } else {
    myPump->run(RELEASE);
  }
}