 
 void show_uno() {
 
-  // //intro
-  attore(1,'g',2000, -180,  -180,  180, 'p',2000, -150, 180,  8000); //def
-  attore(2,'g',2000, 0,  -180,  -180, 'p',2500, 150, -180,  8000); //def
-  attore(3,'g',2000, 0,  80,  110, 'p',3400, -130, 180,  8000); //def
-  attore(4,'g',3000, 180,  -250,  -110, 'p',1800, 130, -180,  8000); //def
+  //intro
+  attore(1, 'g', 2000, -180,  -180,  180, 'p', 2000, -150, 180,  8000); //def
+  attore(2, 'g', 2000, 0,  -180,  -180, 'p', 2500, 150, -180,  8000); //def
+  attore(3, 'g', 2000, 0,  80,  110, 'p', 3400, -130, 180,  8000); //def
+  attore(4, 'g', 3000, 180,  -250,  -110, 'p', 1800, 130, -180,  8000); //def
 
   //dance
-  attore(5,'g',4000, -640,  300,  -720, 'p',3000, 540, -540,  15000); //def
-  attore(6,'g',4000, 110,  -310,  -190, 'p',3000, -360, 360,  6000); //def
+  attore(5, 'g', 4000, -640,  300,  -720, 'p', 3000, 540, -540,  15000); //def
+  attore(6, 'g', 4000, 110,  -310,  -190, 'p', 3000, -360, 360,  6000); //def
 
   //outro
-  attore(7,'g',2000, 160,  170,  180, 'p',1500, 175, -170,  6000); //def
-  //
-
-}
-
-void show_def() {
+  attore(7, 'g', 2000, 160,  170,  180, 'p', 1500, 175, -170,  6000); //def
+
+}
+
+void show_due() {
 
   //intro
-  attore(1,'g',2000, -180,  -180,  180, 'p',3000, -240, 180,  2000); //def
-  attore(2,'g',2000, 0,  -180,  -180, 'p',2000, 240, -180,  2000); //def
-  attore(3,'g',2000, 0,  80,  110, 'p',3000, -130, 180,  2000); //def
-  attore(4,'g',2800, 180,  -80,  -110, 'p',2800, 130, -180,  2000); //def
+  attore(1, 'g', 2000, -180,  -180,  180, 'p', 2000, -150, 180,  8000); //def
+  attore(2, 'g', 2000, 0,  -180,  -180, 'p', 2500, 150, -180,  8000); //def
+  attore(3, 'g', 2000, 0,  80,  110, 'p', 3400, -130, 180,  8000); //def
+  attore(4, 'g', 3000, 180,  -250,  -110, 'p', 1800, 130, -180,  5000); //def
 
   //dance
-  attore(5,'g',4000, -720,  -90,  -720, 'p',4000, 720, 720,  2000); //def
-  attore(6,'g',4000, 720,  90,  720, 'p',4000, -720, -720,  2000); //def
-
-}
+  attore(5, 'g', 4000, -640,  300,  -720, 'p', 2800, 540, -540,  13000); //def
+  attore(6, 'g', 4000, 110,  -310,  -190, 'p', 3000, -360, 360,  6000); //def
+
+  //outro
+  attore(7, 'g', 2000, 160,  170,  180, 'p', 1500, 175, -170,  6000); //def
+
+}
+
+void show_tre() {
+
+  //intro
+  attore(1, 'g', 2000, -180,  -180,  180, 'p', 2000, -150, 180,  8000); //def
+  attore(2, 'g', 2000, 0,  -180,  -180, 'p', 2500, 150, -180,  8000); //def
+  attore(3, 'g', 2000, 0,  80,  110, 'p', 3400, -130, 180,  8000); //def
+  attore(4, 'g', 3000, 180,  -250,  -110, 'p', 1800, 130, -180,  8000); //def
+
+  //dance
+  attore(5, 'g', 4000, -640,  300,  -720, 'p', 3000, 540, -540,  15000); //def
+  attore(6, 'g', 4000, 110,  -310,  -190, 'p', 3000, -360, 360,  6000); //def
+
+  //outro
+  attore(7, 'g', 2000, 160,  170,  180, 'p', 1500, 175, -170,  6000); //def
+
+}
+
 
 long magg(long a, long b) {
   if (a >= b) {

  while (digitalRead(MAINSW)) //SHOW
  {
    if (act == 0) {
      t0= millis();
      Serial.println("ACT 0");
      inviatop = false;
      inviatoG = false;
      act++;
    }
    show_uno();
  }
  while (!digitalRead(MAINSW)) //TEST
  {
    act = 0;

    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) {

  if (act == scena) {
    if (inviatoG == false) {
      att1 = muovi(let_G,vel_G,posG_a,posG_b,posG_c);
      digitalWrite(channels[act], 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);
      Serial.println("mando scena p");
      Serial.println(act);
      inviatop = true;
    }
    if ((long)(millis() - t0) > (long)(magg(att1,att2) + pausa)) {
      inviatop = false;
      inviatoG = false;
      digitalWrite(channels[act], LOW);
      t0 = millis();

      act++;

  pinMode(BT_B, INPUT_PULLUP);
  pinMode(SEL_Gp, INPUT_PULLUP);

  for (int i=0; i<NUM_CHANNELS; i++) {
    pinMode(channels[i], OUTPUT);
  }

  Serial.begin(9600);

  Serial2.begin(4800);
