     }
   }
 }
+
+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();
+    }
+  }
+
+
+
+
+
+
+}
+
+long magg(long a, long b) {
+  if (a >= b) {
+    return a;
+  }
+  else {
+    return b;
+  }
+}
+
+long muovi(char let, int vel, int posA, int posB, int posC = 0) {
+  String payload = "";
+
+  if (let == 'p') {
+    char LET = 'P';
+
+    payload += LET;
+    payload += " ";
+    payload += String(vel);
+    payload += '\r';
+
+    Serial2.print(payload);
+
+    delay(100);
+
+    payload = "";
+
+    payload += let;
+    payload += " ";
+    payload += String(posA);
+    payload += " ";
+    payload += String(posB);
+    payload += '\r';
+
+    Serial2.print(payload);
+
+  }
+  else if (let == 'g') {
+    char LET = 'G';
+
+    payload += LET;
+    payload += " ";
+    payload += String(vel);
+    payload += '\r';
+
+    Serial2.print(payload);
+
+    delay(100);
+
+    payload = "";
+
+    payload += let;
+    payload += " ";
+    payload += String(posA);
+    payload += " ";
+    payload += String(posB);
+    payload += " ";
+    payload += String(posC);
+    payload += '\r';
+
+    Serial2.print(payload);
+  }
+
+  int maxx = 0;
+  if (abs(posA) >= abs(posB)) {
+    if (abs(posA) >= abs(posC)) {
+      maxx = abs(posA);
+    }
+    else {
+      maxx = abs(posC);
+    }
+  }
+  else {
+    if (abs(posB) >= abs(posC)) {
+      maxx = abs(posB);
+    }
+    else {
+      maxx = abs(posC);
+    }
+  }
+
+
+
+  return ((maxx * 100800 / 360) / vel) * 1000;
+
+
+}

#define SEL_B 31 //0 su 2
#define BT_A A14 //0 premuto
#define BT_B A8 //1 premuto

void setup() {
  pinMode(MAINSW, INPUT_PULLUP);

  Serial2.begin(4800);
}

int act = 0;
long att1 = 0;
long att2 = 0;
bool inviato = false;

void loop() {
  while (digitalRead(MAINSW)) //SHOW
  {
    if (act == 0) {
      t0 = millis();
      Serial.println("ACT 0");
      inviato = false;
      act++;
    }
    show();
  }
  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
