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