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
Problem bei Timelapse Steuergerät
19.10.2015, 20:02
Beitrag #1
Problem bei Timelapse Steuergerät
Guten Abend,

ich baue derzeit ein Timelapse-Steuergerät mit einem Arduino Mega 2560 und einem LCD Display

Das Display zeigt:

Startbildschirm
Endschalter
Modus
Eingestellte Werte (Nur Einstellmodus)
Aktuelle Frameanzahl (Nur Slidemodus)

Zusätzlich gebe ich die Werte im Rahmen der "Entwicklung" noch im Seriellen Monitor aus

Als Eingabegeräte vorgesehen sind:

Taster "Mehr"
Taster "Weniger"
Endschalter
Schalter "Einstellen"
Schalter "Wert auswählen" (Intervall/ Drehzeit d. Motors)

Der bisherige Code weist noch ein paar Schönheitsfehler im LCD auf, außerdem ist die HIGH/LOW Zuordnung noch etwas wirr, aber nun zum Hauptproblem:

Meine Variablen ändern sich nicht wie ich es will.
Ansonsten klappt alles...


Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


void setup() {
  pinMode(A15, INPUT);
  pinMode(A14, INPUT);
  pinMode(53, INPUT_PULLUP);
  pinMode(49, INPUT_PULLUP);
  pinMode(47, INPUT_PULLUP);
  pinMode(45, INPUT_PULLUP);
  pinMode(43, INPUT_PULLUP);
  pinMode(41, OUTPUT);
  
  Serial.begin(9600);
  lcd.begin(20,4);
  lcd.setCursor(0,0);
  lcd.write("Timelapse 1.1");
  delay(1000);
  lcd.setCursor(0,2);
  lcd.write("Einstellschalter");
  lcd.setCursor(0,3);
  lcd.write("einlegen");
  delay(2000);
  lcd.clear();
}

void loop() {
  int endschalter = digitalRead(53);                                      // 53=Endschalter  49=Einstellschalter 47=mehr 45=weniger 43=Einstellschalter2 41=LED
  int einstellschalter = digitalRead(49);
  int einstellschalter2 = digitalRead(43);
  int mehr = digitalRead(47);
  int weniger = digitalRead(45);
  int drehzeit = 200;
  int interval = 200;
  int frame;
  
  if(einstellschalter == LOW){                                  // Modi-Anzeige verändern, wenn Einstellschalter ausgelegt
    lcd.setCursor(0,2);
    lcd.write("Slidemodus   ");
    
    if(endschalter == HIGH){                                    // wenn kein Endschalter eingelegt
       digitalWrite(47, HIGH);                                  // Motor an
       delay(drehzeit);                                        
       digitalWrite(47, LOW);                                   // Motor aus
       delay(interval);                                        
       frame++;                                                 // Framecounter +1
       lcd.setCursor(0,0);                                      // Framecoutner ausgeben
       lcd.write("Frame:              ");
       lcd.setCursor(7,0);
       lcd.print(frame);
    }
  }
    else{                                                     // Einstellschalter eingelegt                          

       if (einstellschalter2 == HIGH){                        // Einstellschalter 2 HIGH -  "Interval"!
          if (mehr == LOW && interval < 30){                  // Mehr gedrückt und "mehr" auch noch sinnvoll (<30)?
              interval = interval + 200;                      // Interval vergrößern
              delay(200);                                     // 200ms warten, um Einstellbarkeit zu erhalten
          }
          
          if (weniger == LOW && interval > 0){                // Weniger gedrückt und sinnvoll?
             interval = interval - 200;                       // Interval verkleinern
              delay(200);                                     // Einstellbarkeit
          }
        }
      
       else{                                                  // s. oben, nur für drehzeit
          if (mehr == LOW && drehzeit < 3 ){
              drehzeit = drehzeit + 200;
              delay(200);
          }

          if (weniger == LOW && drehzeit > 0){
              drehzeit = drehzeit - 200;
              delay(200);
          }
       }
                                                                      
       Serial.print("ms Drehzeit:  ");                        // Ausgabeteil Einstellung
       Serial.println(drehzeit);
       Serial.println("");
       Serial.print("ms Delay:  ");
       Serial.println(interval);
       Serial.println("");
       lcd.setCursor(0,0);
       lcd.write("Drehzeit: ");
       lcd.setCursor(12,0);
       lcd.print(drehzeit);
       lcd.setCursor(0,1);
       lcd.write("Wartezeit: ");
       lcd.setCursor(12,1);
       lcd.print(interval);
       lcd.setCursor(0,2);
       lcd.write("Einstellmodus");
       frame = 0;                                             //Framecounter auf 0 setzen, weil Werte verstellt
    }          

    
    if(endschalter == HIGH){                                  // Anzeige für Endschalter in der unteren Zeile (HIGH = Ende erreicht)
      lcd.setCursor(0,3);
      lcd.write("Bereit           ");
    }
    else{
      lcd.setCursor(0,3);
      lcd.write("Endpostition err.");
    }
}
Kopierts am besten in Arduino rein, dann siehts übersichtlicher aus!
An der Hardware liegt es nicht, habe alles mit Testprogrammen getestet...

Ich entschuldige mich vornerein für meinen Programmierstil, ich bin noch ein 16 Jähriger Anfänger!

Ich hoffe ihr sitzt nicht genauso ratlos davor wie ich oder brecht euch nicht den Schädel beim Facepalmen...

Schonmal danke im Voraus!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2015, 18:40
Beitrag #2
RE: Problem bei Timelapse Steuergerät
Hi,

ist das Problem noch aktuell oder mittlerweile erledigt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 272 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 201 22.08.2017 14:16
Letzter Beitrag: Snörb
  Problem mit externem Interrupt manfred474 13 841 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Problem mit Klassen GuaAck 4 325 09.08.2017 09:28
Letzter Beitrag: MicroBahner
Question Problem mit TFT Sam217 8 628 20.07.2017 21:51
Letzter Beitrag: hotsystems
  Problem FastLED fliege_m 3 400 16.07.2017 16:56
Letzter Beitrag: Tommy56
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.225 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Smart Home Webserver Basic Authentication Problem Osotastic 21 1.143 20.02.2017 18:00
Letzter Beitrag: Tommy56
  Problem mit Sketch senden an Uno feuerwehr 5 903 31.01.2017 20:41
Letzter Beitrag: Tommy56
  Beim Hochladen USB Problem Nils 10 1.325 29.12.2016 21:05
Letzter Beitrag: renid55

Gehe zu:


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