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 der Textauswertung Franz54 13 339 15.04.2018 18:17
Letzter Beitrag: Tommy56
  Problem mit RIFD UID ParadoxDev 6 246 27.03.2018 12:04
Letzter Beitrag: ParadoxDev
  Problem mit OLED 0.96" Display torsten_156 5 1.729 07.03.2018 23:27
Letzter Beitrag: Tommy56
  Ucglib Library Problem Bully 26 951 05.03.2018 18:47
Letzter Beitrag: Tommy56
  Problem mit Wire.available() abfrage avoid 1 336 11.01.2018 13:40
Letzter Beitrag: Tommy56
  SerialComInstruments 4 Problem Darstellung Nextero 35 1.484 15.12.2017 18:51
Letzter Beitrag: ElEspanol
  Problem mit Nema17 und A4988 Philthy 6 472 08.12.2017 12:35
Letzter Beitrag: Tommy56
  Arduino -> Controllino [Problem gelöst] Cyrilsneer 17 1.353 27.11.2017 18:49
Letzter Beitrag: Franz54
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 618 05.11.2017 22:37
Letzter Beitrag: Tommy56
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 841 22.08.2017 15:17
Letzter Beitrag: Tommy56

Gehe zu:


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