   if (let == 'p') {
     char LET = 'P';
 
+    payload = "";
+
     payload += LET;
     payload += " ";
     payload += String(vel);

    {
      if (digitalRead(BT_A) == 0)  //premuto
      {
        Serial.println("motore C orario");
        ///////////////////////////
        Serial2.print("P 3000");
        Serial2.print('\r');
        delay(100);
        Serial2.print("p 0 0");
        Serial2.print('\r');
        delay(100);
        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
      {
        Serial.println("motore C antiorario");
        ///////////////////////////
        Serial2.print("P 3000");
        Serial2.print('\r');
        delay(100);
        Serial2.print("p 0 0");
        Serial2.print('\r');
        delay(100);
        Serial2.print("G 3000");
        Serial2.print('\r');
        delay(100);
        Serial2.print("g 0 0 -10");
        Serial2.print('\r');
        ////////////////////////////
        delay(1000);
      }
    }
  }
}

void show() {

  //eppur si muove
  if (act == 1) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',3500,-90,360);

      Serial.print(att1);

      att2 = 0;

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis();
    }
  }

  //ti riconosco
  if (act == 2) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',1500,-90,0);

      Serial.print(att1);

      att2 = muovi('g',1800,90,-100,0);

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis() + 3000;
    }
  }

  //il pubblico
  if (act == 3) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',2000,90,0);

      Serial.print(att1);

      att2 = muovi('g',2000,-90,0,110);

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis() + 5000;
    }
  }

  //più pubblico
  if (act == 4) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',3000,0,90);

      Serial.print(att1);

      att2 = muovi('g',3000,-90,100,0);

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis() + 4000;
    }
  }

  //danza #1
  if (act == 5) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',5000,360,720);

      Serial.print(att1);

      att2 = muovi('g',4800,-630,720,-830);

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis();
    }
  }

  //danza #2
  if (act == 6) {
    if (inviato == false) {
      Serial.print("ACT ");
      Serial.print(act);
      Serial.print(" tempo: att1: ");

      att1 = muovi('p',5200,360,720);

      Serial.print(att1);

      att2 = muovi('g',5000,-630,720,-830);

      Serial.print(" att2: ");
      Serial.println(att2);

      inviato = true;
    }

    if ((millis() - t0) > magg(att1,att2)) {
      act++;
      inviato = false;
      t0 = millis();
    }
  }






}


int act = 0;
long att1 = 0;
long att2 = 0;
bool inviatoG = false;
bool inviatop = false;

void loop() {
  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);
      }
    }
