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
  Smart Home Webserver Basic Authentication Problem Osotastic 21 280 20.02.2017 18:00
Letzter Beitrag: Tommy56
  ESP8622 - 01 sendet UDP - Problem WLan Kriskind 33 1.300 11.02.2017 18:59
Letzter Beitrag: Tommy56
  Problem mit Sketch senden an Uno feuerwehr 5 307 31.01.2017 20:41
Letzter Beitrag: Tommy56
  Beim Hochladen USB Problem Nils 10 530 29.12.2016 21:05
Letzter Beitrag: renid55
  Problem mit SD Card Library BennIY 4 325 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 284 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 1.029 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 612 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 875 13.06.2016 21:14
Letzter Beitrag: torsten_156
  ESP8266_01 flashen - Problem torsten_156 12 1.341 30.05.2016 20:12
Letzter Beitrag: torsten_156

Gehe zu:


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