Bluetooth Anfängerfrage

Hallo alle zusammen ,

ich bin absoluter Arduino Neuling und komm momentan nicht ganz weiter.
Ziel des Testprogrammes. Das Prgramm soll solange nichts machen bis ich einen Taster betätige ODER die den Button per App, eine LED dient mir dazu zu sehen ob das Signal übermittelt wird.
Wenn ich mein Programm durchlaufen lasse und meine AppInventorApp dann funktionieren bei mir die Funktionen zwar getrennt,also die while Bedingung(Taster) oder die Bluetoothsteuerung.
Bluetooth oder App ist so, dass ich 2 Buttons habe(einmal On und OFF)die App übermittelt dabei das char a und b.

float x_kalib=0; // Benennung von x als Variable für den Sensorwert der x-Achse
float y_kalib=0; // Benennung von y als Variable für den Sensorwert der y-Achse
float z_kalib=0; // Benennung von z als Variable für den Sensorwert der z-Achse
float x_messure=0; // Benennung von x als Variable für den Sensorwert der x-Achse
float y_messure=0; // Benennung von y als Variable für den Sensorwert der y-Achse
float z_messure=0; // Benennung von z als Variable für den Sensorwert der z-Achse
float x_diff=0; // Differenz von x als Variable für den Sensorwert der x-Achse
float y_diff=0; // Differenz von y als Variable für den Sensorwert der y-Achse
float z_diff=0; // Differenz von z als Variable für den Sensorwert der z-Achse
float taster=7; //Das Wort „taster“ steht jetzt für den Wert 7.
float tasterstatus=0; //Das Wort „tasterstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht.
int i=0;
float gewicht=0;
int led=13;

void setup() 
{
Serial.begin (9600); // Start der seriellen Verbindung für den serial monitor.
x_kalib=analogRead(A0); // Auslesen des Sensorwertes der x-Achse
y_kalib=analogRead(A1); // Auslesen des Sensorwertes der y-Achse
z_kalib=analogRead(A2); // Auslesen des Sensorwertes der z-Achse
pinMode(led,OUTPUT);//LED ansteuern (PIN13)

pinMode(taster, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.


Serial.print ("x_kalib:"); // Ausgabe von kalibrierten Wert
Serial.print (x_kalib);
Serial.print ("    "); // Ausgabe von vier Leerzeichen
Serial.print ("y_kalib:");
Serial.print (y_kalib); // Ausgabe des Sensorwertes der y-Achse an den serial monitor
Serial.print ("    "); // Ausgabe von vier Leerzeichen
Serial.print ("z_kalib:");
Serial.print (z_kalib); // Ausgabe des Sensorwertes der z-Achse an den serial monitor und Zeilenumsprung durch den Befehl "Serial.println"
Serial.println ();
delay(1000); // Wartezeit zwischen den einzelnen Ausgaben der Sensorwerte
}

void loop() {

  if(Serial.available());
  {
    char data=Serial.read();
    if(data=='a')
    {
      digitalWrite(13,HIGH);
    }
    else if (data=='b')
    {
      digitalWrite(13,LOW);
    }
  }

  delay(5000);//Warten
  
Serial.println("kalibrieren");
  while (tasterstatus=digitalRead(taster)==0); 

    Serial.println("bitte beladen");
  while (tasterstatus=digitalRead(taster)==0); //Hier wird der Pin7 ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „tasterstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.
//if (tasterstatus == HIGH)//Verarbeitung: Wenn der taster gedrückt ist (Das Spannungssignal ist hoch)
    for (int i=0;i<5;i++){
  
    x_messure=analogRead(A0); // Auslesen des Sensorwertes der x-Achse
    y_messure=analogRead(A1); // Auslesen des Sensorwertes der y-Achse
    z_messure=analogRead(A2); // Auslesen des Sensorwertes der z-Achse
    Serial.print (x_messure); // Ausgabe des Sensorwertes der x-Achse an den serial monitor
    Serial.print ("    "); // Ausgabe von vier Leerzeichen
    Serial.print (y_messure); // Ausgabe des Sensorwertes der y-Achse an den serial monitor
    Serial.print ("    "); // Ausgabe von vier Leerzeichen
    Serial.println (z_messure); // Ausgabe des Sensorwertes der z-Achse an den serial monitor und Zeilenumsprung durch den Befehl "Serial.println"
    delay(100); // Wartezeit zwischen den einzelnen Ausgaben der Sensorwerte
    }
  
   
  x_diff=abs(x_kalib-x_messure);//Differenz aus start und endwert
  y_diff=abs(y_kalib-y_messure);//Differenz aus start und endwert
  z_diff=abs(z_kalib-z_messure);//Differenz aus start und endwert
  Serial.print ("x_diff:"); // Ausgabe von kalibrierten Wert
  Serial.print (x_diff);
  Serial.print ("    "); // Ausgabe von vier Leerzeichen
  Serial.print ("y_diff:");
  Serial.print (y_diff); // Ausgabe des Sensorwertes der y-Achse an den serial monitor
  Serial.print ("    "); // Ausgabe von vier Leerzeichen
  Serial.print ("z_diff:");
  Serial.print (z_diff); // Ausgabe des Sensorwertes der z-Achse an den serial monitor und Zeilenumsprung durch den Befehl "Serial.println"
  Serial.println ();
  delay(1000); // Wartezeit zwischen den einzelnen Ausgaben der Sensorwerte

/*else
/*{
  Serial.print("tarabefehl!!!");
  Serial.println();
  delay(5000);
  }*/
  Serial.println("Das Gewicht Betraegt:");Serial.print("  ");Serial.print(gewicht);
  gewicht=(x_diff + y_diff + z_diff);

  Serial.println();
  while(tasterstatus=digitalRead(taster)==1);
  
  }

ich habe folgendes versucht bzw mir überlegt,was in Kombination allerdings leider nicht funktioniert
while((tasterstatus=digitalRead(taster)==0||(data!=a));

Kommt es da zu einer Signalüberschneidung? Weil wenn ich den Taster drücke, läuft das Prgramm, allerdings zeigt sich beim Bluetooth keinerlei Reaktionen.

Hab auch versucht den HC06 an Pin 2 und 3 anzuschließen/deklarieren, gleiches Spiel. In Kombination funktioniert es dann nicht mehr.

#include <SoftwareSerial.h>                          
SoftwareSerial HC06(2,3); 

// Constants
#define DELAY 1000 // Delay between two measurements in ms

// Parameters
float sensorPin = A0; // Pin connected to sensor

// Variables
float gewicht, uberladen;

void setup(void) {
  Serial.begin(9600);
  HC06.begin(9600);
}

wäre für Tipps und Hinweise sehr dankbar.

Gruß Marvin

Die serielle Schnittstelle wird zum Programmieren des Atmega328 genutzt, sowie auch für den seriellen Monitor. Dann kannst du die D0 und D1 nicht für das Bluetooth-Modul einsetzen.

Mit einer weiteren seriellen (SoftwareSerial) sollte es allerdings funktionieren.
Die Aussage "In Kombination funktioniert es dann nicht mehr." hilft uns da nicht weiter.

Da solltest du schon genauere Angaben machen.

hier im forum hast du vermutlich schon mehrfach gelesen, dass delay dir den ganzen ablauf aufhält. deshalb ist es besser mit millis zu arbeiten. und immer nach den gewünschten Zeitabständen die aufgabe auslöst.

als erstes solltest du dir eine funktion basteln, die nur die ausgabe der sensorwerte übernimmt, ohne delay.
das delay im setup muss auch raus.

wenn du das hast, dann gehts weiter mit:

  1. timer zurazurausgabe der programmieren
  2. taster entprellen
  3. ggf. optimierung das einlesen von serial.

versuche nicht alles in setup und loop rein zu klatschen, erstelle dir kleine funktionen. dann wirds auch übersichtlicher.