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
  AT90CAN Interrupt wird nicht ausgelöst slsb02 5 243 19.11.2019 15:04
Letzter Beitrag: slsb02
  Nextion und Arduino kommunizieren nicht alpenpower 7 337 04.11.2019 10:36
Letzter Beitrag: GuaAck
  Button funktioniert nicht trotz korrekter Schaltung Schneggl 3 313 12.10.2019 08:17
Letzter Beitrag: Schneggl
  Empfänger funktioniert nicht mehr jgrothe 5 488 06.09.2019 18:57
Letzter Beitrag: Tommy56
  myport nicht gefunden? - Arduino und Visual Studio Stagneth.Alexander 4 562 04.09.2019 14:16
Letzter Beitrag: Stagneth.Alexander
  UDP send oder print ??? Ich kapiers nicht HarryB 5 512 03.09.2019 13:06
Letzter Beitrag: Tommy56
Wink Solar Roboter- Servo dreht nach Stopp nicht weiter Stagneth.Alexander 37 2.855 20.08.2019 14:15
Letzter Beitrag: geist4711
  Atmega 328 Sketchl läuft auf UNO3, alleine auf Breadboard nicht delay 9 986 02.08.2019 15:03
Letzter Beitrag: hotsystems
  Reaktionsspiel funktioniert nicht, wie es sollte... Stagneth.Alexander 27 1.781 21.07.2019 07:57
Letzter Beitrag: Stagneth.Alexander
Question Programm läuft nicht richtig CMeeep 22 1.976 04.07.2019 21:58
Letzter Beitrag: Franz54

Gehe zu:


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