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
  Problem mit Wire.available() abfrage avoid 1 245 11.01.2018 13:40
Letzter Beitrag: Tommy56
  SerialComInstruments 4 Problem Darstellung Nextero 35 1.181 15.12.2017 18:51
Letzter Beitrag: ElEspanol
  Problem mit Nema17 und A4988 Philthy 6 362 08.12.2017 12:35
Letzter Beitrag: Tommy56
  Arduino -> Controllino [Problem gelöst] Cyrilsneer 17 1.098 27.11.2017 18:49
Letzter Beitrag: Franz54
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 494 05.11.2017 22:37
Letzter Beitrag: Tommy56
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 762 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 472 22.08.2017 14:16
Letzter Beitrag: Snörb
  Problem mit externem Interrupt manfred474 13 1.524 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Problem mit Klassen GuaAck 4 666 09.08.2017 09:28
Letzter Beitrag: MicroBahner
Question Problem mit TFT Sam217 8 1.068 20.07.2017 21:51
Letzter Beitrag: hotsystems

Gehe zu:


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