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 SD Card Library BennIY 4 197 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 212 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 862 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 463 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 611 13.06.2016 21:14
Letzter Beitrag: torsten_156
  ESP8266_01 flashen - Problem torsten_156 12 1.061 30.05.2016 20:12
Letzter Beitrag: torsten_156
  Hardwareserial/Softserial: Problem mit Superklasse tuxedo0801 10 484 19.05.2016 12:25
Letzter Beitrag: amithlon
  ESP8266 HTML Problem arduino_weatherstation 1 500 25.04.2016 21:52
Letzter Beitrag: rkuehle
  Problem mit OLED 0.96" Display torsten_156 3 547 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 491 01.04.2016 05:49
Letzter Beitrag: MartinK

Gehe zu:


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