Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Quellcode .auto-style21 { border-width: 0px; }
Hochschule Karlsruhe Logo Informationstechnik
3D Drucker - Platine
Sommersemester 2018
Mirko Matošin
Alexander Schleicher

Quellcode

Förderband:

Download
esp32-1-Foerderband_ino file


/* Erstellt von: Johannes Beißwenger, Simon Gaiser Erstellt im Zeitraum: Oktober 2017 Bearbeitet von: Mirko Matosin, Alexander Schleicher Bearbeitet im Zeitraum: April 2018 Aufgaben des Programms: Das Programm Überwacht den Druckablauf des 3D-Druckes der staatlichen Majolika. Nach dem Fertigstellen eines Druckauftrages wird ein Förderband angesteuert, welches das fertige Tonobjekt aus dem Druckraum fährt. Anschließend kann ein neuer Druckauftrag gestartet werden. */ // Inkludierung der Bibliotheken //------------------------------------------------------------------------------// #include <Wire.h> // I2C #include <Adafruit_GFX.h> // OLED #include <Adafruit_SSD1306.h> // Graphic //Definition der Pinbelegung / Namensgebung //-------------------------------------------------------------------------------// #define SignalDrucker 25 // Endschalter am 3D-Drucker #define SignalFoerderband 32 // Lichtschranke am Förderband #define FoerderbandFahren 5 // Steuersignal für Förderband fahren #define OLED_RESET 4 // not used / nicht genutzt bei diesem Display // Initialisierungen //------------------------------------------------------------------------------// Adafruit_SSD1306 display(OLED_RESET); // Funktionen //------------------------------------------------------------------------------// void FoerderbandVoll(); void DruckBetrieb(); // Definition der Pins //------------------------------------------------------------------------------// void setup() { Serial.begin(115200); // serielle Schnittstelle //Oled Initialisierung display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); display.clearDisplay(); display.setTextSize(1); display.setTextColor(INVERSE); //Ausgänge pinMode(FoerderbandFahren, OUTPUT); // Steuersignal Förderband fahren //Eingänge pinMode(SignalDrucker, INPUT_PULLUP); // Eingangssignal 3D-Drucker, Achtung PULLUP -> Taster gegen Masse pinMode(SignalFoerderband, INPUT); // Eingangssignal Lichtschranke Förderband, Achtung PULLUP -> Taster gegen Masse } // Globale Variablen //-----------------------------------------------------------------------------// unsigned int TextS = 1; // Textgroeße //-----------------------------------------------------------------------------// void loop() { Serial.println("Loop"); //Serial.println("Taster"); //Serial.println(digitalRead(SignalDrucker)); digitalWrite(FoerderbandFahren, HIGH); if (digitalRead(SignalFoerderband) == HIGH) { FoerderbandVoll(); } else { DruckBetrieb(); } } //-----------------------------------------------------------------------------// void FoerderbandVoll() { Serial.println("Foerderband Voll"); display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(TextS); display.println("Foerderband Voll"); display.println(); display.println("Bitte Tonobjekte von Foerderband entnehmen"); display.display(); } void DruckBetrieb() { int val; int buttonState = digitalRead(SignalDrucker); // Anfangszustand lesen int buttonPresses = 0; while (digitalRead(SignalFoerderband) == LOW) { val = digitalRead(SignalDrucker); // Eingabewert lesen und in val speichern if (val != buttonState) // Der Zustand des Schalters hat sich verändert { if (val == LOW) // Ist der Schalter gedrückt? { buttonPresses++; // Tastendrücke zählen Serial.println("Schalter"); } } buttonState = val; // Den Zustand merken if (buttonPresses == 0) // kein Druckersignal erhalten { // hier ggf die Zahlen ändern um zuerst hoch und dann runter zu fahren Serial.println("Anlage Bereit"); display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(TextS); display.println("Anlage Bereit"); display.display(); Serial.println("Schalter0"); } else if (buttonPresses == 1) // Drucker fährt Grundstellung { Serial.println("Nullposition"); display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(TextS); display.println("Nullposition"); //display.println("??Druckzeit??"); display.display(); Serial.println("Schalter1"); } else if (buttonPresses == 2) // Drucker fährt von Grundstellung in Arbeitsposition { Serial.println("Druckbetrieb"); display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(TextS); display.println("Druckbetrieb"); //display.println("??Druckzeit??"); display.display(); Serial.println("Schalter2"); } else if (buttonPresses == 3) // Drucker ist fertig, fährt von Arbeitsposition in Grundstellung { Serial.println("Druck beendet.... Foerderband fahren"); Serial.println("Schalter3"); display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(TextS); display.println("Druck beendet"); display.println("Foerderband fahren"); display.display(); digitalWrite(FoerderbandFahren, LOW); // Förderband ansteuern delay(2000); // 2 s --> 15cm Verfahrweg digitalWrite(FoerderbandFahren, HIGH); buttonPresses = 1; } } }






 

  Mit Unterstützung von Prof. J. Walter Sommersemester 2018