// Khai báo chân điều khiển động cơ
int stepPin = 4;
int dirPin = 3;
int enPin = 5;
int cambien1 = 22;
int tachly = 8;
int TC1 = 9;
int TC2 = 11;
int TC3 = 12;
int cambien2 = 23;
int congtac1 = 27;
int congtac2 = 28;
int congtac3 = 29;
int da = 10;
int congtac4 = 30;
int cambien3 = 24; 
int suadac = 14;
int siro = 15;
int cambien4 = 25;
int cambien5 = 26;

// Số bước cần di chuyển
int stepsPerRevolution = 200; 
int steps = stepsPerRevolution/5;

void setup() {
  // Cấu hình chân điều khiển
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);
  pinMode(tachly, OUTPUT);
  pinMode(cambien1, INPUT);
  pinMode(TC1, OUTPUT);
  pinMode(TC2, OUTPUT);
  pinMode(TC3, OUTPUT);
  pinMode(cambien2, INPUT);
  pinMode(congtac1, INPUT);
  pinMode(da, OUTPUT);
  pinMode(suadac, OUTPUT);
  pinMode(siro, OUTPUT);
  pinMode(cambien3, INPUT);
  pinMode(cambien4, INPUT);
  pinMode(cambien5, INPUT);
  pinMode(congtac2, INPUT);
  pinMode(congtac3, INPUT);
  pinMode(congtac4, INPUT);
  Serial.begin(9600);
   
  // Cài đặt chiều quay thuận
  digitalWrite(dirPin, HIGH);
}

int thanhtoan = 1;
int sdsignal = "Yes";
int srsignal = "Yes";
void loop() 
{
  if (thanhtoan == 1)
  {
// Tách ly    
    digitalWrite(tachly, HIGH);
    delay(2000);
    digitalWrite(tachly, LOW);
    delay(1000);
    
// Có ly    
    while(digitalRead(cambien1) == HIGH) 
    {
      for (int i = 0; i < steps; i++) 
      {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(500); 
        digitalWrite(stepPin, LOW);
        delayMicroseconds(500);
      }
      
      int n = 1;
      int m = 1;

      while (n==1)
      {
// Chọn trái cây
        digitalWrite(TC1, HIGH);
        delay(2000);
        digitalWrite(TC1, LOW);
        delay(1000);
        if (digitalRead(congtac1) == HIGH)
        {
          m++;
          delay(100);
          Serial.println(m);
        }

        if (m >= 3)
        {
          digitalWrite(TC1, LOW);
          delay(1000);
          m=0;
          while(digitalRead(cambien2) == HIGH) 
          {
            digitalWrite(TC1, LOW);
            for (int j = 0; j < steps; j++) 
            {
              digitalWrite(stepPin, HIGH);
              delayMicroseconds(500); 
              digitalWrite(stepPin, LOW);
              delayMicroseconds(500);
              n=0;
            }
              
            int a = 1;
            int b = 1;

            while (a==1)
            {
// Chọn đá
              digitalWrite(da, HIGH);
              delay(2000);
              digitalWrite(da, LOW);
              delay(1000);
              if (digitalRead(congtac4) == HIGH)
              {
                b++;
                delay(100);
                Serial.println(b);
              }

              if (b >= 2)
              {
                digitalWrite(da, LOW);
                delay(1000);
                b=0;
                while(digitalRead(cambien3) == HIGH) 
                {
                  digitalWrite(da, LOW);
                  for (int k = 0; k < steps; k++) 
                  {
                    digitalWrite(stepPin, HIGH);
                    delayMicroseconds(500); 
                    digitalWrite(stepPin, LOW);
                    delayMicroseconds(500);
                    a=0;
                  }

//Chọn sữa đặc + siro
                  while (sdsignal == "Yes")
                  {
                    digitalWrite(suadac, HIGH);
                    delay(2000);
                    digitalWrite(suadac, LOW);
                    delay(1000);

                    while (digitalRead(cambien4) == HIGH)
                    {
                      digitalWrite(suadac, LOW);
                      for (int k = 0; k < steps; k++) 
                      {
                        digitalWrite(stepPin, HIGH);
                        delayMicroseconds(500); 
                        digitalWrite(stepPin, LOW);
                        delayMicroseconds(500);
                        sdsignal = 0;
                      }

                      while (srsignal == "Yes")
                      {
                        digitalWrite(siro, HIGH);
                        delay(2000);
                        digitalWrite(siro, LOW);
                        delay(1000);

                        while(digitalRead(cambien5) == HIGH)
                        {
                          digitalWrite(siro, LOW);
                          for (int k = 0; k < steps; k++) 
                          {
                            digitalWrite(stepPin, HIGH);
                            delayMicroseconds(500); 
                            digitalWrite(stepPin, LOW);
                            delayMicroseconds(500);
                            srsignal = 0;
                          }
                          digitalWrite(enPin, HIGH);
                          thanhtoan = 0;
                        }
                      }           
                    }
                    if (sdsignal == "No")
                    {
                      for (int k = 0; k < steps; k++) 
                      {
                        digitalWrite(stepPin, HIGH);
                        delayMicroseconds(500); 
                        digitalWrite(stepPin, LOW);
                        delayMicroseconds(500);
                      }
                      while (srsignal == "Yes")
                      {
                        digitalWrite(siro, HIGH);
                        delay(2000);
                        digitalWrite(siro, LOW);
                        delay(1000);

                        while (digitalRead(cambien5) == HIGH)
                        {
                          digitalWrite(siro, LOW);
                          for (int k = 0; k < steps; k++) 
                          {
                            digitalWrite(stepPin, HIGH);
                            delayMicroseconds(500); 
                            digitalWrite(stepPin, LOW);
                            delayMicroseconds(500);
                            srsignal = 0;
                          }
                          digitalWrite(enPin, HIGH);
                          thanhtoan = 0;
                        }
                      }
                    }
                  }
                }
              }
            }
          } 
        }  
      }
    }
  }
}

A4988
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module