From 8f2619bb2311d41fc321519d9199d7e77a27e352 Mon Sep 17 00:00:00 2001
From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de>
Date: Thu, 3 Sep 2020 16:04:23 +0200
Subject: [PATCH] Wiring, Resetbutton, Potilabel

---
 UML.dia                                       | Bin 17331 -> 18197 bytes
 .../ardublock/simulator/Simulator.java        |  12 ++--
 .../ardublock/simulator/arduino/Arduino.java  |   3 +
 .../ardublock/simulator/arduino/Pin.java      |   3 +
 .../ardublock/simulator/arduino/Variable.java |   3 +
 .../ardublock/simulator/simcode/SimCode.java  |   3 +
 .../simcode/comm/CodeConnectString.java       |   2 +
 .../simcode/comm/CodeSerialPrint.java         |   1 +
 .../simulator/simcode/control/CodeDelay.java  |   2 +-
 .../simulator/simcode/control/CodeElse.java   |   2 +-
 .../simulator/simcode/control/CodeElseIf.java |   2 +-
 .../simulator/simcode/control/CodeFor.java    |   2 +-
 .../simcode/control/CodeForCount.java         |   2 +-
 .../simulator/simcode/control/CodeIf.java     |   1 +
 .../simulator/simcode/control/CodeTypeIf.java |   2 +
 .../simulator/simcode/control/CodeWhile.java  |   2 +-
 .../simcode/control/CodeWhileMillis.java      |   2 +-
 .../simcode/datatypes/SimTypeBool.java        |   2 +-
 .../simcode/datatypes/SimTypeInt.java         |   2 +-
 .../simcode/datatypes/SimTypeString.java      |   2 +-
 .../functions/CodeExecuteFunction.java        |   2 +-
 .../simcode/functions/SimCodeFunction.java    |   2 +-
 .../simulator/simcode/io/CodeAnalogRead.java  |   4 +-
 .../simulator/simcode/io/CodeAnalogWrite.java |   2 +-
 .../simulator/simcode/io/CodeDigitalRead.java |   3 +-
 .../simcode/io/CodeDigitalWrite.java          |   2 +-
 .../ardublock/simulator/view/GUI.java         |  50 +++++++++++--
 .../simulator/view/modules/ArduinoUno.java    |  66 ++++++++++++++++--
 .../simulator/view/modules/Button.java        |  16 ++++-
 .../simulator/view/modules/Modul.java         |  13 +++-
 .../simulator/view/modules/Poti.java          |  42 ++++++++++-
 .../ardublock/simulator/view/modules/RGB.java |  14 ++++
 32 files changed, 231 insertions(+), 35 deletions(-)

diff --git a/UML.dia b/UML.dia
index f9f2622288ad09c5e631c423b1693e4af6b500fd..8ff568e509c13da6e3fdfcacfb332b5fcab30a2c 100644
GIT binary patch
literal 18197
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
Aga7~l

literal 17331
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

diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java
index ca867aa..9185bb9 100644
--- a/src/tec/letsgoing/ardublock/simulator/Simulator.java
+++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java
@@ -27,12 +27,16 @@ import tec.letsgoing.ardublock.simulator.simcode.vars.CodeMillis;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
- * @author Lucas
+ * Diese Klasse verwaltet alle Elemente des Simulators. Sie ist geschrieben als Singelton.
+ * 
  * 
  * Pinmapping: 
  * RGB: 9,10,11
  * Poti: A5
  * Button: 3,4,5
+ * @author Lucas
+ * 
+ * 
  */
 
 public class Simulator implements Runnable, ActionListener {
@@ -43,10 +47,8 @@ public class Simulator implements Runnable, ActionListener {
 	private Thread simuThread;
 
 	private Vector<SimCodeFunction> functionsCode = new Vector<SimCodeFunction>();
-
-	//changed to public by Anian
-	//private Simulator() {
-	public Simulator() {
+	
+	private Simulator() {
 		createSubClasses();
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
index 1970fe8..9956dd5 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
@@ -11,7 +11,10 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
+ * Diese Klasse hält die Daten eines "virtuellen" Arduinos und verwaltet die Hardware
  * @author Lucas
+ * 
+ *
  *
  */
 public class Arduino {
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
index d1f0662..c24d32a 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
@@ -7,7 +7,10 @@ import java.util.Observable;
 import java.util.Observer;
 
 /**
+ * Diese Klasse ist für einen Pin auf dem Arduino
  * @author Lucas
+ * 
+ * 
  *
  */
 public class Pin extends Observable {
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
index 109fd7f..22fdba8 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
@@ -6,7 +6,10 @@ package tec.letsgoing.ardublock.simulator.arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
+ * Diese Klasse speichert eine Variable und stellt diese über Operationen zur Verfügung
  * @author Lucas
+ * 
+ * 
  *
  */
 public class Variable {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
index c306437..04d81c1 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
@@ -8,6 +8,9 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Jedes Codeelement erbt von dieser dieser Klasse.
+ * Durch die run()-Methode kann jedes Code-Objekt ausgeführt werden.
  *
  */
 public abstract class SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
index b1c7c2e..2ac24cd 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
@@ -10,6 +10,8 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Verbinde einen beliebigen Block mit einer Zeichenkette
  *
  */
 public class CodeConnectString extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
index 82aa58a..823fc3c 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
@@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * Sende Nachricht via Serial
  *
  */
 public class CodeSerialPrint extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
index d64ddf2..1a2a743 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
@@ -10,7 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Warte Millisekunden.
  */
 public class CodeDelay extends SimCode {
 	SimTypeInt codeBlock;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
index 200f52e..a628aec 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe Befehle aus, falls "falls"-Block FALSCH (und evtl. "sonst falls"-Block) sind.
  */
 public class CodeElse extends CodeTypeIf {
 	private Vector<SimCode> codeBlocks;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
index 837d21e..42bd522 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe die Befehle aus wenn falls-Block FALSCH ist und Bedingung WAHR ist.
  */
 public class CodeElseIf extends CodeTypeIf {
 	private CodeTypeIf follow;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
index 3a8ca8f..5969616 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Wiederhole die Befehle x-mal.
  */
 public class CodeFor extends SimCode {
 	SimTypeInt count;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
index d441b28..9d7b600 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
@@ -13,7 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Wiederhole die Befehle x-mal. Die Wiederholungen werden in der Variable gespeichert.
  */
 public class CodeForCount extends SimCode {
 	private SimTypeInt count;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
index 7ac50fe..e604af3 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
@@ -13,6 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 /**
  * @author Lucas
  *
+ * Führe Befehle aus, wenn die Bedingung WAHR ist.
  */
 public class CodeIf extends CodeTypeIf {
 	private CodeTypeIf follow;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
index 4efc4c5..378b1d9 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
@@ -9,6 +9,8 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Unterklasse für die If-Codeblöcke
  *
  */
 public abstract class CodeTypeIf extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
index 68db29f..3a1d4bf 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe Befehle aus, solange die Bedingung WAHR ist.
  */
 public class CodeWhile extends SimCode {
 	SimTypeBool condition;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
index 6ca2717..e9d7db6 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
@@ -13,7 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Befehle ausserhalb von mache werden nur alle x-Millisekunden ausgeführt\nDie Startzeit jedes Durchgangs wird in der Variable gespeichert
  */
 public class CodeWhileMillis extends SimCode {
 	private SimTypeInt duration;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
index 0179cbc..90850f7 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- * 
+ * Klasse für einen BooldatenTyp
  */
 public class SimTypeBool extends SimCode {
 	boolean value = false;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
index e1e8998..e70b468 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ *	Klasse für einen Int-Datentyp
  */
 public class SimTypeInt extends SimCode {
 	private int value = 0;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
index 0dba4ae..8d38b79 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Klasse für einen Zeichenketten Datentyp
  */
 public class SimTypeString extends SimCode {
 	private String content;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
index a64f5ec..63c2189 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
@@ -8,7 +8,7 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
  * @author Lucas
- *
+ * Führt das Unterprogramm mit dem Namen aus.
  */
 public class CodeExecuteFunction extends SimCode {
 	private String name;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
index 61859e1..fe0aff0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
  * @author Lucas
- *
+ * Erstellt ein Unterprogramm.
  */
 public class SimCodeFunction {
 	private String name;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
index 4b855a4..1ccd918 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
@@ -9,7 +9,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
- * @author Lucas //TODO Block Beschreibung realtiv zu Ardublock
+ * Liest den analogen Wert vom Pin [0V=0;5V=1023]
+ * @author Lucas 
+ * 
  */
 public class CodeAnalogRead extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
index 8d6c35e..2fd74c2 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
@@ -10,7 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * PWM-Ausgang Wert[0-255] zuweisen
  */
 public class CodeAnalogWrite extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
index 8edb168..bbe6a23 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
@@ -10,8 +10,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
+ * Liest den digitalen Wert des Pins ein [HIGH/LOW]
  * @author Lucas
- *
+ * 
  */
 public class CodeDigitalRead extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
index fa98aac..496cb22 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Ausgang eines digitalen Ausgangs festlegen (HIGH/LOW)
  */
 public class CodeDigitalWrite extends SimCode {
 	SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/view/GUI.java b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
index 4b560d3..7bcd7f0 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/GUI.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
@@ -3,11 +3,16 @@
  */
 package tec.letsgoing.ardublock.simulator.view;
 
+import java.awt.BasicStroke;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Vector;
@@ -33,6 +38,7 @@ import tec.letsgoing.ardublock.simulator.view.modules.Poti;
 import tec.letsgoing.ardublock.simulator.view.modules.RGB;
 
 /**
+ * Verwaltet die graphische Oberfläche.
  * @author Lucas
  *
  */
@@ -45,17 +51,32 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 
 	public GUI(Simulator simu) {
 		super("ArdubBlock Simulator");
-		// TODO Module geben Pin Positionen
 		modules[0] = new RGB(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM31_RGB_LED.png"))));
 		modules[1] = new Button(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM26_Taster.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_Off.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_On.png"))));
 		modules[2] = new Poti(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM24_Potentiometer.png"))));
-		modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))));
-
+		modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))),simu);
+		
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		this.setResizable(false);
 		Container mainPane = this.getContentPane();
 
-		JPanel modulPanel = new JPanel(new BorderLayout());
+		JPanel modulPanel = new JPanel(new BorderLayout()) {
+			@Override 
+			public void paint(Graphics g) {
+				
+				super.paint(g);
+				
+				for (int i =-1 ; i<2;i++) {
+					g.setColor(Color.BLACK);
+					g.fillRect(i*294+261, 183, 60, 5);
+					g.setColor(Color.RED);
+					g.fillRect(i*294+261, 211, 60, 5);
+					
+				}
+				drawConnections(g);
+				
+			}
+		};
 		modulPanel.add(modules[0].getPane(), BorderLayout.WEST);
 		modulPanel.add(modules[1].getPane(), BorderLayout.CENTER);
 		modulPanel.add(modules[2].getPane(), BorderLayout.EAST);
@@ -65,7 +86,8 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 		mainPane.add(createControlPanel(simu), BorderLayout.LINE_END);
 		mainPane.add(createSerialLog(), BorderLayout.PAGE_END);
 		this.pack();
-		//this.setLocation(-1000, 0); Code to Run the Window on seconds screen
+		System.out.println(modules[2].getPane().getLocation());
+		//this.setLocation(-1300, 0); //FIXME Code to Run the Window on second screen
 		this.setVisible(true);
 
 	}
@@ -129,6 +151,24 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 		panel.add(scrollPane, BorderLayout.PAGE_END);
 		return panel;
 	}
+	
+	private void drawConnections(Graphics g) {
+		int[] assignment= {11,10,9,5,4,3,19};
+		g.setColor(Color.ORANGE);
+		Vector<Point> pinArduino=modules[3].getPinPos();
+		Point posArduino=modules[3].getPosition();
+		int counter=0;
+		Stroke roundLine=new BasicStroke(5,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+		for (int i=0;i<3;i++) {
+			Vector<Point> pos =modules[i].getPinPos();
+			for (Point p:pos) {
+				Graphics2D g2 = (Graphics2D) g;
+                g2.setStroke(roundLine);
+				g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, pinArduino.get(assignment[counter]).x+posArduino.x, pinArduino.get(assignment[counter]).y+posArduino.y);
+				counter++;
+			}
+		}
+	}
 
 	public void run() {
 		while (!stopFlag) {
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
index cc8d31a..6c04cf9 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
@@ -8,16 +8,23 @@ import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
 
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JLabel;
+import javax.swing.JToggleButton;
 
+import tec.letsgoing.ardublock.simulator.Simulator;
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
+ * Modul für einen Arduino Uno
  * @author Lucas
  *
  */
@@ -26,15 +33,16 @@ public class ArduinoUno extends Modul {
 	private boolean ledOn;
 	private int led13 = 0;
 
-	public ArduinoUno(ImageIcon _icon) {
-		
-		// TODO Arduino mittig anordnen
-		layerpane.setPreferredSize(new Dimension(587, 418));
+	public ArduinoUno(ImageIcon _icon,Simulator simu) {
+		int locx=100;
+		int locy=50;
+		layerpane.setPreferredSize(new Dimension(587+locx, 418+locy));//587,418
 		JLabel chiplabel = new JLabel();
 		ImageIcon chipIcon = _icon;
 		chipIcon = new ImageIcon(chipIcon.getImage().getScaledInstance(587, 418, Image.SCALE_SMOOTH));
 		chiplabel.setIcon(chipIcon);
 		chiplabel.setSize(587, 418);
+		chiplabel.setLocation(locx, locy);
 		layerpane.add(chiplabel, 0);
 
 		JLabel labelPower = new JLabel() {
@@ -50,7 +58,7 @@ public class ArduinoUno extends Modul {
 
 		};
 
-		labelPower.setLocation(504, 126);
+		labelPower.setLocation(504+locx, 126+locy);
 		labelPower.setSize(20, 20);
 		layerpane.add(labelPower, 0);
 
@@ -64,9 +72,25 @@ public class ArduinoUno extends Modul {
 
 		};
 
-		label13.setLocation(257, 89);
+		label13.setLocation(257+locx, 89+locy);
 		label13.setSize(20, 20);
 		layerpane.add(label13, 0);
+		
+		JButton button = new JButton();
+		button.setSize(70, 70);
+		button.setActionCommand("reset");
+		button.addActionListener(simu);
+		button.setOpaque(false);
+		button.setContentAreaFilled(false);
+		button.setBorderPainted(false);
+		
+		JLabel labelButton = new JLabel();
+		labelButton.add(button);
+		labelButton.setSize(60, 51);
+		labelButton.setLocation(64+locx, 1+locy);
+		layerpane.add(labelButton,0);
+		
+		calculatePinPos(locx,locy);
 
 	}
 
@@ -89,5 +113,35 @@ public class ArduinoUno extends Modul {
 		tmpPin.setObserver(this);
 		return true;
 	}
+	
+	private void calculatePinPos(int locx,int locy) {
+		Vector<Point> pins=new Vector<Point>();
+		int offset=0;
+		for (int i=15;i>1;i--) {
+			if (i<8)offset=-11;
+			pins.add(new Point(i*20+locx+246+offset,locy+19));
+		}
+		for (int i=0;i<6;i++) {
+			pins.add(new Point(i*20+locx+447,locy+397));
+		}
+		//Code to check the Pin Pos
+		/*JLabel label;
+		for (Point pin:pins) {
+			label= new JLabel() {
+				@Override
+				public void paintComponent(Graphics g) {
+					g.setColor(Color.RED);
+					g.fillRect(0, 0, 10, 10);
+				}
+
+			};
+
+			label.setLocation(pin.x,pin.y);
+			label.setSize(10, 10);
+			layerpane.add(label, 0);
+		}*/
+		this.setPinPos(pins);
+	}
+
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
index cd63318..4cebd9f 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
@@ -3,9 +3,14 @@
  */
 package tec.letsgoing.ardublock.simulator.view.modules;
 
+import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Point;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JToggleButton;
@@ -14,6 +19,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit 3 Toogle Buttons
  * @author Lucas
  *
  */
@@ -64,7 +70,7 @@ public class Button extends Modul implements ActionListener {
 		layerpane.add(label1, 0);
 		layerpane.add(label2, 0);
 		layerpane.add(label3, 0);
-
+		calculatePinPos();
 	}
 
 	public void updateModul(Pin pin) {
@@ -109,5 +115,13 @@ public class Button extends Modul implements ActionListener {
 		lastState[pin] = value;
 		pins.get(pin).setValue(value);
 	}
+	
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		for (int i=0;i<3;i++) {
+			pins.add(new Point(i*30+117,235));
+		}
+		this.setPinPos(pins);
+	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
index 8a932b6..3522dc4 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
@@ -15,6 +15,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Oberklasse für alle Module
  * @author Lucas
  *
  */
@@ -23,6 +24,7 @@ public abstract class Modul implements Observer  {
 	private Point position;
 	protected Vector<Pin> pins = new Vector<Pin>();
 	protected JLayeredPane layerpane = new JLayeredPane();
+	protected Vector<Point> pinPos=new Vector<Point>();
 
 	public void setState(boolean State) {
 		active = State;
@@ -37,7 +39,8 @@ public abstract class Modul implements Observer  {
 	}
 
 	public Point getPosition() {
-		return position;
+		//return position;
+		return layerpane.getLocation();
 	}
 
 	public void update(Observable Observable, Object arg1) {
@@ -55,6 +58,14 @@ public abstract class Modul implements Observer  {
 	public void addPin(Pin _pin) {
 		pins.add(_pin);
 	}
+	
+	public Vector<Point> getPinPos() {
+		return pinPos;
+	}
+	
+	public void setPinPos(Vector<Point> _pins) {
+		pinPos=_pins;
+	}
 
 	public JLayeredPane getPane() {
 		return layerpane;
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
index be3ad1e..7c90764 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
@@ -3,7 +3,15 @@
  */
 package tec.letsgoing.ardublock.simulator.view.modules;
 
+import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.util.Hashtable;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -15,10 +23,11 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit einem Potentiometer
  * @author Lucas
  *
  */
-public class Poti extends Modul implements  ChangeListener {
+public class Poti extends Modul implements  ChangeListener, MouseWheelListener {
 	int value = 0;
 	JSlider slider;
 
@@ -33,10 +42,19 @@ public class Poti extends Modul implements  ChangeListener {
 		slider.setMajorTickSpacing(256);
 		slider.setMinorTickSpacing(64);
 		slider.setPaintTicks(true);
+		
+		//Create the label table
+		Hashtable<Integer,JLabel> labelTable = new Hashtable<Integer,JLabel>();
+		labelTable.put( new Integer( 10 ), new JLabel("0 V") );
+		labelTable.put( new Integer( 512 ), new JLabel("2.5 V") );
+		labelTable.put( new Integer( 1023 ), new JLabel("5 V") );
+		slider.setLabelTable( labelTable );
+
 		slider.setPaintLabels(true);
 		slider.setPreferredSize(new Dimension(180,50));
 		slider.setOpaque(false);
 		slider.addChangeListener(this);
+		slider.addMouseWheelListener(this);
 		
 		JPanel sliderPanel=new JPanel();
 		sliderPanel.add(slider);
@@ -46,6 +64,9 @@ public class Poti extends Modul implements  ChangeListener {
 		layerpane.add(chiplabel, 0);
 		layerpane.add(sliderPanel,0);
 		
+		calculatePinPos();
+		
+		
 		
 	}
 
@@ -67,4 +88,23 @@ public class Poti extends Modul implements  ChangeListener {
 		pins.get(0).setValue(slider.getValue());
 		
 	}
+
+	@Override
+	public void mouseWheelMoved(MouseWheelEvent arg0) {
+		int notches = arg0.getWheelRotation();
+		if (notches > 0) {
+			slider.setValue(slider.getValue()+10);
+		} else {
+			slider.setValue(slider.getValue()-10);
+		}
+		
+		
+		
+	}
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		pins.add(new Point(30+117,235));
+		this.setPinPos(pins);
+	}
+	
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
index 104e87e..0c92578 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
@@ -7,6 +7,9 @@ import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.Point;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 
@@ -14,6 +17,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit einer RGB LED
  * @author Lucas
  *
  */
@@ -44,6 +48,8 @@ public class RGB extends Modul {
 		ledlabel.setLocation(107, 37);
 		ledlabel.setSize(200, 200);
 		layerpane.add(ledlabel, 0);
+		calculatePinPos();
+		
 	}
 
 	public void updateModul(Pin pin) {
@@ -71,5 +77,13 @@ public class RGB extends Modul {
 
 		return true;
 	}
+	
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		for (int i=0;i<3;i++) {
+			pins.add(new Point(i*30+117,235));
+		}
+		this.setPinPos(pins);
+	}
 
 }
-- 
GitLab