@@ -50,18 +50,72 @@ enum Mode {
5050
5151};
5252
53+
54+ class XEvaluable {
55+ public:
56+ virtual uint8_t evaluate (XEvaluable &e...)=0;
57+ };
58+
59+ class Input : XEvaluable {
60+ uint8_t pin;
61+ public:
62+ Input (uint8_t _pin) : pin(_pin) {}
63+ void init (){
64+ pinMode (pin,INPUT);
65+ }
66+
67+ uint8_t evaluate () {
68+ return digitalRead (pin);
69+ }
70+ };
71+
72+ class Output : XEvaluable {
73+ uint8_t pin;
74+ public:
75+ Output (uint8_t _pin) : pin(_pin) {}
76+ void init (){
77+ pinMode (pin,OUTPUT);
78+ }
79+
80+ uint8_t evaluate () {
81+ uint8_t val=1 ;
82+ digitalWrite (pin, val);
83+ return digitalRead (val);
84+ }
85+ }
86+ ;
87+
88+
89+
90+
5391Gate g0 (2 ,3 ,4 , Gate::Mode::AND );
5492Gate g1 (5 ,6 ,7 , Gate::Mode::XOR );
5593Gate g2 (8 ,9 ,10 , Gate::Mode::XOR );
5694Gate g3 (16 ,14 ,15 , Gate::Mode::XOR );
5795
96+ int I1=2 ;
97+ int I2=3 ;
98+ int I3=5 ;
99+ int I4=6 ;
100+ int I5=8 ;
101+ int I6=9 ;
102+ int I7=16 ;
103+ int I8=14 ;
104+
105+ int O1=4 ;
106+ int O2=7 ;
107+ int O3=10 ;
108+ int O4=15 ;
109+
58110void setup ()
59111{
60112 Serial.begin (115200 );
61113 Serial.println (" startup..." );
62114
63115 // initialize LED digital pin as an output.
64116 pinMode (LED_BUILTIN, OUTPUT);
117+
118+
65119
66120 g0.init ();
67121 g1.init ();
@@ -85,10 +139,33 @@ void sb(int t){
85139}
86140
87141void loop () {
88- g0.update ();
89- g1.update ();
90- g2.update ();
91- g3.update ();
92- sb (100 );
142+ // g0.update();
143+ // g1.update();
144+ // g2.update();
145+ // g3.update();
146+
147+ int i1=digitalRead (I1);
148+ int i2=digitalRead (I2);
149+ int i3=digitalRead (I3);
150+ int i4=digitalRead (I4);
151+ int i5=digitalRead (I5);
152+ int i6=digitalRead (I6);
153+ int i7=digitalRead (I7);
154+ int i8 =digitalRead (I8);
155+
156+ int o1=i1 && i8 ;
157+ int o2=i4 && i6;
158+ int o3=i2 ^ i5;
159+ int o4=i3 ^ i7;
160+ // int o1=i1^i4^i6^i7^i8;
161+ // int o2=i1^i3^i5^i7;
162+ // int o3=i2^i4^i6^i7^i8;
163+ // int o4=i1^i2^i3^i4^i5^i6^i7^i8;
164+
165+ digitalWrite (O1,o1);
166+ digitalWrite (O2,o2);
167+ digitalWrite (O3,o3);
168+ digitalWrite (O4,o4);
169+ sb (10 );
93170}
94171
0 commit comments