Hallo zuammen,
ich habe ein seltsames Problem.
Meine Bluetoothsteuerung macht nach dem einschalten seltsame Dinge.
Wenn ich eine "3" über ein Terminalprogramm schicke dann wird erst die "else" schleife durchlaufen. Allerding nur nach einem Neustart. Danach läuft alles wie es soll und ich habe keine Probleme mehr.
Obwohl der Aufbau bei "2" ähnlich ist, hab ich hier keine Probleme.
2, 4, 6 keine Probleme
1, 3, 5 Problem
Aber wie gesagt nur nach einem Neustart und dann einmalig.
Wenn ich die fälle einmal durchgegangen bin läuft das Programm wie es soll.
Hardware:
Ardunio mini 5V variante ohne USB
bluetooth hc-05
else if (blueToothVal == '2') //wenn das Bluetooth Modul eine „2“ empfängt..
{
if (State_PIN_2_Ist == 0)
{ while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_2 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_2, PWMPIN_2);
delay (50);
}
State_PIN_2_Ist = 1;
Serial.println("Kreis 2 eingeschaltet");
}
else
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_2 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_2, PWMPIN_2);
delay (50);
}
State_PIN_2_Ist = 0;
Serial.println("Kreis 2 ausgeschaltet");
}
}
else if (blueToothVal == '3') //wenn das Bluetooth Modul eine „3“ empfängt..
{
if (State_PIN_3_Ist == 0)
{ while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_3 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_3, PWMPIN_3);
delay (50);
}
State_PIN_3_Ist = 1;
Serial.println("Kreis 3 eingeschaltet");
return;
}
if (State_PIN_3_Ist == 1)
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_3 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_3, PWMPIN_3);
delay (50);
}
State_PIN_3_Ist = 0;
Serial.println("Kreis 3 ausgeschaltet");
}
}
hier der ganze code:
char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue; //speichert den letzten Status der LED (on/off)
int USBPIN = 10; // LED digital PIN 10
int PIN_1 = 2;
int PIN_2 = 3;
int PIN_3 = 5;
int PIN_4 = 6;
int PIN_5 = 9;
int PIN_6 = 11;
int PIN_Innenraumbeleuchtung = 12;
int State_PIN_2_Ist = 0;
int State_PIN_3_Ist = 0;
int State_PIN_4_Ist = 0;
int State_PIN_5_Ist = 0;
int State_PIN_6_Ist = 0;
int State_InnenraumbeleuchtungIst = 0;
int State_InnenraumbeleuchtungSoll_KFZ = 0;
int State_InnenraumbeleuchtungSoll_Nutzer = 0;
int State_PIN_1_Soll = 0;
int PWMUSB = 0;
int PWMPIN_2 = 0;
int PWMPIN_3 = 0;
int PWMPIN_4 = 0;
int PWMPIN_5 = 0;
int PWMPIN_6 = 0;
int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;
void setup() {
Serial.begin(9600); //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
pinMode(PIN_Innenraumbeleuchtung, INPUT); // Setzt den Digitalpin 7 als Intputpin
pinMode(PIN_1, OUTPUT);
//pinMode(LED_BUILTIN, OUTPUT);
State_PIN_2_Ist = 0;
State_PIN_3_Ist = 0;
State_PIN_4_Ist = 0;
State_PIN_5_Ist = 0;
State_PIN_6_Ist = 0;
}
void loop() {
if (Serial.available()) //wenn Daten empfangen werden...
{
blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
}
State_InnenraumbeleuchtungSoll_KFZ = digitalRead(PIN_Innenraumbeleuchtung); // Liest den Inputpin
//Serial.println(State_Innenraumbeleuchtung);
if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 0 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
{ while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMUSB = map(LUX, 0, 100, 0, 255);
analogWrite(USBPIN, PWMUSB);
delay (50);
}
State_InnenraumbeleuchtungIst = 1;
}
if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
{ while (LUX > 0) {
LUX = LUX - LUX_SPRUNG;
PWMUSB = map(LUX, 0, 100, 0, 255);;
analogWrite(USBPIN, PWMUSB);
delay (50);
}
State_InnenraumbeleuchtungIst = 0;
}
if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
{ while (LUX > 0) {
LUX = LUX - LUX_SPRUNG;
PWMUSB = map(LUX, 0, 100, 0, 255);;
analogWrite(USBPIN, PWMUSB);
delay (50);
}
State_InnenraumbeleuchtungIst = 0;
}
if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
{ while (LUX > 0) {
LUX = LUX - LUX_SPRUNG;
PWMUSB = map(LUX, 0, 100, 0, 255);;
analogWrite(USBPIN, PWMUSB);
delay (50);
}
State_InnenraumbeleuchtungIst = 0;
}
if (blueToothVal == '1') //wenn das Bluetooth Modul eine „1“ empfängt..
{
if (State_PIN_1_Soll == 0)
{ State_PIN_1_Soll = 1;
delay (1000);
Serial.println("D+ aktiv");
}
else {
State_PIN_1_Soll = 0;
delay (1000);
Serial.println("D+ inaktiv");
}
}
else if (blueToothVal == '2') //wenn das Bluetooth Modul eine „2“ empfängt..
{
if (State_PIN_2_Ist == 0)
{ while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_2 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_2, PWMPIN_2);
delay (50);
}
State_PIN_2_Ist = 1;
Serial.println("Kreis 2 eingeschaltet");
}
else
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_2 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_2, PWMPIN_2);
delay (50);
}
State_PIN_2_Ist = 0;
Serial.println("Kreis 2 ausgeschaltet");
}
}
else if (blueToothVal == '3') //wenn das Bluetooth Modul eine „3“ empfängt..
{
if (State_PIN_3_Ist == 0)
{ while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_3 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_3, PWMPIN_3);
delay (50);
}
State_PIN_3_Ist = 1;
Serial.println("Kreis 3 eingeschaltet");
return;
}
if (State_PIN_3_Ist == 1)
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_3 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_3, PWMPIN_3);
delay (50);
}
State_PIN_3_Ist = 0;
Serial.println("Kreis 3 ausgeschaltet");
}
}
else if (blueToothVal == '4') //wenn das Bluetooth Modul eine „4“ empfängt..
{
if (State_PIN_4_Ist == 0) {
while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_4 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_4, PWMPIN_4);
delay (50);
}
State_PIN_4_Ist = 1;
Serial.println("Kreis 4 eingeschaltet");
}
else
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_4 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_4, PWMPIN_4);
delay (50);
}
State_PIN_4_Ist = 0;
Serial.println("Kreis 4 ausgeschaltet");
}
}
else if (blueToothVal == '5') //wenn das Bluetooth Modul eine „5“ empfängt..
{
if (State_PIN_5_Ist == 0) {
while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_5 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_5, PWMPIN_5);
delay (50);
}
State_PIN_5_Ist = 1;
Serial.println("Kreis 5 eingeschaltet");
}
else
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_5 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_5, PWMPIN_5);
delay (50);
}
State_PIN_5_Ist = 0;
Serial.println("Kreis 5 ausgeschaltet");
}
}
else if (blueToothVal == '6') //wenn das Bluetooth Modul eine „6“ empfängt..
{
if (State_PIN_6_Ist == 0) {
while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMPIN_6 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_6, PWMPIN_6);
delay (50);
}
State_PIN_6_Ist = 1;
Serial.println("Kreis 6 eingeschaltet");
}
else
{ while ((LUX > 0)) {
LUX = LUX - LUX_SPRUNG;
PWMPIN_6 = map(LUX, 0, 100, 0, 255);
analogWrite(PIN_6, PWMPIN_6);
delay (50);
}
State_PIN_6_Ist = 0;
Serial.println("Kreis 6 ausgeschaltet");
}
}
else if (blueToothVal == '7') //wenn das Bluetooth Modul eine „7“ empfängt..
{
/* while (LUX < LUX_start) {
LUX = LUX + LUX_SPRUNG;
PWMUSB = map(LUX, 0, 100, 0, 255);
analogWrite(USBPIN, PWMUSB);
delay (50);
*/
if (State_InnenraumbeleuchtungSoll_Nutzer == 0)
{
State_InnenraumbeleuchtungSoll_Nutzer = 1;
Serial.println("Innenraumbeleuchtung aktiv");
delay (1000);
}
else {
State_InnenraumbeleuchtungSoll_Nutzer = 0;
Serial.println("Innenraumbeleuchtung inaktiv");
delay (1000);
}
}
else if (blueToothVal == '9') //wenn das Bluetooth Modul eine „9“ empfängt..
{
Serial.println(" 0 - Gesamte Beleuchtung aus");
Serial.println(" 1 - D+ an Ladebuster High");
Serial.println(" 2 - Pin 2 Beleuchtung an/aus");
Serial.println(" 3 - Pin 3 Beleuchtung an/aus");
Serial.println(" 4 - Pin 4 Beleuchtung an/aus");
Serial.println(" 5 - Pin 5 Beleuchtung an/aus");
Serial.println(" 6 - Pin 6 Beleuchtung an/aus");
Serial.println(" 7 - USB an");
}
else if (blueToothVal == '0') //wenn das Bluetooth Modul „0“ empfängt...
{
while (LUX > 0) {
LUX = LUX - LUX_SPRUNG;
//PWMUSB = map(LUX, 0, 100, 0, 255);
PWMPIN_2 = map(LUX, 0, 100, 0, 255);
PWMPIN_3 = map(LUX, 0, 100, 0, 255);
PWMPIN_4 = map(LUX, 0, 100, 0, 255);
PWMPIN_5 = map(LUX, 0, 100, 0, 255);
PWMPIN_6 = map(LUX, 0, 100, 0, 255);
//analogWrite(USBPIN, PWMUSB);
analogWrite(PIN_2, PWMPIN_2);
analogWrite(PIN_3, PWMPIN_3);
analogWrite(PIN_4, PWMPIN_4);
analogWrite(PIN_5, PWMPIN_5);
analogWrite(PIN_6, PWMPIN_6);
delay (50);
}
//State_InnenraumbeleuchtungIst = 0;
State_PIN_2_Ist = 0;
State_PIN_3_Ist = 0;
State_PIN_4_Ist = 0;
State_PIN_5_Ist = 0;
State_PIN_6_Ist = 0;
/* if (lastValue != '0') //wenn der letzte empfangene Wert keine „0“ war...
Serial.println(F("Gesamte Beleuchtung ausgeschaltet")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden
lastValue = blueToothVal;
*/
}
int spannungV = analogRead(A3);
int spannung = map(spannungV, 0, 1023, 0 , 17732);
float spannungA;
float spannungB;
spannungA = spannung;
spannungB = (spannungA / 1000);
/*
Serial.print("Spannung: ");
Serial.println(spannungB); //gemessene Spannung
Serial.print("State_PIN_1_Soll: ");
Serial.println(State_PIN_1_Soll);
delay (1000);
*/
if (spannungB >= 11 && State_PIN_1_Soll == 1)
{
digitalWrite(PIN_1, HIGH);
}
else {
digitalWrite(PIN_1, LOW);
}
}