diff --git a/mux_control_2nd_version.ino b/mux_control_2nd_version.ino
new file mode 100644
index 0000000000000000000000000000000000000000..42d119968f6b764d362e29b723216fcb47bb837c
--- /dev/null
+++ b/mux_control_2nd_version.ino
@@ -0,0 +1,92 @@
+//FUNCTION HEADER
+  void setup_pin();
+  void setup_values();
+  void WriteChannel(int *Port, int channel);
+  void portStatus();
+//GLOBAL VARIABLES
+
+//PIN POSITIONS (ARDUINO HARDWARE PINS)
+  int P_positions[8]={23,25,27,29,31,33,35,37};//A0 A1 A2 A3 A4 EN WR CS
+//LOGIC OUTPUT VLAUES
+  int L_values[8]={0,0,0,0,0,//A0 A1 A2 A3 A4 
+                    0,0,0};// EN WR CS
+//LOOP VARIABLES
+  String Pin_values("");
+  int count=0;
+  int converter=0;
+//SETUP FUNCTION
+void setup() {
+
+  //OUTPUT PINS AVAILABLE
+    setup_pin();
+  //LOGIC VALUES THAT WILL BE WRITTEN IN EVERY PIN
+    WriteChannel(L_values,0);
+  //LOGIC VALUES WRITING 
+    setup_values();
+  //COMMUNICATION RATE
+    Serial.begin(9600);
+
+}
+
+//LOOP FUNCTION
+void loop() {
+  
+    if (Serial.available()){
+      Pin_values=Serial.readStringUntil('\n'); //STORAGE THE VALUE
+        //SOFTWARE AND HARDWARE 
+        //THEN DO THE PRINT
+        Serial.println("Channel selected: "+Pin_values); //ARGUMENT
+        //CHAR TO INT AND MULTIPLEXER SYNTAX (1-32 CHANNEL)
+        converter = atof(Pin_values.c_str());
+        WriteChannel(L_values,converter-1);//SOFTWARE WRITING 
+        setup_values();//HARDWARE WRITING
+    }
+    }
+
+//FUNCTION DEFINITION
+//FUNCTION TO WIRITE THE LOGIC VALUES FOR THE CHANNEL SELECTION
+void WriteChannel(int *Port, int channel){
+  //WRITE LOGIC VALUES IN THE ARRAGE
+  for(int n=0;n<5;n++){
+    Port[n] = channel%2;
+    channel = channel/2;
+  }
+}
+// PRINT THE NEW PORT AFTER DOING SOME KIND OF SETTING
+void portStatus(){
+  Serial.print ("new port state: ");
+  Serial.print (L_values[4]);
+  Serial.print (L_values[3]);
+  Serial.print (L_values[2]);
+  Serial.print (L_values[1]);
+  Serial.print (L_values[0]);
+  Serial.print ("(A4 A3 A2 A1 A0)  ");
+  Serial.print (L_values[5]);
+  Serial.print (L_values[6]);
+  Serial.print (L_values[7]);
+  Serial.println ("(EN WR CS)");
+}
+
+void setup_pin(){
+  //PIN OUT 
+  pinMode(P_positions[0],OUTPUT);
+  pinMode(P_positions[1],OUTPUT);
+  pinMode(P_positions[2],OUTPUT);
+  pinMode(P_positions[3],OUTPUT);
+  pinMode(P_positions[4],OUTPUT);
+  pinMode(P_positions[5],OUTPUT);
+  pinMode(P_positions[6],OUTPUT);
+  pinMode(P_positions[7],OUTPUT);
+}
+void setup_values(){
+  //pIN VALUES
+  digitalWrite(P_positions[0],L_values[0]);
+  digitalWrite(P_positions[1],L_values[1]);
+  digitalWrite(P_positions[2],L_values[2]);
+  digitalWrite(P_positions[3],L_values[3]);
+  digitalWrite(P_positions[4],L_values[4]);
+  digitalWrite(P_positions[5],L_values[5]);
+  digitalWrite(P_positions[6],L_values[6]);
+  digitalWrite(P_positions[7],L_values[7]);
+
+}