Arduino อยากจะเขียน Code นับเวลาตามที่ขา digital D1 D2 D3 D4 D5 ทำงานครับแต่แยกนับเป็นขา และรวมเวลาแต่ละขาครับ

อยากเขียน Code นับเวลาที่ขา digital ทำงานอยู่โดยมีขา D1 D2 D3 D4 D5 โดยให้น้ำสะสมไปเรื่อยๆครับ
และรวมแสดงไว้ที่ Serial.Print จะมีวิธีเขียนแบบไหนครับ

void loop() {
if (digitalRead(D1) == HIGH)
   {
   TimeD1++;
   delay(1000);
   }
if (digitalRead(D1) == HIGH)
   {
   TimeD2++;
   delay(1000);
   }
if (digitalRead(D1) == HIGH)
   {
   TimeD3++;
   delay(1000);
   }
if (digitalRead(D1) == HIGH)
   {
   TimeD4++;
   delay(1000);
   }
if (digitalRead(D1) == HIGH)
   {
   TimeD5++;
   delay(1000);
   }
   
Serial.print("TimeD1");
Serial.print(TimeD1);
Serial.print("  TimeD1");
Serial.print(TimeD2);
Serial.print("  TimeD1");
Serial.print(TimeD3);
Serial.print("  TimeD1");
Serial.print(TimeD4);
Serial.print("  TimeD1");
Serial.print(TimeD5);

}
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
เอา delay ออกมาจาก if
เอามาไว้ท้าย loop (แค่อันเดียว)

ถ้าลองจะเขียนแบบ "coroutines"
CopyThreads
https://github.com/jensh/CopyThreads
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่