- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: MPU6050 und bluetoothverbindung über HC05

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    also ohne mpu verwende ich die kombination sehr oft, hier z.b. werden an der gleichen hardware die radencoder ausgelesen und ausgegeben. Funktioniert mit serial, wie auch mit serial1. Gerade noch einmal getestet...
    Code:
    #include "Arduino.h"
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>
    #include <Wire.h>
    #include <Adafruit_MotorShield.h>
    #define encoder_A 2
    #define encoder_B 3
    
    uint8_t i, speed, s_speed, m_speed, b_speed;
    
    int wert_encoder_[] = {1, 2};
    int mehrfach_enc_zaehler_[] = {1, 2};
    int summe_encoder_[] = {1, 2};
    int vorwaerts_[] = {1, 2};
    
    unsigned long dauer_servo, dauer_fahrt, currentMillis, previousMillis;
    
    Adafruit_MotorShield AFMS = Adafruit_MotorShield();
    
    Adafruit_DCMotor *motor_A = AFMS.getMotor(3);//
    Adafruit_DCMotor *motor_B = AFMS.getMotor(4);//
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    
    void setup()
    {
    Serial.begin(115200);
      Serial1.begin(115200);
    
      lcd.begin(16, 2);
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.setBacklight(HIGH);
      lcd.print("alle_mot_enc_1");
      lcd.setCursor(0, 1);
      lcd.print("ausl_li_re");
      delay(2000);
      lcd.clear();
    
      pinMode(encoder_A, INPUT_PULLUP);
      pinMode(encoder_B, INPUT_PULLUP);
    
    s_speed = 100;
      m_speed = 150;
      b_speed = 200;
      speed = 150;
    
    for (i = 1; i < 2; i++)
    {
        vorwaerts_[i] = 1;
        wert_encoder_[i] = 0;
        mehrfach_enc_zaehler_[i] = 0;
      }
    
      AFMS.begin();
    }
    
    void loop()
    {
    if (vorwaerts_[1] == 1) rueckwaerts();
      else vorwaerts();
    }
    
    void motor_stop(void)
    {
      motor_A->setSpeed(0);
      motor_B->setSpeed(0);
      motor_A->run(BRAKE);
      motor_B->run(BRAKE);
      motor_A->run(RELEASE);
      motor_B->run(RELEASE);
      delay(250);
      summe_encoder_[1] = 0;
    }
    
    
    void rueckwaerts(void)
    {
      motor_A->setSpeed(speed);
      motor_B->setSpeed(speed);
      motor_A->run(BACKWARD);
      motor_B->run(BACKWARD);
      encoder_auslesen_A();
    
      if (summe_encoder_[1] >= 100)
    
      {
        summe_encoder_[1] = 0;
        vorwaerts_[1] = 0;
        motor_stop();
      }
    }
    
    
    void vorwaerts(void)
    {
      motor_A->setSpeed(speed);
      motor_B->setSpeed(speed);
      motor_A->run(FORWARD);
      motor_B->run(FORWARD);
      encoder_auslesen_A();
    
      if (summe_encoder_[1] <= -100) //>= 100)
      {
        summe_encoder_[1] = 0;
        vorwaerts_[1] = 1;
        motor_stop();
      }
    }
    
    
    void encoder_auslesen_A(void)
    {
      wert_encoder_[1] = digitalRead(encoder_A);
      if (vorwaerts_[1] == 1)
      {
        if (wert_encoder_[1] == 0 && mehrfach_enc_zaehler_[1] == 0)
        {
          mehrfach_enc_zaehler_[1] = 1;
        }
        else if (wert_encoder_[1] == 1 && mehrfach_enc_zaehler_[1] == 1)
        {
          mehrfach_enc_zaehler_[1] = 0;
          summe_encoder_[1] = (summe_encoder_[1] + wert_encoder_[1]);
          Serial.print(wert_encoder_[1]);
          Serial.print("    ");
          Serial.println(summe_encoder_[1]);
          Serial1.print(wert_encoder_[1]);
          Serial1.print("    ");
          Serial1.println(summe_encoder_[1]);
        }
      }
      else
      {
        if (wert_encoder_[1] == 0 && mehrfach_enc_zaehler_[1] == 0)
        {
          mehrfach_enc_zaehler_[1] = 1;
        }
        else if (wert_encoder_[1] == 1 && mehrfach_enc_zaehler_[1] == 1)
        {
          mehrfach_enc_zaehler_[1] = 0;
          summe_encoder_[1] = (summe_encoder_[1] - wert_encoder_[1]); //+
          Serial.print(wert_encoder_[1]);
          Serial.print("    ");
          Serial.println(summe_encoder_[1]);
          Serial1.print(wert_encoder_[1]);
          Serial1.print("    ");
          Serial1.println(summe_encoder_[1]);
        }
      }
    }
    gruß inka

  2. #2
    HaWe
    Gast
    ok, dann muss ich passen, ich kenne auch deine mpu libs nicht.

Ähnliche Themen

  1. Bluetoothmodul HC05 braucht manchmal ein Startsignal?
    Von fredyxx im Forum Arduino -Plattform
    Antworten: 8
    Letzter Beitrag: 30.01.2017, 09:05
  2. MPU6050 abfragen/auslesen
    Von Julian Werner im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 17.07.2014, 17:03
  3. Gyroskop Offset Kompensation (MPU6050)
    Von malthy im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 01.01.2014, 18:16
  4. MPU6050 mit Atmega32
    Von Kreata im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 21.04.2013, 23:03
  5. [ERLEDIGT] MPU6050 Initialisieren mit dem Netduino
    Von Robo-Hero im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 05.02.2013, 12:02

Berechtigungen

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

Solar Speicher und Akkus Tests