Über USB funktioniert mein Programme gut, muss ich es für Bluetooth wie folgt abändern ?
Code:#include <SoftwareSerial.h> char val; const int pwmA = 3; const int pwmB = 11; const int brakeA = 9; const int brakeB = 8; const int dirA = 12; const int dirB = 13; int bluetoothTx = 2; int bluetoothRx = 4; SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); void setup() { pinMode(dirA, OUTPUT); pinMode(brakeA, OUTPUT); pinMode(dirB, OUTPUT); pinMode(brakeB, OUTPUT); Serial.begin(115200); } void loop() { { if (bluetooth.available()) { Serial.print((char)bluetooth.read()); } if (Serial.available()) { bluetooth.print((char)Serial.read()); } } if ( val == 'S' ) { digitalWrite(pwmA, 255); digitalWrite(dirA, LOW); digitalWrite(brakeA, LOW); digitalWrite(pwmB, 255); digitalWrite(dirB, HIGH); digitalWrite(brakeB, LOW); } delay(100); if (val == 'W') { digitalWrite(pwmA, 255); digitalWrite(dirA, LOW); digitalWrite(brakeA, LOW); digitalWrite(pwmB, 255); digitalWrite(dirB, HIGH); digitalWrite(brakeB, LOW); Serial.println("Vorwaerts 100%."); } delay(100); if (val == 'S') { digitalWrite(pwmA, 255); digitalWrite(dirA, HIGH); digitalWrite(brakeA, LOW); digitalWrite(pwmB, 255); digitalWrite(dirB, LOW); digitalWrite(brakeB, LOW); Serial.println("Rueckwaerts 100%."); } delay(100); if (val == 'A') { digitalWrite(pwmA, 255); digitalWrite(dirA, LOW); digitalWrite(brakeA, LOW); digitalWrite(pwmB, 255); digitalWrite(dirB, LOW); digitalWrite(brakeB, LOW); Serial.println("Nach links drehen"); } delay(100); if (val == 'D') { digitalWrite(pwmA, 255); digitalWrite(dirA, HIGH); digitalWrite(brakeA, LOW); digitalWrite(pwmB, 255); digitalWrite(dirB, HIGH); digitalWrite(brakeB, LOW); Serial.println("Nach rechts drehen"); } if (val == '0') { digitalWrite(pwmA, 0); digitalWrite(pwmB, 0); Serial.println("Motoren aus"); } }
Geändert von Anonym (29.01.2016 um 13:38 Uhr)
Es fehlt die Initialisierung der Bluetooth Softserial Schnittstelle. Ebenso stimmt die Abfrage in der loop() Funktion nicht:
Code:... Serial.begin(115200); bluetooth.begin(9600); } void loop() { { if (bluetooth.available()) { val = bluetooth.read(); Serial.print(val); } else if (Serial.available()) { val = Serial.read(); bluetooth.print(val); } ...
Danke soweit funktioniert es super
ToastCrafterHD
Geändert von Anonym (07.02.2016 um 19:48 Uhr)
Da mein erstes Shield meine starken Motoren nicht auf Dauer aushält, habe ich mir jetzt das Pololu Dual VNH5019 Motor Driver Shield for Arduino
gekauft (https://www.pololu.com/product/2507). Diese funktioniert super und schaft die Motore mit links aber ich kann es nur über USB steuern und nicht über Bluetooth. Wo liegt mein Fehler?
Mein Arduino Code:
und mein Processing Code:Code:#include <DualVNH5019MotorShield.h> #include <SoftwareSerial.h> char val; int i = 100; int o = -100; int p = 0; int bluetoothTx = 2; int bluetoothRx = 4; SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); DualVNH5019MotorShield md; void setup() { md.init(); Serial.begin(115200); bluetooth.begin(115200); } void loop() { { if (bluetooth.available()) { val = bluetooth.read(); Serial.print(val); } else if (Serial.available()) { val = Serial.read(); bluetooth.print(val); } } // anfang motor steuerung if (val == 'W') { md.setM1Speed(i); md.setM2Speed(i); } if (val == '0') { md.setM1Speed(p); md.setM2Speed(p); } if (val == 'S') { md.setM1Speed(o); md.setM2Speed(o); } if (val == 'A') { md.setM1Speed(i); md.setM2Speed(o); } if (val == 'D') { md.setM1Speed(o); md.setM2Speed(i); } }
Danke schon malCode:import processing.serial.*; Serial port; int val; void setup() { size(200, 200); port = new Serial(this, "COM7", 115200); } void draw() { if (keyPressed) { if(key == CODED){ if (keyCode == UP) { port.write('W'); } if (keyCode == DOWN) { port.write('S'); } if (keyCode == RIGHT) { port.write('D'); } if (keyCode == LEFT) { port.write('A'); } } if (key == '0') { port.write('0'); } } }
ToastCrafterHD
Das Dual VNH5019 Motor Driver Shield verwendet Pin 2 und 4. Das überschneidet sich mit den Bluetooth Pins. Pin 3 und 5 wären noch frei.
Lesezeichen