Il progetto consiste nell'emulare le 7 porte logice (and, nand, or, nor, not, xor e xnor).
Tramite una selezione fatta da un potenziometro, da dei pulsanti che facevano da input delle porte e dei led per visualizzare il risultato d'uscita.
I pulsanti vanno messi a PULL_DOWN con le resistenze da 1000 ohm.
I pulsanti sono l'input della porta logica simulata con l'Arduino, se premuto l'input é 1 altrimenti é 0.
I led vanno messi a PULL_DOWN con le resistenze da 220 ohm.
I due led gialli rappresentano i valori di input della porta logica simulata con l'Arduino, il led rosso ne rappresenta l'uscita.
int button_A = 2; int button_B = 4; int led_A = 3; int led_B = 5; int led_Y = 6; void setup() { pinMode(button_A, INPUT); pinMode(button_B, INPUT); pinMode(led_A,OUTPUT); pinMode(led_B,OUTPUT); pinMode(led_Y,OUTPUT); Serial.begin(9600); }
int value = analogRead(A0); String tipoPorta = ""; int sceltaPorta = 0; if (value >= 0 && value < 128) { sceltaPorta = 0; tipoPorta = "AND"; } else if (value >= 128 && value < 256) { sceltaPorta = 1; tipoPorta = "NAND"; } else if (value >= 256 && value < 384) { sceltaPorta = 2; tipoPorta = "OR"; } else if (value >= 384 && value < 512) { sceltaPorta = 3; tipoPorta = "NOR"; } else if (value >= 512 && value < 640) { sceltaPorta = 4; tipoPorta = "NOT"; } else if (value >= 640 && value < 768) { sceltaPorta = 5; tipoPorta = "XOR"; } else { sceltaPorta = 6; tipoPorta = "XNOR"; }
bool a = digitalRead(button_A); bool b = digitalRead(button_B); digitalWrite(led_A, a); digitalWrite(led_B, b); bool y = 0; switch(sceltaPorta) { case 0: // AND y = a && b; break; case 1: // NAND y = !(a && b); break; case 2: // OR y = a || b; break; case 3: // NOR y = !(a || b); break; case 4: // NOT y = !(a); break; case 5: // XOR y = (!a && b) || (a && !b); break; case 6: // XNOR y = ((a && b) || !(a && b)); break; default: break; }Scarica codice completo
-
-