Arduino กำหนด millis ยังไงครับ ให้มันหยุดเมื่อถึงเวลาที่กำหนด

คือต้องการให้คำสั่งใน if  ทำงานแค่ 5 วิ แต่มันยังวิ่งเลื่อยๆอยู่ต้องแก้หรือเพิ่มตรงไหนบ้างครับ
ตอนนี้การทำงานของมันคือหมุนไปเลื่อยๆ ยังรับค่าจากปุ่มไม่ได้ครับ พอเสียบปลั๊กก็หมุนเลยทิศทางเดียว

โค๊ตนี้จะเอาไปใช้คุมมอเตอร์ครับ
1.กดปุ่ม ทำงาน Menu 1 ทำงานคำสั่ง5วิแล้วหยุด
2.กดปุ่มอีกรอบ ทำงาน Menu 2 มำงาน 5วิ แล้ววนลูป

int motor1 = 2;  //ประกาศตัวแปรมอเตอร์ ทำงานที่ขา 2
int motor2 = 3;
int motor3 = 5;
int motor4 = 6; //ประกาศตัวแปรมอเตอร์ ทำงานที่ขา 3
int buttonPin = 4;  //ประกาศตัวแปรสวิทซ์ ทำงานที่ขา 4
int buttonStart= 0;  //ประกาศตัวแปร buttonStart เริ่มที่ 0
int Menu=0;
unsigned long time;
void setup(){
  pinMode(motor1, OUTPUT);   //ตั้งค่าให้ค่าเป็น OUTPUT
  pinMode(motor2, OUTPUT);  //ตั้งค่าให้ค่าเป็น OUTPUT
  pinMode(buttonPin, INPUT) ;//ตั้งค่าให้ค่าเป็น INPUT
  Serial.begin(9600);
}
void loop()

{
  time = millis();
  Serial.println(time);
  buttonStart = 0;
  buttonStart = digitalRead(buttonPin);

  if (buttonStart == HIGH)
{
  delay (300);
  Menu++;

if(Menu>2)
{
Menu=0;   
}
if(Menu==1 && millis()-time > 5000 )
{
  digitalWrite(motor1,LOW);
  digitalWrite(motor3,LOW);
  digitalWrite(motor1, HIGH);
  digitalWrite(motor3, HIGH);
}
else if(Menu==2 && millis()-time > 5000 )
{
  digitalWrite(motor2,LOW);
  digitalWrite(motor4,LOW);
  digitalWrite(motor2, HIGH);
  digitalWrite(motor4, HIGH);
}
}
}

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