Lo scopo è di creare un simulatore di porte logiche.
Per cambiare la porta logica si gira il potenziometro,
i due pulsanti servono come stati delle entrate della porta selezionata,
i LED segnalano gli stati delle entrate e il risultato della porta.
Ecco il circuito sulla breadboard
Ecco una foto del circuito
AND
if(sensorValue<=146){ Serial.println("AND"); if(buttonState1==true&&buttonState2==true){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
NAND
else if(sensorValue>146&&sensorValue<=292){ Serial.println("NAND"); if(buttonState1==false||buttonState2==false){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
OR
else if(sensorValue>292&&sensorValue<=438){ Serial.println("OR"); if(buttonState1==true||buttonState2==true){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
NOR
else if(sensorValue>438&&sensorValue<=584){ Serial.println("NOR"); if(buttonState1==false&&buttonState2==false){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
XOR
else if(sensorValue>584&&sensorValue<=730){ Serial.println("XOR"); if((buttonState1==true&&buttonState2==false)||(buttonState2==true&&buttonState1==false)){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
XNOR
else if(sensorValue>730&&sensorValue<=876){ Serial.println("XNOR"); if((buttonState1==false&&buttonState2==false)||(buttonState2==true&&buttonState1==true)){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }
NOT
else{ Serial.println("NOT"); analogWrite(5, 0); if(buttonState1==false){ digitalWrite(6, HIGH); } else{ digitalWrite(6, LOW); } }Download del codice   Visualizza il codice