Hallo Leute,
ich sende an des Nextion fortlaufend MPU Daten und betätige eine Schaltfläche, diese wirkt als Taster "HIGH" im GEDRÜCKTEN Zustand, ungedrückt "LOW" . Beide Funktionen laufen einzeln problemlos, in Kombination werden die MPU Daten übertragen, verhindern jedoch die Nutzung der Tastfläche. Sicher ganz einfach zu lösen, ich finde als Frischling aber keinen Ansatz. Ich habe die vermutlich relevanten Zeilen mal mit ?????????????? markiert.
[code]
#include "Wire.h"
#include <MPU6050_light.h>
#include <SoftwareSerial.h>
//Nextion
SoftwareSerial nextion(10, 11); // RX, TX
String daten_display = "";
//Taster
bool help1, help2, help3, help4;
// Gyroanbindung
double mpuX = 0; //Hilfsvariable
double mpuY = 0;
int X_offset = 32; // X
int Y_offset = -61; //Y
int mapX ; //umgerechneter Ganzzahlenwert
int mapXX ; //umgerechneter Ganzzahlenwert zweites Fenster auf dem Nextion
int mapY ; //umgerechneter Ganzzahlenwert
int mapYY ; //umgerechneter Ganzzahlenwert zweites Fenster
MPU6050 mpu(Wire);
unsigned long timer = 0;
void setup() {
Serial.begin(9600);
nextion.begin(9600);
Wire.begin();
byte status = mpu.begin();
pinMode( 43 , OUTPUT);//Kopfteil heben
pinMode( 45 , OUTPUT);//Kopfteil senken
pinMode(7, INPUT);//INPUT_PULLUP
pinMode(8, INPUT);
}
void loop()
{
//MPU_Sensor
mpu.update();
mpuX = mpu.getAngleX() * 100;
mapX = map(mpuX, -9000.00, 9000.00, -900, 900);
mapX = mapX + X_offset;
mpuY = mpu.getAngleY() * 100;
mapY = map(mpuY, -9000.00, 9000.00, -900, 900);
mapY = mapY + Y_offset;
mapXX = mapX;
mapYY = mapY;
if ((millis() - timer) > 10) { // print data every 10ms //??????????????
nextion.print("mapX.val=");
nextion.print(mapX);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
// delay(50);
nextion.print("mapXX.val=") ;
nextion.print(mapXX);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
// delay(50);
nextion.print("mapY.val=");
nextion.print(mapY);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
// delay(50);
nextion.print("mapYY.val=") ;
nextion.print(mapYY);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
delay(50);
timer = millis();
//
// Serial.print("\tY : ");
// Serial.print(mpu.getAngleY());
// Serial.print("\tX : ");
// Serial.print(mpu.getAngleX());
// Serial.print("\tmpuY : " );
// Serial.print(mpuY);
// Serial.print("\tmapX : " );
// Serial.print(mapX);
// Serial.print("\tmapY : " );
// Serial.println(mapY);
//
}
delay(10);
if (nextion.available() > 0 ) { //??????????!!!!!!!!!!!!
daten_display += char (nextion.read());//??????????!!!!!!!!!!!!
}
// Kopfteil heben
if (daten_display == "kopfauf1") {
Serial.println("Kopfteil heben on");
delay(10);
help1 = HIGH;
daten_display = "";
}
if (daten_display == "kopfauf0") {
Serial.println("Kopfteil heben off");
delay(10);
help1 = LOW;
daten_display = "";
}
help2 = digitalRead(7);
if ( help1 | help2) {
digitalWrite( 43 , HIGH );
}
else digitalWrite(43, LOW);
// Kopfteil senken
if (daten_display == "kopfab1") {
Serial.println("Kopfteil senken on");
delay(10);
help3 = HIGH;
daten_display = "";
}
if (daten_display == "kopfab0") {
Serial.println("Kopfteil senken off");
delay(10);
help3 = LOW;
daten_display = "";
}
help4 = digitalRead(8);
if ( help3 | help4) {
digitalWrite( 45 , HIGH );
}
else digitalWrite(45, LOW);
delay (10);
}
[/code]