   updateRegisterX('E', PARSE_INPUT_PORTE);
   updateRegisterX('H', PARSE_INPUT_PORTH);
   updateRegisterX('J', PARSE_INPUT_PORTJ);
-
-}
-
+}
 
 int extractBitsBetween(int lsb, int msb, int DATA) {
   return  (DATA >> lsb) & ~(~0 << (msb - lsb + 1));
 }
 
 void setRegisterDirection() {
+  //Outputs, Direction Register moet 1 zijn om uitgang te zijn
   DDRB = USEDPINS_PORTB;
   DDRD = USEDPINS_PORTD;
   DDRE = USEDPINS_PORTE;
   DDRH = USEDPINS_PORTH;
   DDRJ = USEDPINS_PORTJ;
 
-  //HIER HETZELFDE DOEN VOOR DE INGANGEN
+  //Inputs, Direction Register moet 0 zijn om ingang te zijn.
+  DDRF = ~USEDPINS_PORTF;
+  DDRL = ~USEDPINS_PORTL;
+  DDRG = ~USEDPINS_PORTG;
+  DDRD = ~USEDPINS_PORTD; // Deze moet eigenlijk niet omdat DDRD bij de uitgangen al werd juist gezet.
+
 }
 
 //Deze functie gaat een register updaten met de waarden in NEWVALUE.

int INPUT_COMMAND_PORTJ = 0x00;

unsigned int FEEDBACK_STATUS_PORT = 0x0000;

char inData[25];
int x = 0;

//Outputs
#define USEDPINS_PORTB 0xE0 //b1110 0000
#define USEDPINS_PORTD 0x0C //b0000 1100
#define USEDPINS_PORTE 0x38 //b0011 1000
#define USEDPINS_PORTH 0x7B //b0111 1011
#define USEDPINS_PORTJ 0x03 //b0000 0011

//Inputs
#define USEDPINS_PORTF 0xFF //b1111 1111
#define USEDPINS_PORTL 0xC7 //b1100 0111
#define USEDPINS_PORTG 0x03 //b0000 0011
#define USEDPINS_PORTD 0x80 //b1000 0000

# define aantalSamples 6


byte INPUT_1[aantalSamples];
byte INPUT_2[aantalSamples];
byte INPUT_3[aantalSamples];
byte INPUT_4[aantalSamples];
byte INPUT_5[aantalSamples];
byte INPUT_6[aantalSamples];
byte INPUT_7[aantalSamples];
byte INPUT_8[aantalSamples];
byte INPUT_9[aantalSamples];
byte INPUT_10[aantalSamples];
byte INPUT_11[aantalSamples];
byte INPUT_12[aantalSamples];
byte INPUT_13[aantalSamples];
byte INPUT_14[aantalSamples];
byte INPUT_15[aantalSamples];
byte INPUT_16[aantalSamples];

int index = 0;

unsigned int temp_INPUT_STATUS = 0x0000;

int INPUT_COMMAND_PORTB = 0x00;
int INPUT_COMMAND_PORTD = 0x00;
