Wizard91:
Möglicherweise kann man den Code noch vereinfachen, aber zumindest funktioniert er so wie von mir beabsichtigt
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);
}
}