รบกวนเขียนโปรแกรม Arduino ช่วยหน่อยครับ

ผมอยากรบกวนเพื่อนๆ พี่ๆ เขียนโปรแกรมช่วยหน่อยครับ เนื่องจากเขียนโค้ดยังไงก็ไม่ทำงานตามที่คิดไป

โปรแกรมของผม มีโปรแกรมย่อยๆ อยู่ 27 ชุด ผมอยากใช้สวิตช์ แค่ตัวเดียว ให้ทำงานที่ละชุด เช่น

กดสวิตช์ 1 ครั้ง ให้โปรแกรมที่ 1 ทำงาน
กดสวิตช์อีก 1 ครั้ง (ครั้งที่2) โปรแกรมที่ 2 ทำงาน
กดสวิตช์อีก 1 ครั้ง (ครั้งที่3) โปรแกรมที่ 3 ทำงาน
.
.
.
.
กดสวิตช์อีก 1 ครั้ง (ครั้งที่27) โปรแกรมที่ 27 ทำงาน
กดสวิตช์อีก 1 ครั้ง (ครั้งที่28) เริ่มทำงานโปรแกรมที่ 1 ใหม่

ไม่รู้ว่าผมมั่วมาถูกทางรึเปล่า พอดีพึ่งศึกษา ยังไงก็รบกวนช่วยผมหน่อยนะครับ ใช้ Arduino UNO

int LED1=3;
int LED2=4;
int LED3=5;
int LED4=6;
int LED5=7;
int LED6=8;
int LED7=9;
int LED8=10;
int LED9=11;
int LED10=12;
int buttonPin=2;

void setup()
{
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  pinMode(LED4,OUTPUT);
  pinMode(LED5,OUTPUT);
  pinMode(LED6,OUTPUT);
  pinMode(LED7,OUTPUT);
  pinMode(LED8,OUTPUT);
  pinMode(LED9,OUTPUT);
  pinMode(LED10,OUTPUT);  
  pinMode(buttonPin,INPUT);  
}

void loop()
    {
    int i =0; i <= 27; i++;  
        
    switch (i)
        {
    
    case 1:
   digitalWrite(LED1,HIGH);  
   digitalWrite(LED2,HIGH);  
   digitalWrite(LED3,HIGH);
   digitalWrite(LED4,HIGH);
   digitalWrite(LED5,HIGH);
   delay(50);
   digitalWrite(LED1,LOW);  
   digitalWrite(LED2,LOW);  
   digitalWrite(LED3,LOW);
   digitalWrite(LED4,LOW);
   digitalWrite(LED5,LOW);
   delay(50);
   break;
  
    case 2:
    .
    .
    .
    .
    .
    .
    case 27
    break;
        }
    }


ขอบพระคุณล่วงหน้าอย่างสูงยิ่ง อมยิ้ม17อมยิ้ม17
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
const int buttonPin = 2;
const int ledPin =  13;
int buttonState = 0;
int i = 1; //จำเป็นต้องประกาศตัวแปรไว้นอก void loop() ไม่งั้น i จะกลายเป็นหนึ่งทุกครั้งที่ลูปวนกลับมาเจอบรรทัดนี้

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);    
}

void loop(){
  // buttonState ใช้เก็บค่าที่อ่านได้จากการกดปุ่ม ถ้าปุ่มถูกกด เลขจะขึ้นมาก(HIGH) แต่ถ้าปุ่มไม่ถูกกดตัวเลขจะต่ำ(LOW)
  buttonState = digitalRead(buttonPin);

  //เมื่อกดปุ่ม ให้ i เพิ่มขึ้นทีละ 1 ทุกครั้งที่กดปุ่ม จน i เกิน 27 ก็ให้ตั้งค่ากลับมาเป็น 1
  if (buttonState == HIGH) {
    i = i +1;
    if (i > 27) {
      i = 1;
    }
  }

  switch (i) {
    case 1:
      // ทำอะไรก็ว่าไป
      break;
    case 2:
      // ทำอะไรก็ว่าไป
      break;
    .
    .
    .
    case 27:
      // ทำอะไรก็ว่าไป
      break;
  }
}

ปล. ผมก็มั่วไปเรื่อยอะนะครับ ไม่ได้เล่นนานละ Arduino ยิ้ม
ได้ไม่ได้ อย่างไรบอกด้วยครับ ไม่มีบอร์ดให้ลอง ตอนนี้ใช้มโนเอาเองครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่