- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 13

Thema: Motoren per Bluetooth ansteuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Gleicher Pin für Bluetooth und Motor Treiber geht nicht. Das musst du umverkabeln zum Beispiel auf Pin 2 und 4.
    Nach der Doku zum Bluetooth Mate läuft das Modul per Default mit 115,2 kBaud, nicht 9600 Baud. Oder hast du die Baudrate des Modul umgestellt?
    Die Bluetooth Verbindung kann man mit diesem Sketch und 2 offenen Terminal Verbindungen (USB und Bluetooth) testen (Pins und Baudraten entsprechend anpassen).

  2. #2
    Ja, ich habe die Baud-Rate umgestellt aber auch bei 115200 Baud ändert sich nichts, auch bei der Umänderung der Pins gibt es keine Veränderung. Die Bluetooth Verbindung funktioniert einwandfrei.

    ToastCrafterHD

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    In deinem Arduino Sketch fehlt noch die Initialisierung der Bluetooth Schnittstelle. Und gelesen wird auch nur von der USB Schnittstelle. Über USB müsste dein Programm funktionieren.

  4. #4
    Ü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)

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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);
      }
    ...

  6. #6
    Danke soweit funktioniert es super

    ToastCrafterHD
    Geändert von Anonym (07.02.2016 um 19:48 Uhr)

  7. #7
    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:
    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);     
     }
    }
    und mein Processing Code:
    Code:
    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');
         }
      }
    }
    Danke schon mal
    ToastCrafterHD

Ähnliche Themen

  1. 8 Motoren ansteuern
    Von hunikuni im Forum Motoren
    Antworten: 7
    Letzter Beitrag: 22.05.2012, 09:49
  2. ansteuern von 10(und mehr) motoren
    Von darkangel1208 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 13.04.2009, 18:02
  3. 2 Motoren ansteuern
    Von addict im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 18.03.2005, 16:36
  4. Motoren ansteuern
    Von linosius im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 07.02.2005, 18:53
  5. 3V Motoren mit 12V PWM ansteuern?
    Von BlackBox im Forum Motoren
    Antworten: 11
    Letzter Beitrag: 30.07.2004, 07:08

Berechtigungen

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

Labornetzteil AliExpress