Hallo,
ich habe zwei Arduinos. Einer soll Zahlenwerte mit einem HC-05 auf den anderen senden, der mit einem HC-06 ausgestattet ist.
Ich habe beide Sketch soweit gebracht, dass der HC-05 einen Zahlenwert aus einem String in einen float umwandelt und dann ziffer für ziffer rüber schickt.
Der HC-06 empfängt diese dann auch.
Aber wenn ich das dann auf dem Ic2-Display(4x20) ausgeben will, wird immer nur die aktuell gesendete Ziffer angezeigt. Nicht die ganze Zahl.
Meine Frage ist jetzt, wie kann ich die ganze Zahl in einem Schlag schicken?
Hier ist der Sketch vom Slave:
#include <SoftwareSerial.h>
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27, 20, 4); //Hier wird festgelegt um welches Display es sich handelt
#define ledPin 13
#define rxPin 0
#define txPin 1
SoftwareSerial btSerial(rxPin, txPin);
char btData;
void setup()
{
Serial.begin(9600); //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
pinMode(13,OUTPUT); //PIN 13 wird als Ausgang festgelegt
lcd.init(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung einschalten
}
void loop()
{
if(Serial.available()) //wenn Daten empfangen werden...
{
btData = Serial.read(); //..sollen diese ausgelesen werden
Serial.print(btData); //Schreiben der Empfangenen Daten
digitalWrite(ledPin,HIGH); //Anzeige zur Verbindungsüberprüfung
lcd.setCursor(0, 0); //Den Cursor an den Anfang setzen
lcd.print(btData); //Das erste Zeichen auf dem Display anzeigen
delay(1000); //1 sec. warten
lcd.setCursor(1, 0); //Den Cursor auf das nächste Zeichen setzen
lcd.print(btData); //Die nächste Ziffer ins Display schreiben
delay(1000); //warten ... u.s.w
lcd.setCursor(2, 0);
lcd.print(btData);
delay(1000);
lcd.setCursor(3, 0);
lcd.print(btData);
delay(1000);
lcd.setCursor(4, 0);
lcd.print(btData);
delay(5000);
}
}
Das ist der Sketch vom Master:
String btData = ""; //Definition des Strings für die Messwerte
#include <SoftwareSerial.h>
#define ledPin 13
#define rxPin 0
#define txPin 1
SoftwareSerial btSerial(rxPin, txPin);
void setup()
{
btSerial.begin(9600);
while (!Serial)
{
; // Warte auf serielle Kommunikation
}
btSerial.println("bluetooth available");
}
void loop()
{
if (btSerial.available())
{
btData=12.2;
Serial.println(btData.toFloat());
btSerial.println(btData);
// clear the string for new input:
btData = "";
digitalWrite(ledPin, HIGH);
delay(1000);
}
}
Gruß
Adruinoboy