ARDUINO UNO + HC05 Master?

Moin, ich hab alles Mögliche versucht und chatGPT kann auch nicht helfen.
Ich kann alle AT-Befehle in den SerialMonitor schreiben und kriege antworten aber die Rolle ändert sich einfach nicht auf Master obwohl ich das schonmal geschafft hatte.
Ich kriege es nur hin auf 38400 baud zu kommunizieren, nichts anderes hat bisher für mich hingehauen. Ich hatte mit den PINS10 und 11 (bzw9HIGH) am meisten Erfolg aber naja ich bin nun für alles offen.

Also momentan habe ich VCC an 5V, GND an GND, RXD an Digital10, TXD an Digital11und EN an 3,3V (Vorher Digital9 auf HIGH und dort angeschlossen).
Er startet dann automatisch in dem AT-modus bei dem er langsam blinkt , mit Knopf gedrückt halten und dann starten habe ich es aber auch versucht.
Eingabe - Ausgabe:
AT - OK
AT+UART - +UART=38400,0,0 (Standard war 9600 obwohl ich nur auf 38400 mit ihm kommunizieren konnte, hab ihn jz aber umgestellt)
AT+PSWD - 4321 (Hatte versucht ob ich es ändern kann, ja geht)
AT+NAME - Master ( Hatte versucht ob ich es ändern kann, ja geht)

AT+ROLE=1 - OK

danach gibt AT+ROLE oder AT+ROLE? allerdings:

+ROLE:0
OK

Serial Monitor ist auf "Both NL&CR" "38400baud"

Hier ist mein (momentaner Code):

Wenn ich den Arduino neustarte kriege ich ein OK im SerialMonitor

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(38400);
  pinMode(9,OUTPUT);
  digitalWrite(9,HIGH);
  mySerial.begin(38400);
  delay(1000);
  mySerial.println("AT");

void loop() {
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Auf meinem HC-05 steht auf der Rückseite "ZS-040" keine Ahnung ob das Hilft.
Ich brauche das wirklich dringend also danke ich jedem der helfen kann, auch gerne über Discord. Lg

PC, Bluetooth, programmieren, Arduino, Code, PC-Problem, Raspberry Pi, Arduino Uno
Elektrotechnische Schaltung von Roboter Greifer mit Arduino?

Hallo Zusammen!

Ich habe ein Problem und komme nicht so recht weiter. Ich muss dazu gestehen, dass mir Elektrotechnik nicht so gut liegt und ich mich aber gerade mittels zahlreicher Tutorials und Internetbeiträgen zu mehr Wissen hinarbeite.

Mein Problem:

Ich habe einen Cobot, welcher mit 24V Betriebsspannung arbeitet. Ich wollte für diesen Cobot nun einen Greifer entwickeln, dieser soll mittels eines Servos öffnen und schließen. Die Mechanik des Greifers ist 3D gedruckt und funktioniert soweit. Der Cobot hat einen 24V Versorgungsausgang. Diesen möchte ich gerne zur Steuerung meines Arduino nutzen. Zudem verfügt der Cobot über 7 Digital Inputs und 7 Digital Outputs, wovon ich gerne einen oder zwei Outputs nutzen möchte, um das Signal zum Schließen und Öffnen zu realisieren. Leider fehlt es mir einfach an grundlegendem Verständnis.

Ich habe mal grob eine kleine Zeichnung meines Schaltkreisverständnisses aufgezeichnet (siehe Anhang).

Mein Plan ist es, ein Step-Down-Modul zu verwenden, um die Spannung von 24V auf 5V für den Arduino zu reduzieren. Dann würde ich den Digitalen Output des Roboters mit einem Optokoppler oder einem Spannungsteiler (hier verstehe ich noch nicht, wie ich einen Spannungsteiler in ein digitales Output-Signal von 24V einbaue) verbinden und in den Eingang des Arduino geben. Die Ansteuerung des Servos würde ich dann vom Arduino aus steuern. Ein Problem dabei ist, dass, soweit ich das richtig verstanden habe, der Servo mit 6V arbeitet und mein Arduino nur 5V liefern kann. Zudem verstehe ich in der gesamten Schaltung nicht, wieso ich den Strom nicht begrenzen muss. Ich reduziere zwar die Spannung für den Arduino, aber wieso muss ich nicht auch den Strom reduzieren bzw. woher weiß ich überhaupt, wie viel Ampere der Cobot liefert? Ich glaube, hier verstehe ich trotz zahlreicher Videos nicht den Zusammenhang zwischen Spannung und Strom.

Ich wäre sehr dankbar, wenn mir jemand bei meinem Problem helfen könnte und mir erklären könnte, wie ich meine Schaltung richtig aufbaue, um meinen Greifer mit dem Arduino zu steuern und dabei die richtigen Spannungs- und Stromwerte zu berücksichtigen.

Vielen Dank im Voraus!

Bild zu Frage
Roboter, Elektrik, Spannung, Arduino, Elektrizität, Physik, Schaltung
PONG?

mein unten angeführter Code funktioniert nicht richtig, kann irgendwer den fehler findenn es handelt sich um eine einfache version des spieles pongs das mit 8 leds und zwei tastern gespielt wird:

int led[8] = { 2, 3, 4, 5, 6, 7, 8, 9 };

int button[2] = { 10, 11 };

#define PRESSED LOW

#define OFF 0

#define ON 1

#define WAIT_TIME 1000

int status = 0;

unsigned long starttime = 0;

int i = 0;

void setup() {

  for (int i = 0; i < 2; i++) {

    pinMode(button[i], INPUT_PULLUP);

  }

  for (int i = 0; i < 8; i++) {

    pinMode(led[i], OUTPUT);

  }

}

void loop() {

  if ((i == 8) && (digitalRead(button[1]) == PRESSED))        status = 1;

  else if((digitalRead(button[1]) == PRESSED) && i!=8)        status = 2;

  if ((i == -1) && (digitalRead(button[0]) == PRESSED))        status = 0;

  else if((digitalRead(button[0]) == PRESSED) && i!=-1)       status = 2;

  if (millis() - starttime > WAIT_TIME) {

    switch (status) {

      case 0:

        digitalWrite(led[i], HIGH);

        digitalWrite(led[i - 1], LOW);

        i++;

        if (i == 9)             status = 2;

        break;

      case 1:

   

       

        digitalWrite(led[i], HIGH);

        digitalWrite(led[i + 1], LOW);

       i--;

        if (i == -2)            status = 2;

        break;

      case 2:

        for(int j = 0; j < 8; j++)

        {

          digitalWrite(led[j], HIGH);

        }

       

        break;

       

    }

    starttime = millis();

  }

}

Arduino, Array, Programmiersprache
Arduino Bildschirm kaputt?

Hallo ich habe einen Arduino Elegoo 2560, und wollte einen 2*16 LCD-Display nutzen. Jedoch ist mir aufgefallen, das er nichts anzeigt (siehe Bild). Ich hab schon alles versucht und weiß nicht wo das Problem liegt. Könnt ihr mir da weiterhelfen? Da es schlecht erkennbar ist, hab ich noch dazu geschrieben, welche Pins ich wie angeschlossen habe.

Code:

#include <LiquidCrystal.h> // Importiere die LiquidCrystal-Bibliothek

// Konfiguriere den Anschluss des LCD-Displays an den Arduino

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

 // Initialisiere das LCD-Display mit der Anzahl der Zeilen und Spalten

 lcd.begin(16, 2);

 // Setze den Cursor in die linke obere Ecke des Displays

 lcd.setCursor(0, 0);

 // Gib den Text "Hello, World!" aus

 lcd.print("Hello, World!");

}

void loop() {

 // Setze den Cursor in die untere linke Ecke des Displays

 lcd.setCursor(0, 1);

 // Gib die Anzahl der Millisekunden seit dem Start des Sketches aus

 lcd.print(millis());

 // Warte für eine Sekunde, bevor die Schleife erneut ausgeführt wird

 delay(1000);

}

Pins:

  LCD Pin  | Function | Arduino Pin

----------------------------------------

    1   |   GND  |   GND

    2   |   +5V  |   +5V

    3   | V0 (Pot) | Potentiometer

    4   |   RS   | Digital Pin 12

    5   |   RW   |   GND

    6   |   E   | Digital Pin 11

    7   |   D0   |    -

    8   |   D1   |    -

    9   |   D2   |    -

   10   |   D3   |    -

   11   |   D4   |  Digital Pin 5

   12   |   D5   |  Digital Pin 4

   13   |   D6   |  Digital Pin 3

   14   |   D7   |  Digital Pin 2

   15   |   A   |   +5V

   16   |   K   |   GND

Bild zu Frage
PC, Elektrik, Arduino, LED, Physik
expected ';' before numeric constant?

Hallo!

Für mein Spalierobst habe ich eine Bewässerung gebaut. Das Wasser ist in einem hoch gestellten Gartenfass. Über einen selbst gebauten Dauermagnet-Wasserhahn soll das gesammtelte Wasser in Abhängigkeit der Bodenfeuchtigkeit in ein Schläuchlein mit Tropfern fließen, und so den Boden befeuchten

Ein Arduino soll über einen Servo das Stellen realisieren.

Ist der Boden zu trocken, ermittelt das ein capazitiver Soil Moisture Sensor v2.0. Ein Servo schwenkt einen an ihm befestigten Dauermagnet über die Stelle des Dauermagnet-Wasserhahnes, unter dem ein Dauermagnet-Ventil angezogen wird.Somit ist der Weg des Wassers frei.

Ist der Boden feucht genug, schwenkt der Servo seinen Magneten zurück in die Ausgansposition. Das Dauermagnet-Ventil fällt und schließt die Wasserzufuhr.

Schön wäre, wenn der Servo zwischen den Aktionen stromlos sein könnte. Das bekomme ich auch nicht hin.

Ein Arduino soll die Regelung übernehmen.

Vielen Dank Demjenigen, der mir helfen kann.

Mein bisheriger Code ist im folgendem Foto.

#include<Servo.h>

Servo S;

const int SensorPin = A0;

void setup() {

 Serial.begin(9600);

 pinMode (A0, INPUT);

 S.attach(9);

}

void loop() {

               // serieller Monitor geht nicht mit { } hinter if

  int analogWert = analogRead(A0); // Auslesen des analogen Sensorwertes

 Serial.println(analogWert);   // Ausgabe des Wertes auf der seriellen Konsole

 delay(1000); 

 if (analogRead(A0)> 270) // zu trocken   

  {S.write (65);  //Servo geh auf 65 GRad //dies geht nicht 

 delay(6000);}//pendelt 0 -- 65 -- 0 im 6000, 500 Takt

 //Wenn delay (6000) deaktiviert wird geht nichts mehr!

 

 else (analogRead(A0)< 260) ; // zu nass - dies funktioniert

  S.write (0); //Servo geh auf 0 Grad

  delay (500);

  }

Der Code wird kompilliet, aber funktioniert noch nicht zufriedenstellend.

Bild zu Frage
Arduino, C (Programmiersprache)
Arduino gyro inakkurat?

Servus. Ich bin gerade an einem Projekt für das ich einen Sensor brauche der die Orientierung und die G Kräfte misst. Bin noch komplett am Anfang, aber scheitere hier schon.

Mein teurer BMI088 V1.0 bringt sehr variierende Werte. Sieht eigentlich schon fast willkürlich aus, aber reagiert auf bewegungen.

Ist es mein Code der Falsch ist? Bin jetzt schon seit über 2 Stunden dran und so weit gekommen bis jetzt:

#include "BMI088.h"
#include "SensorFusion.h" //SF
SF fusion;

float deltat;
float pitch, roll, yaw;

float ax = 0, ay = 0, az = 0;
float gx = 0, gy = 0, gz = 0;

float gx_all;
float gy_all;
float gz_all;
float ax_all;
float ay_all;
float az_all;

BMI088 bmi088( 0x19, 0x69 );


void setup(void) {
    Wire.begin();
    Serial.begin(115200);
    Serial.println("Bereit");
    while (!Serial);
    Serial.println("BMI088 Raw Data");
    

    while (1) {
        if (bmi088.isConnection()) {
            bmi088.initialize();
            Serial.println("BMI088 is connected");
            break;
        } else {
            Serial.println("BMI088 is not connected");
        }

        delay(2000);
    }
}

void loop(void) {
    bmi088.getAcceleration(&ax, &ay, &az);
    bmi088.getGyroscope(&gx, &gy, &gz);

/*
    Serial.print(ax);
    Serial.print("(ax), ");
    Serial.print(ay);
    Serial.print("(ay), ");
    Serial.print(az);
    Serial.print("(az), ");

    Serial.print(gx);
    Serial.print("(gx), ");
    Serial.print(gy);
    Serial.print("(gy), ");
    Serial.print(gz);
    Serial.print("(gz), ");

    Serial.println();
*/

//Nimmt den Mittelwert aus 10000 Messungen
for (int i = 0; i < 10000; i++) {
  gx_all = gx_all + gx;
  gy_all = gy_all + gy;
  gz_all = gz_all + gz;
  ax_all = ax_all + ax;
  ay_all = ay_all + ay;
  az_all = az_all + az;
}

  Serial.println("Fertig :");
    gx_all = gx_all / 10000;
    gy_all = gy_all / 10000;
    gz_all = gz_all / 10000;
    ax_all = ax_all / 10000;
    ay_all = ay_all / 10000;
    az_all = az_all / 10000;

    deltat = fusion.deltatUpdate();
    fusion.MahonyUpdate(gx_all, gy_all, gz_all, ax_all, ay_all, az_all, deltat);

    pitch = fusion.getPitch();
    roll = fusion.getRoll();
    yaw = fusion.getYaw();

    Serial.print("Pitch: ");
    Serial.print(pitch);
    Serial.print(", Roll: ");
    Serial.print(roll);
    Serial.print(", Yaw: ");
    Serial.print(yaw);
    Serial.println();
    delay(1);
}

Und wenn ich gerade schon dabei bin, ich finde online über den BMI088 in kombination mit einem Arduino fast nichts. Wie bekomme ich die Beschleunigung und die wirkenden G Kräfte?

Danke und Grüße, Leo

Arduino

Meistgelesene Fragen zum Thema Arduino