<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://tsgdoc.socsci.ru.nl/index.php?action=history&amp;feed=atom&amp;title=Buttonbox_2013_Software</id>
	<title>Buttonbox 2013 Software - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://tsgdoc.socsci.ru.nl/index.php?action=history&amp;feed=atom&amp;title=Buttonbox_2013_Software"/>
	<link rel="alternate" type="text/html" href="http://tsgdoc.socsci.ru.nl/index.php?title=Buttonbox_2013_Software&amp;action=history"/>
	<updated>2026-06-15T02:55:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>http://tsgdoc.socsci.ru.nl/index.php?title=Buttonbox_2013_Software&amp;diff=229&amp;oldid=prev</id>
		<title>131.174.110.254 at 07:21, 29 April 2014</title>
		<link rel="alternate" type="text/html" href="http://tsgdoc.socsci.ru.nl/index.php?title=Buttonbox_2013_Software&amp;diff=229&amp;oldid=prev"/>
		<updated>2014-04-29T07:21:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:21, 29 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>131.174.110.254</name></author>
	</entry>
	<entry>
		<id>http://tsgdoc.socsci.ru.nl/index.php?title=Buttonbox_2013_Software&amp;diff=222&amp;oldid=prev</id>
		<title>131.174.110.254: Created page with &quot;&lt;div&gt;#include &amp;lt;EEPROM.h&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;// start reading from the first byte (address 0) of the EEPROM&lt;/div&gt;&lt;div&gt;int address = 0;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;//...&quot;</title>
		<link rel="alternate" type="text/html" href="http://tsgdoc.socsci.ru.nl/index.php?title=Buttonbox_2013_Software&amp;diff=222&amp;oldid=prev"/>
		<updated>2014-04-28T13:58:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;div&amp;gt;#include &amp;lt;EEPROM.h&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;// start reading from the first byte (address 0) of the EEPROM&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;int address = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;//...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div&amp;gt;#include &amp;amp;lt;EEPROM.h&amp;amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;// start reading from the first byte (address 0) of the EEPROM&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;int address = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;// available modes&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte mode;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte BITSI &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;= 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte BITSI_extend = 1;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;boolean NewCode &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; = false;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;unsigned long TimeoutPulseLength = 10; &amp;amp;nbsp;/* PulseLength in ms &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;unsigned long TimeSend &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; = 0; &amp;amp;nbsp; /* Debounce interval in ms &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;unsigned long TimeToSendOut &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;= 988;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;unsigned long TimeoutPacingLED &amp;amp;nbsp; = 500; /* Onboard Pacing LED interval in ms */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* Reserved hardware wiring for enabling/disabling the HCT244 input buffer to I[8] */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;int pinEnableBufIn = 13;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* Reserved hardware wiring for forcing 27KOhm pull-up / pull-down to I[8] */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;int pinPullUpDown &amp;amp;nbsp;= 19;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* There are 8 associated input bits D10=pin10, D11=pin11, D12=pin12&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;* A0=pin14/AI0, A1=pin15/AI1 ,A2=pin16/AI2, A3=pin17/AI3, A4=pin18/AI3 */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;//leonardo&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;//byte I[8] = { 10, 11, 19, 20, 21, 22, 23, 24 };&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;//uno&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte I[8] = { 10, 11, 12, 14, 15, 16, 17, 18};&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* declare SerialInChr to receive the desired Parallel_Out value in */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte SerialInChr = 1;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte SerialOutChr;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* declare a time varable to remember the time when the Parallel_Out was set and to compare with TimeNow,&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;* this way Parallel_Out can be implemented as a pulse with a desireded fixed pulseLength */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;unsigned long TimeOnsetOut = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/* declare bit state memory booleans to find out if input values have changed since the last looptest */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;/*boolean State_I[8] &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;= {&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;boolean Prev_State_I[8] = {&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;boolean State_I[8] &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;= {&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;boolean Prev_State_I[8] = {&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void setup()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // configure input and output ports&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; OutPortOutputMode();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; OutPortWrite(0);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; InPortInputMode();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // configure onboard devices&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // enable input buffer&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(pinEnableBufIn, OUTPUT);&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(pinEnableBufIn, LOW);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // enable pullup resistors&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(pinPullUpDown, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(pinPullUpDown, HIGH);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // blink stim leds&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; /*SerialOutChr = B00000001;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; for (byte i = 0; i &amp;lt; 9; i++) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;OutPortWrite(SerialOutChr);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;SerialOutChr = SerialOutChr &amp;lt;&amp;lt; 1;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;delay(70);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // read a byte from the current address of the EEPROM&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //mode = EEPROM.read(address);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; mode = BITSI;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // visual show mode to user&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; /*for (byte i = 0; i &amp;lt; 6; i++) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;OutPortWrite(mode);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;delay(250);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;OutPortWrite(0);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;delay(150);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // what mode are we running?&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; if (mode == BITSI) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; Serial.begin(115200);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; while (!Serial) ;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; Serial.println(&amp;quot;BITSI mode, Ready!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; else if (mode == BITSI_extend) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; Serial.begin(115200);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; while (!Serial) ;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; Serial.println(&amp;quot;BITSI_extend mode, Ready!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;//--- Forever Loop method -----------------------------------------------------------------------------------------------------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void loop()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; byte index = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //--- buttonbox_stream ---------------------------------------------------------------------------------------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; /*if (mode == buttonbox_stream) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* check if data has been sent from the computer&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; if (Serial.available()) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; //--- read the most recent byte&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; SerialInChr = Serial.read();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; OutPortWrite(SerialInChr);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; NewCode = true;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; //--- sync every ms-----------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; while (micros () &amp;lt; TimeSend) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; Serial.print(readInPort());&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; TimeSend = micros() + TimeToSendOut;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; }&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //--- buttonbox_event ---------------------------------------------------------------------------------------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; else if (mode == buttonbox_event){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* check if data has been sent from the computer&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; if (Serial.available()) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; //--- read the most recent byte&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; SerialInChr = Serial.read();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; OutPortWrite(SerialInChr);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; NewCode = true;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; //--- sync every ms-----------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; while (micros () &amp;lt; TimeSend) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* send data if there is any change&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; if (SerialOutChr != readInPort()){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; SerialOutChr = readInPort();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; if (digitalRead(10) == 1){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Serial.write(0b00000001);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; else if (digitalRead(11) == 1){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Serial.write(0b00000010);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; else {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Serial.write(0b00000100);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; TimeSend = micros() + TimeToSendOut;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; }*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //--- BITSI ------------------------------------------------------------------------------------------------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; if (mode == BITSI){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* the debouncing or asking for the time takes to much processor time, events do not have the same time accuracy anymore&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;tested this with ms timing of the buttonbox_stream, when it was implemented &amp;amp;nbsp;ms timing was not reached*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; byte index = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* Process incoming serial characters&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;*&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* The output bits are set immediately to reflect the value of the incoming serial character.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; //--- sync every ms-----------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; while (micros () &amp;lt; TimeSend) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* check if data has been sent from the computer */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; if (Serial.available()) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; //--- read the most recent byte&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; SerialInChr = Serial.read();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; //OutPortWrite(SerialInChr ^ 0b11111111);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; OutPortWrite(SerialInChr);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; NewCode = true;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* Process input bits&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;*&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* The input bits are monitored for state changes. If bit 0 goes from low to high, a capital 'A' character&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* is sent back to the PC over the serial line.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* When it changes back from high to low, a lowercase 'a' character is sent to the PC.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* For bits 0 to 7, the characters A-H and a-h are sent respectively.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;*&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* It is possible to connect mechanical switches to each of the input, because the input bits are debounced.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;* After a bit changes state, it will be ignored for a debouncing interval of [TimeoutDebounce] miliseconds.&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; /* loop over the bits, to check their states */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; for (index = 0; index &amp;lt; 8; index = index + 1) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; State_I[index] = digitalRead(I[index]);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; /* check for bit state change = egde, but not within debouncing interval */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; if (Prev_State_I[index] != State_I[index]) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; /* respond with the corresponding character */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; if (State_I[index] == HIGH) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Serial.print(char(97 + index));&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; else {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Serial.print(char(65 + index));&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; /* save new previous bit state */&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Prev_State_I[index] = State_I[index];&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; TimeSend = micros() + TimeToSendOut;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; }&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //--- change mode ---------------------------------------------------------------------------------------------&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;//00x &amp;amp;nbsp; &amp;amp;nbsp;= buttonbox_stream&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //000x &amp;amp;nbsp; = buttonbox_event&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //0000x &amp;amp;nbsp;= BITSI&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; //00000x = personal implementation&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;/*if ((SerialInChr == 0) &amp;amp;&amp;amp; (NewCode)){&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;NewCode = false;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;change_mode++;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;Serial.print(char(change_mode + 48));&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;else if ((change_mode &amp;gt; 1) &amp;amp;&amp;amp; (SerialInChr != 0)) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;if (change_mode == 2) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;EEPROM.write(0, buttonbox_stream);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;Serial.print(&amp;quot;new mode: stream, reboot!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;setup();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;else if (change_mode == 3) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;EEPROM.write(0, buttonbox_event);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;Serial.print(&amp;quot;new mode: event, reboot!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;setup();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;else if (change_mode == 4) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;EEPROM.write(0, BITSI);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;Serial.print(&amp;quot;new mode: BITSI, reboot!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;setup();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;else if (change_mode == 5) {&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;EEPROM.write(0, pers_impl);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;Serial.print(&amp;quot;new mode: personal, reboot!&amp;quot;);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;setup();&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;change_mode = 0;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp;}*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;// todo: implement writing to the input port&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void InPortWrite(byte code)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void OutPortWrite(byte code)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; byte b, d;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // perform bit calculations before updating the ports&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; b = (code &amp;amp; B11000000) &amp;gt;&amp;gt; 6 | (PINB &amp;amp; B11111100);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; d = (code &amp;amp; B00111111) &amp;lt;&amp;lt; 2;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // update the ports&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; PORTB = b;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; PORTD = d;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void OutPortOutputMode()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(2, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(3, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(4, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(5, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(6, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(7, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(8, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(9, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void InPortOutputMode()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(10, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(11, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(12, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(14, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(15, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(16, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(17, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(18, OUTPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void InPortInputMode()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // configure all the pins of the input port as inputs&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(10, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(11, INPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(12, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(14, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(15, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(16, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(17, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(18, INPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // disable internal pullup&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(10, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(11, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(12, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(14, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(15, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(16, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(17, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(18, HIGH);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;void OutPortInputMode()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // configure all the pins of the output port as inputs ;-)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(2, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(3, INPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(4, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(5, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(6, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(7, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(8, INPUT); &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; pinMode(9, INPUT);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; // enable internal pullup&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(2, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(3, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(4, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(5, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(6, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(7, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(8, HIGH); &amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; digitalWrite(9, HIGH);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte readInPort()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; byte b, c;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; b = PINB;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; c = PINC;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; return (((b &amp;amp; B00011100) &amp;gt;&amp;gt; 2) | ((c &amp;amp; B00011111) &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;&amp;lt; 3)) ^ (B11111111);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; /* &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;^^^^^^^^ &amp;amp;nbsp;*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;byte readOutPort()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; byte c, d;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; c = PINC;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; d = PIND;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; return ((d &amp;amp; B11111100) &amp;gt;&amp;gt; 2) |&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; ((c &amp;amp; B00000011) &amp;lt;&amp;lt; 6);&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp; /* &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;^^^^^^^^ &amp;amp;nbsp;*/&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;}&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>131.174.110.254</name></author>
	</entry>
</feed>