From 07be07a055161a9c703254d1d2f533b711542bb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Tue, 17 May 2022 12:23:46 +0200
Subject: [PATCH] added abp examples & example-properties

---
 .../com/ardublock/ui/OpenblocksFrame.java     |  32 ++-
 .../com/ardublock/block/ardublock.properties  |   7 +-
 .../ardublock/block/ardublock_de.properties   |   6 +
 .../block/ardublock_en_GB.properties          |   6 +
 .../ardublock/examples/AnalogReadSerial.abp   | 179 +++++++++++++
 .../com/ardublock/examples/ButtonLED.abp      | 249 ++++++++++++++++++
 .../ardublock/examples/CounterVariable.abp    | 244 +++++++++++++++++
 .../ardublock/examples/DigitalReadSerial.abp  | 179 +++++++++++++
 .../examples/DigitalVariableToggle.abp        | 229 ++++++++++++++++
 .../ardublock/examples/WhileButtonBlink.abp   | 221 ++++++++++++++++
 10 files changed, 1347 insertions(+), 5 deletions(-)
 create mode 100644 src/main/resources/com/ardublock/examples/AnalogReadSerial.abp
 create mode 100644 src/main/resources/com/ardublock/examples/ButtonLED.abp
 create mode 100644 src/main/resources/com/ardublock/examples/CounterVariable.abp
 create mode 100644 src/main/resources/com/ardublock/examples/DigitalReadSerial.abp
 create mode 100644 src/main/resources/com/ardublock/examples/DigitalVariableToggle.abp
 create mode 100644 src/main/resources/com/ardublock/examples/WhileButtonBlink.abp

diff --git a/src/main/java/com/ardublock/ui/OpenblocksFrame.java b/src/main/java/com/ardublock/ui/OpenblocksFrame.java
index 72d2071..0cf8ba0 100644
--- a/src/main/java/com/ardublock/ui/OpenblocksFrame.java
+++ b/src/main/java/com/ardublock/ui/OpenblocksFrame.java
@@ -897,9 +897,29 @@ public class OpenblocksFrame extends JFrame
 		//************************************
 		//EXAMPLES
 		//*************************************
+		//TODO: test if adding automatically is possible
 		JMenuItem blinkExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.blink"));
 		blinkExample.addActionListener(new OpenExampleButtonListener("Blink.abp", this));
 		
+		JMenuItem digitalSerialExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.digitalserial"));
+		digitalSerialExample.addActionListener(new OpenExampleButtonListener("DigitalReadSerial.abp", this));
+		
+		JMenuItem analogSerialExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.analogserial"));
+		analogSerialExample.addActionListener(new OpenExampleButtonListener("DigitalReadSerial.abp", this));
+		
+		JMenuItem buttonLedExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.buttonled"));
+		buttonLedExample.addActionListener(new OpenExampleButtonListener("ButtonLED.abp", this));
+		
+		JMenuItem digitalVariableToggleExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.digitalvariabletoggle"));
+		digitalVariableToggleExample.addActionListener(new OpenExampleButtonListener("DigitalVariableToggle.abp", this));
+		
+		JMenuItem counterVariableExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.countervariable"));
+		counterVariableExample.addActionListener(new OpenExampleButtonListener("CounterVariable.abp", this));
+		
+		JMenuItem whileButtonExample = new JMenuItem(uiMessageBundle.getString("ardublock.examples.whilebutton"));
+		whileButtonExample.addActionListener(new OpenExampleButtonListener("WhileButtonBlink.abp", this));
+
+		
 		
 		
 		
@@ -952,9 +972,12 @@ public class OpenblocksFrame extends JFrame
 		examplesSubMenu.add(communicationExamplesSubMenu);
 		
 		basicExamplesSubMenu.add(blinkExample);
-		digitalExamplesSubMenu.add("digitalRead");
-		analogExamplesSubMenu.add("analogRead");
-		communicationExamplesSubMenu.add("serialReadExample");
+		digitalExamplesSubMenu.add(digitalSerialExample);
+		digitalExamplesSubMenu.add(buttonLedExample);
+		digitalExamplesSubMenu.add(digitalVariableToggleExample);
+		digitalExamplesSubMenu.add(whileButtonExample);
+		analogExamplesSubMenu.add(analogSerialExample);
+		analogExamplesSubMenu.add(counterVariableExample);
 		
 		programMenu.add(generateMenuItem);
 		programMenu.add(simulateMenuItem);
@@ -1155,7 +1178,8 @@ public class OpenblocksFrame extends JFrame
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
-		
+		context.setSaveFileName(exampleName);
+		//TODO: SET programm title 
 		this.setTitle(makeFrameTitle());
 	}
 	
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index 4791a7e..4c99959 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -157,7 +157,12 @@ message.question.newfile_on_workspace_changed=The program has changed, do you wa
 #  EXAMPLES
 #****************************
 ardublock.examples.blink=Blink
-
+ardublock.examples.digitalserial=digitalRead Serial
+ardublock.examples.analogserial=analogRead Serial
+ardublock.examples.buttonled=digitalRead LED
+ardublock.examples.digitalvariabletoggle=toggle digital Variable
+ardublock.examples.countervariable=counter
+ardublock.examples.whilebutton=digitalRead while
 
 ##################
 #  BLOCK CONFIG  #
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index af8a444..31fc071 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -158,6 +158,12 @@ message.content.saveOnExit=Soll das Programm gespeichert werden bevor ArduBlock
 #  EXAMPLES
 #****************************
 ardublock.examples.blink=Blink
+ardublock.examples.digitalserial=digitalRead Serial
+ardublock.examples.analogserial=analogRead Serial
+ardublock.examples.buttonled=digitalRead LED
+ardublock.examples.digitalvariabletoggle=toggle digitale Variable
+ardublock.examples.countervariable=Zaehler
+ardublock.examples.whilebutton=digitalRead solange
 
 ##################
 #  BLOCK CONFIG  #
diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
index b14ab3d..0655a81 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -159,6 +159,12 @@ message.content.saveOnExit=Soll das Programm gespeichert werden bevor ArduBlock
 #  EXAMPLES
 #****************************
 ardublock.examples.blink=Blink
+ardublock.examples.digitalserial=digitalRead Serial
+ardublock.examples.analogserial=analogRead Serial
+ardublock.examples.buttonled=digitalRead LED
+ardublock.examples.digitalvariabletoggle=toggle bool Variable
+ardublock.examples.countervariable=Zaehler
+ardublock.examples.whilebutton=digitalRead while
 
 ##################
 #  BLOCK CONFIG  #
diff --git a/src/main/resources/com/ardublock/examples/AnalogReadSerial.abp b/src/main/resources/com/ardublock/examples/AnalogReadSerial.abp
new file mode 100644
index 0000000..65c2390
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/AnalogReadSerial.abp
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="4480">
+<PageBlocks>
+<Block genus-name="string" id="176">
+<Label>Ausgabe auf SerialMonitor mit Zeilenumbruch</Label>
+<Location>
+<X>206</X>
+<Y>95</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>206</X>
+<Y>47</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="pin-read-analog" id="174">
+<Location>
+<X>611</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="173" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="single"/>
+</Plug>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="175" connector-kind="socket" connector-type="number" init-type="number" label="Pin A" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="175">
+<Label>0</Label>
+<Location>
+<X>747</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="174" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="166">
+<Label>Wert Poti</Label>
+<Location>
+<X>427</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="173" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="glue_number" id="173">
+<Location>
+<X>417</X>
+<Y>261</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="165" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="166" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="bottom"/>
+<BlockConnector con-block-id="174" connector-kind="socket" connector-type="number" init-type="number" label="" position-type="bottom"/>
+</Sockets>
+</Block>
+<Block genus-name="delay" id="171">
+<Location>
+<X>231</X>
+<Y>316</Y>
+</Location>
+<BeforeBlockId>165</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="172" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="172">
+<Label>10</Label>
+<Location>
+<X>473</X>
+<Y>319</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="171" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="serial_print" id="165">
+<Location>
+<X>231</X>
+<Y>258</Y>
+</Location>
+<BeforeBlockId>80</BeforeBlockId>
+<AfterBlockId>171</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="173" connector-kind="socket" connector-type="string" init-type="string" label="Zeichenkette" position-type="single"/>
+<BlockConnector con-block-id="167" connector-kind="socket" connector-type="boolean" init-type="boolean" label="neue Zeile" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="true" id="167">
+<Location>
+<X>417</X>
+<Y>289</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="165" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>20</X>
+<Y>20</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector con-block-id="176" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>206</X>
+<Y>167</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2022</Label>
+<Location>
+<X>206</X>
+<Y>143</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Einlesen Analoger Eingang an A0</Label>
+<Location>
+<X>206</X>
+<Y>71</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>AnalogReadSerial</Label>
+<Location>
+<X>206</X>
+<Y>23</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="loop" id="80">
+<Location>
+<X>20</X>
+<Y>250</Y>
+</Location>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="165" connector-kind="socket" connector-type="cmd" init-type="cmd" label="mache" position-type="single"/>
+</Sockets>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
diff --git a/src/main/resources/com/ardublock/examples/ButtonLED.abp b/src/main/resources/com/ardublock/examples/ButtonLED.abp
new file mode 100644
index 0000000..55c1d36
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/ButtonLED.abp
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="4480">
+<PageBlocks>
+<Block genus-name="else" id="347">
+<Location>
+<X>234</X>
+<Y>395</Y>
+</Location>
+<BeforeBlockId>343</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="381" connector-kind="socket" connector-type="cmd" init-type="cmd" label="dann" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="pin-write-digital" id="381">
+<Location>
+<X>321</X>
+<Y>403</Y>
+</Location>
+<BeforeBlockId>347</BeforeBlockId>
+<AfterBlockId>384</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="382" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="383" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="pin-write-digital" id="384">
+<Location>
+<X>321</X>
+<Y>457</Y>
+</Location>
+<BeforeBlockId>381</BeforeBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="385" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="386" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="digital-high" id="386">
+<Location>
+<X>459</X>
+<Y>484</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="384" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="385">
+<Label>10</Label>
+<Location>
+<X>459</X>
+<Y>460</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="384" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="digital-low" id="383">
+<Location>
+<X>459</X>
+<Y>430</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="381" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="382">
+<Label>9</Label>
+<Location>
+<X>459</X>
+<Y>406</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="381" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="pin-write-digital" id="357">
+<Location>
+<X>327</X>
+<Y>332</Y>
+</Location>
+<BeforeBlockId>354</BeforeBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="358" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="359" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="digital-low" id="359">
+<Location>
+<X>465</X>
+<Y>359</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="357" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="358">
+<Label>10</Label>
+<Location>
+<X>465</X>
+<Y>335</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="357" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="pin-write-digital" id="354">
+<Location>
+<X>327</X>
+<Y>278</Y>
+</Location>
+<BeforeBlockId>343</BeforeBlockId>
+<AfterBlockId>357</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="355" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="356" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="digital-high" id="356">
+<Location>
+<X>465</X>
+<Y>305</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="354" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="355">
+<Label>9</Label>
+<Location>
+<X>465</X>
+<Y>281</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="354" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="pin-read-digital" id="348">
+<Location>
+<X>330</X>
+<Y>249</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="343" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="single"/>
+</Plug>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="349" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="349">
+<Label>2</Label>
+<Location>
+<X>462</X>
+<Y>249</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="348" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="if" id="343">
+<Location>
+<X>234</X>
+<Y>246</Y>
+</Location>
+<BeforeBlockId>245</BeforeBlockId>
+<AfterBlockId>347</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="348" connector-kind="socket" connector-type="boolean" init-type="boolean" label="teste" position-type="single"/>
+<BlockConnector con-block-id="354" connector-kind="socket" connector-type="cmd" init-type="cmd" label="dann" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="loop" id="245">
+<Location>
+<X>23</X>
+<Y>238</Y>
+</Location>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="343" connector-kind="socket" connector-type="cmd" init-type="cmd" label="mache" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>20</X>
+<Y>20</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>206</X>
+<Y>167</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2021</Label>
+<Location>
+<X>206</X>
+<Y>143</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Übungsaufgabe zur Fortbildung</Label>
+<Location>
+<X>206</X>
+<Y>71</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>206</X>
+<Y>47</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>Übung 5</Label>
+<Location>
+<X>206</X>
+<Y>23</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
diff --git a/src/main/resources/com/ardublock/examples/CounterVariable.abp b/src/main/resources/com/ardublock/examples/CounterVariable.abp
new file mode 100644
index 0000000..58f1011
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/CounterVariable.abp
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="4480">
+<PageBlocks>
+<Block genus-name="delay" id="447">
+<Location>
+<X>142</X>
+<Y>436</Y>
+</Location>
+<BeforeBlockId>444</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="448" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="448">
+<Label>1000</Label>
+<Location>
+<X>384</X>
+<Y>439</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="447" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="serial_print" id="451">
+<Location>
+<X>142</X>
+<Y>320</Y>
+</Location>
+<BeforeBlockId>443</BeforeBlockId>
+<AfterBlockId>444</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="454" connector-kind="socket" connector-type="string" init-type="string" label="String" position-type="single"/>
+<BlockConnector con-block-id="453" connector-kind="socket" connector-type="boolean" init-type="boolean" label="neue Zeile" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="true" id="453">
+<Location>
+<X>316</X>
+<Y>351</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="451" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="glue_number" id="454">
+<Location>
+<X>316</X>
+<Y>323</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="451" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="452" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="bottom"/>
+<BlockConnector con-block-id="455" connector-kind="socket" connector-type="number" init-type="number" label="" position-type="bottom"/>
+</Sockets>
+</Block>
+<Block genus-name="variable_number" id="455">
+<Label>zaehlWert</Label>
+<Location>
+<X>552</X>
+<Y>326</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="454" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="452">
+<Label>Aktueller Wert:</Label>
+<Location>
+<X>326</X>
+<Y>326</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="454" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="setter_variable_number" id="444">
+<Location>
+<X>142</X>
+<Y>378</Y>
+</Location>
+<BeforeBlockId>451</BeforeBlockId>
+<AfterBlockId>447</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="445" connector-kind="socket" connector-type="number" init-type="number" label="Variable" position-type="single"/>
+<BlockConnector con-block-id="450" connector-kind="socket" connector-type="number" init-type="number" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="addition" id="450">
+<Location>
+<X>374</X>
+<Y>405</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="444" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="449" connector-kind="socket" connector-type="number" init-type="number" label="" position-type="bottom"/>
+<BlockConnector con-block-id="446" connector-kind="socket" connector-type="number" init-type="number" label="" position-type="bottom"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="446">
+<Location>
+<X>519</X>
+<Y>408</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="450" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="variable_number" id="449">
+<Label>zaehlWert</Label>
+<Location>
+<X>384</X>
+<Y>408</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="450" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="variable_number" id="445">
+<Label>zaehlWert</Label>
+<Location>
+<X>374</X>
+<Y>381</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="444" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="setter_variable_number" id="440">
+<Location>
+<X>143</X>
+<Y>255</Y>
+</Location>
+<BeforeBlockId>443</BeforeBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="441" connector-kind="socket" connector-type="number" init-type="number" label="Variable" position-type="single"/>
+<BlockConnector con-block-id="442" connector-kind="socket" connector-type="number" init-type="number" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="442">
+<Label>0</Label>
+<Location>
+<X>375</X>
+<Y>282</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="440" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="variable_number" id="441">
+<Label>zaehlWert</Label>
+<Location>
+<X>375</X>
+<Y>258</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="440" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="sketch" id="443">
+<Location>
+<X>31</X>
+<Y>212</Y>
+</Location>
+<Sockets num-sockets="3">
+<BlockConnector connector-kind="socket" connector-type="cmd" init-type="cmd" label="" position-type="single"/>
+<BlockConnector con-block-id="440" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Setup" position-type="single"/>
+<BlockConnector con-block-id="451" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Loop" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>20</X>
+<Y>20</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>206</X>
+<Y>167</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2021</Label>
+<Location>
+<X>206</X>
+<Y>143</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Übungsaufgabe zur Fortbildung</Label>
+<Location>
+<X>206</X>
+<Y>71</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>206</X>
+<Y>47</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>Übung 5</Label>
+<Location>
+<X>206</X>
+<Y>23</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
diff --git a/src/main/resources/com/ardublock/examples/DigitalReadSerial.abp b/src/main/resources/com/ardublock/examples/DigitalReadSerial.abp
new file mode 100644
index 0000000..972e70f
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/DigitalReadSerial.abp
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="4480">
+<PageBlocks>
+<Block genus-name="string" id="250">
+<Label>Ausgabe auf SerialMonitor mit Zeilenumbruch</Label>
+<Location>
+<X>206</X>
+<Y>95</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="delay" id="171">
+<Location>
+<X>231</X>
+<Y>316</Y>
+</Location>
+<BeforeBlockId>165</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="172" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="172">
+<Label>10</Label>
+<Location>
+<X>473</X>
+<Y>319</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="171" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="serial_print" id="165">
+<Location>
+<X>231</X>
+<Y>258</Y>
+</Location>
+<BeforeBlockId>80</BeforeBlockId>
+<AfterBlockId>171</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="168" connector-kind="socket" connector-type="string" init-type="string" label="Zeichenkette" position-type="single"/>
+<BlockConnector con-block-id="167" connector-kind="socket" connector-type="boolean" init-type="boolean" label="neue Zeile" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="true" id="167">
+<Location>
+<X>417</X>
+<Y>289</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="165" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="glue_digital" id="168">
+<Location>
+<X>417</X>
+<Y>261</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="165" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="166" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="bottom"/>
+<BlockConnector con-block-id="169" connector-kind="socket" connector-type="boolean" init-type="boolean" label="" position-type="bottom"/>
+</Sockets>
+</Block>
+<Block genus-name="pin-read-digital" id="169">
+<Location>
+<X>645</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="168" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="single"/>
+</Plug>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="170" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="170">
+<Label>2</Label>
+<Location>
+<X>777</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="169" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="166">
+<Label>Zustand Taster</Label>
+<Location>
+<X>427</X>
+<Y>264</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="168" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>20</X>
+<Y>20</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector con-block-id="250" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>206</X>
+<Y>167</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2022</Label>
+<Location>
+<X>206</X>
+<Y>143</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Einlesen digitaler Eingang</Label>
+<Location>
+<X>206</X>
+<Y>71</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>206</X>
+<Y>47</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>DigitalReadSerial</Label>
+<Location>
+<X>206</X>
+<Y>23</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="loop" id="80">
+<Location>
+<X>20</X>
+<Y>250</Y>
+</Location>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="165" connector-kind="socket" connector-type="cmd" init-type="cmd" label="mache" position-type="single"/>
+</Sockets>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
diff --git a/src/main/resources/com/ardublock/examples/DigitalVariableToggle.abp b/src/main/resources/com/ardublock/examples/DigitalVariableToggle.abp
new file mode 100644
index 0000000..efbb8ec
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/DigitalVariableToggle.abp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="4480">
+<PageBlocks>
+<Block genus-name="setter_variable_digital" id="534">
+<Location>
+<X>142</X>
+<Y>320</Y>
+</Location>
+<BeforeBlockId>443</BeforeBlockId>
+<AfterBlockId>451</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="535" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Variable" position-type="single"/>
+<BlockConnector con-block-id="537" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="serial_print" id="451">
+<Location>
+<X>142</X>
+<Y>374</Y>
+</Location>
+<BeforeBlockId>534</BeforeBlockId>
+<AfterBlockId>447</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="539" connector-kind="socket" connector-type="string" init-type="string" label="String" position-type="single"/>
+<BlockConnector con-block-id="453" connector-kind="socket" connector-type="boolean" init-type="boolean" label="neue Zeile" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="delay" id="447">
+<Location>
+<X>142</X>
+<Y>432</Y>
+</Location>
+<BeforeBlockId>451</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="448" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="448">
+<Label>1000</Label>
+<Location>
+<X>384</X>
+<Y>435</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="447" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="true" id="453">
+<Location>
+<X>316</X>
+<Y>405</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="451" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="glue_digital" id="539">
+<Location>
+<X>316</X>
+<Y>377</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="451" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="452" connector-kind="socket" connector-type="string" init-type="string" label="" position-type="bottom"/>
+<BlockConnector con-block-id="540" connector-kind="socket" connector-type="boolean" init-type="boolean" label="" position-type="bottom"/>
+</Sockets>
+</Block>
+<Block genus-name="variable_digital" id="540">
+<Location>
+<X>552</X>
+<Y>380</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="539" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="452">
+<Label>Aktueller Wert:</Label>
+<Location>
+<X>326</X>
+<Y>380</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="539" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="not" id="537">
+<Location>
+<X>382</X>
+<Y>347</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="534" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="single"/>
+</Plug>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="538" connector-kind="socket" connector-type="boolean" init-type="boolean" label="" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="variable_digital" id="538">
+<Location>
+<X>446</X>
+<Y>347</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="537" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="variable_digital" id="535">
+<Location>
+<X>382</X>
+<Y>323</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="534" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="setter_variable_digital" id="531">
+<Location>
+<X>143</X>
+<Y>255</Y>
+</Location>
+<BeforeBlockId>443</BeforeBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="532" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Variable" position-type="single"/>
+<BlockConnector con-block-id="533" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="false" id="533">
+<Location>
+<X>383</X>
+<Y>282</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="531" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="variable_digital" id="532">
+<Location>
+<X>383</X>
+<Y>258</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="531" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="sketch" id="443">
+<Location>
+<X>31</X>
+<Y>212</Y>
+</Location>
+<Sockets num-sockets="3">
+<BlockConnector connector-kind="socket" connector-type="cmd" init-type="cmd" label="" position-type="single"/>
+<BlockConnector con-block-id="531" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Setup" position-type="single"/>
+<BlockConnector con-block-id="534" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Loop" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>20</X>
+<Y>20</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>206</X>
+<Y>167</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2021</Label>
+<Location>
+<X>206</X>
+<Y>143</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Übungsaufgabe zur Fortbildung</Label>
+<Location>
+<X>206</X>
+<Y>71</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>206</X>
+<Y>47</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>Übung 5</Label>
+<Location>
+<X>206</X>
+<Y>23</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
diff --git a/src/main/resources/com/ardublock/examples/WhileButtonBlink.abp b/src/main/resources/com/ardublock/examples/WhileButtonBlink.abp
new file mode 100644
index 0000000..079714d
--- /dev/null
+++ b/src/main/resources/com/ardublock/examples/WhileButtonBlink.abp
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<cb:CODEBLOCKS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://education.mit.edu/openblocks/ns http://education.mit.edu/openblocks/codeblocks.xsd" xmlns:cb="http://education.mit.edu/openblocks/ns">
+<Pages collapsible-pages="yes" drawer-with-page="yes">
+<Page page-color="128 128 128" page-drawer="Main" page-infullview="yes" page-name="Main" page-width="5760">
+<PageBlocks>
+<Block genus-name="sketch" id="443">
+<Location>
+<X>30</X>
+<Y>233</Y>
+</Location>
+<Sockets num-sockets="3">
+<BlockConnector connector-kind="socket" connector-type="cmd" init-type="cmd" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="cmd" init-type="cmd" label="Setup" position-type="single"/>
+<BlockConnector con-block-id="456" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Loop" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="while" id="456">
+<Location>
+<X>141</X>
+<Y>311</Y>
+</Location>
+<BeforeBlockId>443</BeforeBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="457" connector-kind="socket" connector-type="boolean" init-type="boolean" label="teste" position-type="single"/>
+<BlockConnector con-block-id="459" connector-kind="socket" connector-type="cmd" init-type="cmd" label="Befehle" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="pin-write-digital" id="459">
+<Location>
+<X>260</X>
+<Y>343</Y>
+</Location>
+<BeforeBlockId>456</BeforeBlockId>
+<AfterBlockId>465</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="460" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="461" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="delay" id="465">
+<Location>
+<X>260</X>
+<Y>397</Y>
+</Location>
+<BeforeBlockId>459</BeforeBlockId>
+<AfterBlockId>462</AfterBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="466" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="pin-write-digital" id="462">
+<Location>
+<X>260</X>
+<Y>427</Y>
+</Location>
+<BeforeBlockId>465</BeforeBlockId>
+<AfterBlockId>467</AfterBlockId>
+<Sockets num-sockets="2">
+<BlockConnector con-block-id="463" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+<BlockConnector con-block-id="464" connector-kind="socket" connector-type="boolean" init-type="boolean" label="Wert" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="delay" id="467">
+<Location>
+<X>260</X>
+<Y>481</Y>
+</Location>
+<BeforeBlockId>462</BeforeBlockId>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="468" connector-kind="socket" connector-type="number" init-type="number" label="Millisekunden" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="468">
+<Label>500</Label>
+<Location>
+<X>502</X>
+<Y>484</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="467" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="digital-low" id="464">
+<Location>
+<X>398</X>
+<Y>454</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="462" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="463">
+<Label>9</Label>
+<Location>
+<X>398</X>
+<Y>430</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="462" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="466">
+<Label>500</Label>
+<Location>
+<X>502</X>
+<Y>400</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="465" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="digital-high" id="461">
+<Location>
+<X>398</X>
+<Y>370</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="459" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="number" id="460">
+<Label>9</Label>
+<Location>
+<X>398</X>
+<Y>346</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="459" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="pin-read-digital" id="457">
+<Location>
+<X>263</X>
+<Y>314</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="456" connector-kind="plug" connector-type="boolean" init-type="boolean" label="" position-type="single"/>
+</Plug>
+<Sockets num-sockets="1">
+<BlockConnector con-block-id="458" connector-kind="socket" connector-type="number" init-type="number" label="Pin" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="458">
+<Label>2</Label>
+<Location>
+<X>395</X>
+<Y>314</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="457" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="program_comment" id="82">
+<Location>
+<X>19</X>
+<Y>19</Y>
+</Location>
+<Sockets num-sockets="7">
+<BlockConnector con-block-id="83" connector-kind="socket" connector-type="string" init-type="string" label="Dateiname" position-type="single"/>
+<BlockConnector con-block-id="84" connector-kind="socket" connector-type="string" init-type="string" label="Autor" position-type="single"/>
+<BlockConnector con-block-id="85" connector-kind="socket" connector-type="string" init-type="string" label="Beschreibung" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector connector-kind="socket" connector-type="string" init-type="string" label="" position-type="single"/>
+<BlockConnector con-block-id="86" connector-kind="socket" connector-type="string" init-type="string" label="Datum" position-type="single"/>
+<BlockConnector con-block-id="87" connector-kind="socket" connector-type="number" init-type="number" label="Version" position-type="single"/>
+</Sockets>
+</Block>
+<Block genus-name="number" id="87">
+<Label>0.1</Label>
+<Location>
+<X>205</X>
+<Y>166</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="number" init-type="number" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="86">
+<Label>01.01.2021</Label>
+<Location>
+<X>205</X>
+<Y>142</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="85">
+<Label>Übungsaufgabe zur Fortbildung</Label>
+<Location>
+<X>205</X>
+<Y>70</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="84">
+<Label>letsgoING</Label>
+<Location>
+<X>205</X>
+<Y>46</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+<Block genus-name="string" id="83">
+<Label>Übung 5</Label>
+<Location>
+<X>205</X>
+<Y>22</Y>
+</Location>
+<Plug>
+<BlockConnector con-block-id="82" connector-kind="plug" connector-type="string" init-type="string" label="" position-type="mirror"/>
+</Plug>
+</Block>
+</PageBlocks>
+</Page>
+</Pages>
+</cb:CODEBLOCKS>
-- 
GitLab