Hallo da draussen,
Ich möchte eine BT Fernbedinung bauen mit dem ich einen anderen BT Empfänger steuern kann.
Der Empfänger ist ein UNO mit einem HC05.
Der Sender soll ein Nano mit ebenfalls einem HC05 sein.
Zur Zeit steuere ich den Empfänger mit dem Handy.
Habe mir das senden so vorgestellt:
Beim Uno sind das die Pins für Serial, was soll da SoftSerial ?
Hast du die Verbindung zwischen den beiden Bluetooth Geräten hergestellt?
Das hat jetzt garnix mit BT zu tun:
Der Sketch sendet permanent, aber erst wenn er erstmals was empfangen hat.
Und dann jede Sekunde "gr" (mit 100 ms Verzögerung zwischen 'g' und 'r') Hab ich nicht ausprobiert, nur geraten
Habe mich jetzt ein wenig belesen. Werde aber nicht ganz schlau aus den Mengen an Daten.
Muss ich pin 34 vom HC05 noch auf Vcc legen oder reicht es aus den ROLE-WErt auf 1 zu setzen?
Auch mit der konfiguration des Moduls habe ich noch schwierigkeiten. Ich kann hier zB. kein PIN setzen.
Habe jetzt folgende Einstellungen veränder:
SLave:
AT+NAME=HC05_Slave
AT+ROLE=0
Master:
AT+NAME=HC05_Master
AT+ROLE=1
AT+BIND
Also ich noch mal.
Die verbindung funktioniert so weit einwandfrei.
Mit folgendem Scetch lässt sich der Slave über den Seriellen Monitor Streuer:
#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX
// Connect the HC-05 TX to Arduino pin 2 RX.
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider.
char c = ' ';
void setup()
{
// start the serial communication with the host computer
Serial.begin(9600);
Serial.println("Arduino with HC-05 is ready");
// start communication with the HC-05 using 9600
BTserial.begin(9600);
Serial.println("BTserial started at 9600");
}
void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTserial.available())
{
c = BTserial.read();
Serial.write(c);
}
// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available())
{
c = Serial.read();
BTserial.write(c);
}
}
Ich gebe dort den Text rot ein und die rote LED geht an so wie gewünscht.
Jetzt möchte ich aber das sie via Tastendruck angeht wie halt bei einer Fernbedinung.
Meine überlegung war c = Serial.read(); so abzuwandeln das c mit einem "Kommandostring gefüllt wird. Leider versagen hier meine dürftigen Künste.
Irgend welche Vorschläge?
Beachte die Unterschiede zwischen print statt write und " statt '
( Hier würde übrigens sogar .write("rot"); gehen, aber die Unterschiede zwischen write und print solltest du kennen. )
habe hier schon einiges probiert:
.write("rot")
.write('rot')
.print("rot")
.print('rot')
.println("rot")
.println('rot')
auch habe ich schon mit verschiedenen Variablen herumgetestet.
Im Slavemodul werden die empfangenen Datan so ausgewertet:
Und Nein der Unterschied ist mir nicht wirklich klar aber ich währe dir für eine kurze Erleuterung Dankbar.
Habe schon überlegt den Slavecode an zu passen so das nur ein Zeichen benötigt wird. Glaube aber das es auch so gehen muss.
Der Vergleich geht so nicht, wenn btData ein char array ist. Aber wie schon gesagt, den Teil des Sketches mit den Variablendefinitionen hast du ja nicht gezeigt.
Und Arduino String Objekte sind nie eine gute Idee. Nur halt einfach am Anfang.