Logic Gates Identifier I want to build a program which identifies logic gates connected to Arduino, by testing the output with changing the input voltage...

Here is the code:

int output1 = 0;   //Change output pins HERE  
int output2 = 1;   //and HERE  
int input = 2;     //Change the input pin HERE, where we will read the data (0 or 1)  

void setup() {  
  pinMode(output1, OUTPUT);  
  pinMode(output2, OUTPUT);  
  pinMode(input, INPUT);  
  Serial.begin(9600);  // Start serial communication at 9600 bps  
}

void loop() {  
  int result[12];  
  for(int i = 0; i &lt; 2; i++) // For failure test, it runs 3 times  
  {  
    digitalWrite(output1, LOW);  
    digitalWrite(output2, LOW);  
    delay(1000);             //Wait for 1sec  
    result[i * 4] = digitalRead(input);  
    digitalWrite(output1, LOW);  
    digitalWrite(output2, HIGH);  
    delay(1000);             //Wait for 1sec  
    result[i * 4 + 1] = digitalRead(input);  
    digitalWrite(output1, HIGH);  
    digitalWrite(output2, LOW);  
    delay(1000);             //Wait for 1sec  
    result[i * 4 + 2] = digitalRead(input);  
    digitalWrite(output1, HIGH);  
    digitalWrite(output2, HIGH);  
    delay(1000);             //Wait for 1sec  
    result[i * 4 + 3] = digitalRead(input);  
  }  
  if(result[0] != result[4] &amp;&amp; result[0] != result[8] &amp;&amp; result[1] != result[5] &amp;&amp; result[1] != result[9] &amp;&amp; result[2] != result[6] &amp;&amp; result[2] != result[10] &amp;&amp; result[3] != result[7] &amp;&amp; result[3] != result[11]) // See if the results don't matches...  
  {  
    Serial.println("Input read error, please try again!");  
  }  
  if(result[0] == 0 &amp;&amp; result[1] == 0 &amp;&amp; result[2] == 0 &amp;&amp; result[3] == 1) // AND gate  
  {  
    Serial.println("This is an AND gate");  
  }  
  else if(result[0] == 0 &amp;&amp; result[1] == 1 &amp;&amp; result[2] == 1 &amp;&amp; result[3] == 1) // OR gate  
  {  
    Serial.println("This is an OR gate");  
  }  
  else if(result[0] == 1 &amp;&amp; result[1] == 1 &amp;&amp; result[2] == 1 &amp;&amp; result[3] == 0) // NAND gate  
  {  
    Serial.println("This is a NAND gate");  
  }  
   else if(result[0] == 1 &amp;&amp; result[1] == 0 &amp;&amp; result[2] == 0 &amp;&amp; result[3] == 0) // NOR gate  
  {  
    Serial.println("This is an NOR gate");  
  }  
  else if(result[0] == 0 &amp;&amp; result[1] == 1 &amp;&amp; result[2] == 1 &amp;&amp; result[3] == 0) // EXOR gate  
  {  
    Serial.println("This is an EXOR gate");  
  }  
  else if(result[0] == 1 &amp;&amp; result[1] == 0 &amp;&amp; result[2] == 0 &amp;&amp; result[3] == 1) // EXNOR gate  
  {  
    Serial.println("This is an EXNOR gate");  
  }  
  else // If there is no match...  
  {  
    Serial.println("This is not even a gate");  
  }  
}  


It always gives back 1s... I have tested with leds, it works perfectly by changing the input, but as soon as serial.begin is declared in setup, it fails to work, the just stays on and I said, the program just gives back 1s.

What I'm missing?

Thanks!
Arduino uses pins 0 and 1 for Serial. Use other pins in your sketch