INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Nebelmaschine: Programmteile funktionieren nicht
13.11.2019, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2019 19:24 von ChrisTastic.)
Beitrag #1
Nebelmaschine: Programmteile funktionieren nicht
Hallo Zusammen!
Ich habe eine Akku Nebelmaschine mit RGB LED Licht gebaut.

Folgende Funktionen stehen zur Verfügung:
- Auslösen über Funk: High an Eingang1 (Eingang2 nicht belegt)
- Auslösen über Taster: High an Ausloeserknopf
- Kippschalter zur Wahl (LEDs beim Auslösen ein oder aus): SchalterLED
- Taster zum Einschalten/test der Farbe: LichtTest
- Poti zum Einstellen der Farbe während LichtTest ein: potPin

Ausgänge sind:
- RauchAusgang: Solang das signal high ist, kommt rauch
- LuftPumpeAusgang: Solange das signal high ist, läuft der Lüfter und die Liquidpumpe; beide schalten mit 4000ms Verzögerung zum Rauch aus
- Rot/Grün/blau für die LEDs: Schalten mit 8000ms Verzögerung zum Rauch aus
- LEDHauptschalter: Schaltet die Spannungsregler zusammen mit den LED Treibern aus, um Strom zu sparen



Problem 1
Das Programm funktioniert soweit, allerdings kann ich nach aktuellem Stand die LEDs nicht ein oder ausschalten.
Wenn der Kippschalter auf LOW ist, und Eingang1 oder Ausloeserknopf HIGH wird, soll nur RauchAusgang und LuftPumpeAusgang einschalten, aber nicht die LEDs einschalten.
Wenn der Kippschalter auf HIGH ist usw, soll RauchAusgang, LuftPumpeAusgang und die LEDs einschalten.

Sobald Eingang1 oder Ausloeserknopf LOW wird, schalten die LED (redPin, greenPin, bluePin) nach 8000ms LOW und nach 4000ms RauchAusgang LOW. Der RauchAusgang geht sofort aus.
Momentan funktioniert es nur mit den LEDs.


Problem 2
Eingang1 und Ausloeserknopf sollen exakt die gleiche Aufgabe haben, allerdings funktioniert derzeit nur Eingang1 (habe auch nur Eingang1 programmatisch in Verwendung). Wie kann ich Ausloeserknopf noch mit einbinden? Nachfolgend der Programmteil, der neben dem Eingang1 (buttonState) auch den Ausloeserknopf (ButtonState4) beinhalten müsste:

Code:
if (buttonState == HIGH) //Rauch
  {
    digitalWrite(LuftPumpeAusgang, HIGH);
    digitalWrite(RauchAusgang, HIGH);

    int potPinValue = map(analogRead(potPin), 0, 1024, 0, 255);
...

Anbei noch das gesamte Programm, bitte verzeiht mir meine schlechte programmierweise, ich hab relativ wenig Ahnung Big Grin
Und sry dass das alles jetzt so lang geworden ist! Hoffe ihr könnt mir helfen, ich hab mittlerweile null Plan wie ich das realisieren kann...
DANKE!!!




Code:
unsigned long previousMillis = 0;
unsigned long previousMillis2 = 0;

const long interval = 4000;  
const long interval2 = 8000;

const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;

const int Eingang1 = 2;
const int Eingang2 = 3;
const int LichtTest = 1;
const int SchalterLED = 5;
const int Ausloeserknopf = 19;

const int RauchAusgang = 20;
const int LuftPumpeAusgang = 12;
const int LEDHauptschalter = 8;


volatile int buttonState = 0; //Eingang
volatile int buttonState2 = 0; //Lichttest
volatile int buttonState3 = 0; //SchalterLED
volatile int buttonState4 = 0; //Auslöserknopf


// Analog input from the potentiometer
const int potPin = A7;
const int Spannung = A6;

// Values for each pin of the RGB LED.
int currentColorValueRed;
int currentColorValueGreen;
int currentColorValueBlue;

void setup()
{
    pinMode(redPin, OUTPUT);
    pinMode(greenPin, OUTPUT);
    pinMode(bluePin, OUTPUT);

  pinMode(RauchAusgang, OUTPUT);
  pinMode(LuftPumpeAusgang, OUTPUT);
  pinMode(LEDHauptschalter, OUTPUT);
  
  pinMode(Spannung, INPUT);
  pinMode(Eingang1, INPUT);
  pinMode(Eingang2, INPUT);
  pinMode(SchalterLED, INPUT);
  pinMode(Ausloeserknopf, INPUT);


pinMode(Test, OUTPUT);


digitalWrite(redPin, HIGH);
delay (200);
digitalWrite(redPin, LOW);

digitalWrite(greenPin, HIGH);
delay (200);
digitalWrite(greenPin, LOW);

digitalWrite(bluePin, HIGH);
delay (200);
digitalWrite(bluePin, LOW);

digitalWrite (RauchAusgang, HIGH);
delay (50);
digitalWrite (RauchAusgang, LOW);
}

void loop()
{
  
  buttonState = digitalRead(Eingang1);
  buttonState2 = digitalRead(LichtTest);
  buttonState3 = digitalRead(SchalterLED);
  buttonState4 = digitalRead(Ausloeserknopf);
  
  while (Spannung >= 500)
  {
    digitalWrite(LuftPumpeAusgang, LOW);
    digitalWrite(RauchAusgang, LOW);
    digitalWrite(LEDHauptschalter, HIGH);
    digitalWrite(redPin, LOW);
    digitalWrite(bluePin, HIGH);
    digitalWrite(greenPin, LOW);
  }

  if (buttonState == HIGH) //Rauch
  {
    digitalWrite(LuftPumpeAusgang, HIGH);
    digitalWrite(RauchAusgang, HIGH);

    int potPinValue = map(analogRead(potPin), 0, 1024, 0, 255);


   if (potPinValue <= 42.5) {
    currentColorValueRed = 255;
    currentColorValueGreen = potPinValue * 6;
    currentColorValueBlue = 0;
   }
  
   if ((potPinValue > 42.5) && (potPinValue <= 85)) {
    currentColorValueRed = 255 - (potPinValue - 43) * 6;
    currentColorValueGreen = 255;
    currentColorValueBlue = 0;
   }
   if ((potPinValue > 85) && (potPinValue <= 127.5)) {
    currentColorValueRed = 0;
    currentColorValueGreen = 255;
    currentColorValueBlue = (potPinValue - 85) * 6;
   }
  
  if ((potPinValue > 127.5) && (potPinValue <= 170)) {
    currentColorValueRed = 0;
    currentColorValueGreen = 255 - (potPinValue - 127.5) * 6;
    currentColorValueBlue = 255;
  }
  
  if ((potPinValue > 170) && (potPinValue <= 212.5)) {
    currentColorValueRed = (potPinValue - 170) * 6;
    currentColorValueGreen = 0;
    currentColorValueBlue = 255;
  }
  
  if ((potPinValue > 212.5) && (potPinValue <= 250)) {
    currentColorValueRed = 255;
    currentColorValueGreen = 0;
    currentColorValueBlue = 255 - (potPinValue - 212.5) * 6;
  }

  if ((potPinValue > 250) && (potPinValue <= 255)) {
    currentColorValueRed = 255;
    currentColorValueGreen = 255;
    currentColorValueBlue = 255;
  }
    
      digitalWrite(LEDHauptschalter, HIGH);
      analogWrite(redPin, currentColorValueRed);
      analogWrite(bluePin, currentColorValueBlue);
      analogWrite(greenPin, currentColorValueGreen);    
    

  }



if (buttonState == LOW)
{
      digitalWrite(RauchAusgang, LOW);
}
      unsigned long currentMillis = millis();
      
    if (currentMillis - previousMillis >= interval)
    {
      previousMillis = currentMillis;

        digitalWrite(LuftPumpeAusgang, LOW);
    }

      unsigned long currentMillis2 = millis();

    if (currentMillis2 - previousMillis2 >= interval2)
    {
      previousMillis2 = currentMillis2;
      
        digitalWrite(LEDHauptschalter, LOW);
        digitalWrite(redPin, LOW);
        digitalWrite(bluePin, LOW);
        digitalWrite(greenPin, LOW);
    }


  if (buttonState2 == LOW) //LED testen
  {
    // Reading the value of the pot pin (it's always 0 - 1024)
    // and converting it to a RGB range (0 - 255).
    int potPinValue = map(analogRead(potPin), 0, 1024, 0, 255);
    
   if (potPinValue <= 42.5) {
    currentColorValueRed = 255;
    currentColorValueGreen = potPinValue * 6;
    currentColorValueBlue = 0;
   }
  
   if ((potPinValue > 42.5) && (potPinValue <= 85)) {
    currentColorValueRed = 255 - (potPinValue - 43) * 6;
    currentColorValueGreen = 255;
    currentColorValueBlue = 0;
   }
   if ((potPinValue > 85) && (potPinValue <= 127.5)) {
    currentColorValueRed = 0;
    currentColorValueGreen = 255;
    currentColorValueBlue = (potPinValue - 85) * 6;
   }
  
  if ((potPinValue > 127.5) && (potPinValue <= 170)) {
    currentColorValueRed = 0;
    currentColorValueGreen = 255 - (potPinValue - 127.5) * 6;
    currentColorValueBlue = 255;
  }
  
  if ((potPinValue > 170) && (potPinValue <= 212.5)) {
    currentColorValueRed = (potPinValue - 170) * 6;
    currentColorValueGreen = 0;
    currentColorValueBlue = 255;
  }
  
  if ((potPinValue > 212.5) && (potPinValue <= 250)) {
    currentColorValueRed = 255;
    currentColorValueGreen = 0;
    currentColorValueBlue = 255 - (potPinValue - 212.5) * 6;
  }

  if ((potPinValue > 250) && (potPinValue <= 255)) {
    currentColorValueRed = 255;
    currentColorValueGreen = 255;
    currentColorValueBlue = 255;
  }
    digitalWrite(LEDHauptschalter, HIGH);
    analogWrite(redPin, currentColorValueRed);
    analogWrite(bluePin, currentColorValueBlue);
    analogWrite(greenPin, currentColorValueGreen);    
  }

  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 15:27 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2019 15:28 von Tommy56.)
Beitrag #2
RE: Nebelmaschine: Programmteile funktionieren nicht
Erst mal beim groben drüberschauen: Spannung ist ein Pin und kein Messwert. Du misst überhaupt nichts vom Pin Spannung.
Tipp: Benenne Variablen sinnvoll. hier z.B. SpannungsPin und spannung für den Messwert, dann merkst Du solche Fehler eher.

Wie misst Du die Spannung? Welche Bereiche bei der Messung ergeben sich daraus?
While hat im Loop nur dann etwas zu suchen, wenn danach nichts mehr gehen soll.

Formatiere Deinen Code ordentlich (<Strg>+T in der IDE hilft Dir dabei) und beseitige unnötige Leerzeilen. Kurze Kommentare, was ein Codestück inhaltlich tun soll, helfen beim Verständnis.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 15:43
Beitrag #3
RE: Nebelmaschine: Programmteile funktionieren nicht
(13.11.2019 15:27)Tommy56 schrieb:  Erst mal beim groben drüberschauen: Spannung ist ein Pin und kein Messwert. Du misst überhaupt nichts vom Pin Spannung.
Tipp: Benenne Variablen sinnvoll. hier z.B. SpannungsPin und spannung für den Messwert, dann merkst Du solche Fehler eher.

Wie misst Du die Spannung? Welche Bereiche bei der Messung ergeben sich daraus?
While hat im Loop nur dann etwas zu suchen, wenn danach nichts mehr gehen soll.

Formatiere Deinen Code ordentlich (<Strg>+T in der IDE hilft Dir dabei) und beseitige unnötige Leerzeilen. Kurze Kommentare, was ein Codestück inhaltlich tun soll, helfen beim Verständnis.

Gruß Tommy

Mir gehts nur darum, dass ich unter einem gewissen Spannungswert, zb 2,5V in die While Schleife komme und danach - wie du schon sagtest - nichts mehr gehen soll. Erst wenn alles Ausgeschalten wird.

Ich weiß dass ich keine Spannung messe, sondern einen wert zwischen 0-1024 (denk ich mal?)
Jetzt hilft mir das aber auch nicht weiter Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 16:27
Beitrag #4
RE: Nebelmaschine: Programmteile funktionieren nicht
Warum schreibst Du dann while (Spannung >= 500) wenn Du beim Unterschreiten da rein willst?
Den Rest der Hinweise ignorierst Du?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 18:04
Beitrag #5
RE: Nebelmaschine: Programmteile funktionieren nicht
(13.11.2019 16:27)Tommy56 schrieb:  Warum schreibst Du dann while (Spannung >= 500) wenn Du beim Unterschreiten da rein willst?
Den Rest der Hinweise ignorierst Du?

Gruß Tommy

Aus diesem Grund hab ich in der Problembeschreibung das geschrieben:

Ich überwache über Spannungsteiler an nem Analogen Eingang (A6, Spannung) den Akkustand, der geht sozusagen von 0-5V. Ich möchte, dass ab bzw unter einer gewissen Spannung die Nebelmaschine nicht mehr laufen kann und die Rote LED blinkt.

Weil ich nicht mal weiß ob das überhaupt der richtige Weg in meinem Falle ist. Daher hoffe ich hier auf Lösung(sansätze).
Achso und das größer gleich sollte ein kleiner gleich sein, das hab ich nur testhalber eingesetzt, weils nicht hingehaut hat.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 18:14
Beitrag #6
RE: Nebelmaschine: Programmteile funktionieren nicht
Den Hinweis hast Du doch schon bekommen! Du liest nirgendwo Deinen Eingang A6 ein, also kann der auch nichts bewirken.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 19:24
Beitrag #7
RE: Nebelmaschine: Programmteile funktionieren nicht
(13.11.2019 18:14)Tommy56 schrieb:  Den Hinweis hast Du doch schon bekommen! Du liest nirgendwo Deinen Eingang A6 ein, also kann der auch nichts bewirken.

Gruß Tommy

Ach so ein sch... da hast du recht... Rolleyes

dann wäre dieser Fehler schonmal behoben. Danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 19:38
Beitrag #8
RE: Nebelmaschine: Programmteile funktionieren nicht
Wenn Du den korrigierten Code (beachte auch die Hinweise zu den sinnvollen Variablennamen) hier eingestellt hast, kannst Du dann ja konkret beschreiben, was noch nicht geht und was Du erwartet hast.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Uno startet nicht j.klomfass 3 122 01.07.2020 18:49
Letzter Beitrag: hotsystems
  Arduino Programm funktioniert auf nano nicht Arduino DMX Master 10 389 15.06.2020 13:07
Letzter Beitrag: Arduino DMX Master
  ESP32 Web Radio VS1053 - touch-"buttons" funktionieren nur so halb crazysky 4 265 14.06.2020 22:43
Letzter Beitrag: crazysky
  DMX Addresirung funktionirert nicht Arduino DMX Master 24 760 14.06.2020 15:38
Letzter Beitrag: Tommy56
  Arduino IDE läuft nicht mehr Rainer2 12 664 10.06.2020 12:04
Letzter Beitrag: Tommy56
  Arduino Programm Geht nicht mehr auf Arduino DMX Master 2 261 09.06.2020 20:13
Letzter Beitrag: Arduino DMX Master
  strcmp funktioniert nicht richtig Cano 7 495 25.04.2020 10:47
Letzter Beitrag: Cano
  SoftwareSerial.h und SD.h vertragen sich nicht sowerum 25 1.363 25.04.2020 10:46
Letzter Beitrag: hotsystems
  Sketch für WS2812 klappt nicht ThorstenP 9 682 02.04.2020 14:50
Letzter Beitrag: ThorstenP
  Nano Every upload geht nicht Jeanlion1 6 501 01.04.2020 17:45
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste