   while (digitalRead(MAINSW)) //SHOW
   {
     if (act == 0) {
-      t0= millis();
+      t0 = millis();
       Serial.println("ACT 0");
       inviatop = false;
       inviatoG = false;
       act++;
-    }
-    show_uno();
+      att1 = 0;
+      att2 = 0;
+    }
+    if ((digitalRead(SEL_A) == 0) && (digitalRead(SEL_B) == 1)) //A
+    {
+      show_uno();
+    }
+    else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 1)) //B
+    {
+      show_due();
+    }
+    else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 0)) //C
+    {
+      show_tre();
+    }
+
+
   }
   while (!digitalRead(MAINSW)) //TEST
   {
+    // Reset the Act. for the Next Show.
     act = 0;
 
+    // COMMAND FROM SERIAL AVAILABLE
+    // p 20 -60     >> move little cone A: 20 degree clockwise - B: 60 degree counterclockwise
+    // P 2000       >> set velocity of little cone to 2000
+    // g 90 -90 90  >> move big cone
+    // G 4000       >> set velocity of big cone
     if (Serial.available() > 0) {
       Serial2.write(Serial.read());
     }
 
-    if ((digitalRead(SEL_A) == 0) && (digitalRead(SEL_B) == 1)) //A
-    {
-      if (digitalRead(BT_A) == 0)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore A orario");
-          ///////////////////////////
-          Serial2.print("P 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("p 10 0");
-          Serial2.print('\r');
-        }
-        else
-        {
-          Serial.println("motore C orario");
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g 10 0 0");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-        delay(1000);
-      }
-      else if (digitalRead(BT_B) == 1)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore A antiorario");
-          ///////////////////////////
-          Serial2.print("P 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("p -10 0");
-          Serial2.print('\r');
-        }
-        else
-        {
-          Serial.println("motore C antiorario");
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g -10 0 0");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-        delay(1000);
-      }
-    }
-    else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 1)) //B
-    {
-      if (digitalRead(BT_A) == 0)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore B orario");
-          ///////////////////////////
-          Serial2.print("P 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("p 0 10");
-          Serial2.print('\r');
-        }
-        else
-        {
-          Serial.println("motore D orario");
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g 0 -10 0");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-        delay(1000);
-      }
-      else if (digitalRead(BT_B) == 1)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore B antiorario");
-          ///////////////////////////
-          Serial2.print("P 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("p 0 -10");
-          Serial2.print('\r');
-        }
-        else
-        {
-          Serial.println("motore D antiorario");
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g 0 10 0");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-
-        delay(1000);
-      }
-    }
-    else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 0)) //C
-    {
-      if (digitalRead(BT_A) == 0)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore inesistente");
-        }
-        else
-        {
-          Serial.println("motore E orario");
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g 0 0 10");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-        delay(1000);
-      }
-      else if (digitalRead(BT_B) == 1)  //premuto
-      {
-        if (digitalRead(SEL_Gp)) //1 è piccolo
-        {
-          Serial.println("motore inesistente");
-        }
-        else
-        {
-          Serial.println("motore E antiorario");
-
-          Serial2.print("G 3000");
-          Serial2.print('\r');
-          delay(100);
-          Serial2.print("g 0 0 -10");
-          Serial2.print('\r');
-          ////////////////////////////
-        }
-        delay(1000);
-      }
-    }
-  }
-}
-
-void attore(int scena,char let_G, int vel_G, int posG_a, int posG_b, int posG_c, char let_p, int vel_p, int posp_a, int posp_b, int pausa) {
+    // Check button
+    checkButton();
+
+  }
+}
+
+void attore(int scena, char let_G, int vel_G, int posG_a, int posG_b, int posG_c, char let_p, int vel_p, int posp_a, int posp_b, int pausa) {
 
   if (act == scena) {
     if (inviatoG == false) {
-      att1 = muovi(let_G,vel_G,posG_a,posG_b,posG_c);
-      digitalWrite(channels[act], HIGH);
+      att1 = muovi(let_G, vel_G, posG_a, posG_b, posG_c);
+      digitalWrite(channels[act-1], HIGH);
       Serial.println("mando scena G");
       Serial.println(act);
       inviatoG = true;
       tdd = millis();
     }
     if ((inviatop == false) && ((long)(millis() - tdd) > dd)) {
-      att2 = muovi(let_p,vel_p,posp_a,posp_b);
+      att2 = muovi(let_p, vel_p, posp_a, posp_b);
       Serial.println("mando scena p");
       Serial.println(act);
       inviatop = true;
     }
-    if ((long)(millis() - t0) > (long)(magg(att1,att2) + pausa)) {
+    if ((long)(millis() - t0) > (long)(magg(att1, att2) + pausa)) {
       inviatop = false;
       inviatoG = false;
-      digitalWrite(channels[act], LOW);
+      digitalWrite(channels[act-1], LOW);
       t0 = millis();
 
       act++;


  if (let == 'p') {
    char LET = 'P';

    payload = "";

    payload += LET;
    payload += " ";
    payload += String(vel);
    payload += '\r';

    Serial2.print(payload);

    payload = "";

    payload += let;
    payload += " ";
    payload += String(posA);
    payload += " ";
    payload += String(posB);
    payload += '\r';

    Serial2.print(payload);

  }
  else if (let == 'g') {
    char LET = 'G';

    payload = "";

    payload += LET;
    payload += " ";
    payload += String(vel);
    payload += '\r';

    Serial2.print(payload);

    payload = "";

    payload += let;
    payload += " ";
    payload += String(posA);

    }
  }

  return (long)(((maxx * 100800 / 360) / vel) * 1000);
}

void checkButton() {
  if ((digitalRead(SEL_A) == 0) && (digitalRead(SEL_B) == 1)) //A
  {
    if (digitalRead(BT_A) == 0)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore A orario");
        muovi('p', vel_passetti, passetto, 0);
      }
      else
      {
        Serial.println("motore C orario");
        muovi('g',3000, vel_passetti,0,0);
      }
      delay(1000);
    }
    else if (digitalRead(BT_B) == 1)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore A antiorario");
        muovi('p', vel_passetti, -passetto, 0);
      }
      else
      {
        Serial.println("motore C antiorario");
        muovi('g',vel_passetti,-passetto, 0, 0);
      }
      delay(1000);
    }
  }
  else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 1)) //B
  {
    if (digitalRead(BT_A) == 0)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore B orario");
        muovi('p',vel_passetti,0, passetto);
      }
      else
      {
        Serial.println("motore D orario");
        muovi('g',vel_passetti,0, passetto, 0);
      }
      delay(1000);
    }
    else if (digitalRead(BT_B) == 1)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore B antiorario");
        muovi('p',vel_passetti,0, -passetto);
      }
      else
      {
        Serial.println("motore D antiorario");
        muovi('g',vel_passetti,0, -passetto, 0);
      }

      delay(1000);
    }
  }
  else if ((digitalRead(SEL_A) == 1) && (digitalRead(SEL_B) == 0)) //C
  {
    if (digitalRead(BT_A) == 0)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore inesistente");
      }
      else
      {
        Serial.println("motore E orario");
        muovi('g',vel_passetti,0, 0, passetto);
      }
      delay(1000);
    }
    else if (digitalRead(BT_B) == 1)  //premuto
    {
      if (digitalRead(SEL_Gp)) //1 è piccolo
      {
        Serial.println("motore inesistente");
      }
      else
      {
        Serial.println("motore E antiorario");
        muovi('g',vel_passetti,0, 0, -passetto);
      }
      delay(1000);
    }
  }
}
