Arrg... Soweit so gut. Erstmal vielen dank eure Ratschlägen haben mich schon mal ein stück weiter gebracht.
Einzel funktionieren die Motoren soweit, jedoch wenn ich beide Motoren gleichzeitig drehen lassen will dreht nur wieder der eine von Pin 4 und 6.
Hier noch mal der Quelltext:
#include <XBOXRECV.h>
// Satisfy IDE, which only needs to see the include statment in the ino.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
USB Usb;
XBOXRECV Xbox(&Usb);
int motor1_A=8;
int motor1_B=7;
int motor1_Speed=9;
int motor2_A=5;
int motor2_B=6;
int motor2_Speed=3;
int a=0;
int b=0;
void setup() {
Serial.begin(115200);
while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); //halt
}
Serial.print(F("\r\nXbox Wireless Receiver Library Started"));
pinMode(motor1_A,OUTPUT);
pinMode(motor1_B,OUTPUT);
pinMode(motor2_A,OUTPUT);
pinMode(motor2_B,OUTPUT);
}
void loop() {
Usb.Task();
if (Xbox.XboxReceiverConnected) {
for (uint8_t i = 0; i < 4; i++) {
if (Xbox.Xbox360Connected[i]) {
if (Xbox.getButtonPress(L2, i) && Xbox.getButtonPress(R2, i)) {
// Serial.print("L2: ");
// Serial.print(Xbox.getButtonPress(L2, i));
// Serial.print("\tR2: ");
// Serial.println(Xbox.getButtonPress(R2, i));
//Xbox.setRumbleOn(Xbox.getButtonPress(L2, i), Xbox.getButtonPress(R2, i), i);
a = 255;
b = 255;
Serial.print("a=");
Serial.print(a);
Serial.print(" b=");
Serial.println(b);
}
else if (Xbox.getButtonPress(L2, i) < Xbox.getButtonPress(R2, i)){
a = 255;
b = 0;
Serial.print("a=");
Serial.print(a);
Serial.print(" b=");
Serial.println(b);
}
else if (Xbox.getButtonPress(L2, i) > Xbox.getButtonPress(R2, i)){
// motor1
a = 0;
b = 255;
Serial.print("a=");
Serial.print(a);
Serial.print(" b=");
Serial.println(b);
}
else{
// motor1
a=0;
b=0;
Serial.print("a=");
Serial.print(a);
Serial.print(" b=");
Serial.println(b);
}
if (Xbox.getButtonClick(A, i))
Serial.println(F("A"));
}
}
}
// motor1
digitalWrite(motor1_A,HIGH); // A = HIGH and B = LOW means the motor will turn right
digitalWrite(motor1_B,LOW);
analogWrite(motor1_Speed,a); // speed counts from 0 to 255
// motor2
digitalWrite(motor2_A,HIGH); // A = HIGH and B = LOW means the motor will turn right
digitalWrite(motor2_B,LOW);
analogWrite(motor2_Speed,b); // speed counts from 0 to 255
}