arduino เมื่อใช้คำสั่งแล้วให้หน่วงเวลาถึงจะใช้ได้อีก
//******************** มอเตอร์ขวา **************************//
#define enableRightMotor 6 // กำหนดขา 6 เป็นขาของ ENA ของมอเตอร์ขวา A
#define rightMotorPin1 7 // กำหนดขา 7 เป็นขาของ INT 1 (เดินหน้า)
#define rightMotorPin2 8 // กำหนดขา 8 เป็นขาของ INT 2 (ถอยหลัง)
//******************** มอเตอร์ซ้าย **************************//
#define enableLeftMotor 5 // กำหนดขา 5 เป็นขาของ ENB ของมอเตอร์ซ้าย B
#define leftMotorPin1 9 // กำหนดขา 9 เป็นขาของ INT 3 (เดินหน้า)
#define leftMotorPin2 10 // กำหนดขา 10 เป็นขาของ INT 4 (ถอยหลัง)
//********************* เซนเซอร์ 5 ตัว******************************//
#define IR6 A4 // กำหนดขา A2 เป็น IR4
#define IR7 A5 // กำหนดขา A3 เป็น IR5
//******************** ปรับความเร็วมอเตอร์ **************************//
#define White 50
#define SP_Normal 80 // ความเร็วทางตรงปกติ
#define SP_Low 95 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วต่ำ
#define SP_Medium 120 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับกลาง
#define SP_High 130 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับสูง
#define SP_VeryHigh 140 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับสูงมาก
//*************************************************************//
void arrow_tracking()
{
pinMode(rightMotorPin1, OUTPUT);
pinMode(rightMotorPin2, OUTPUT);
pinMode(leftMotorPin1, OUTPUT);
pinMode(leftMotorPin2, OUTPUT);
pinMode(enableRightMotor, OUTPUT);
pinMode(enableLeftMotor, OUTPUT);
pinMode(IR6, INPUT);
pinMode(IR7, INPUT);
int s6 = analogRead(IR6); //เซนเซอร์ตรวจลูกศรซ้าย
int s7 = analogRead(IR7); //เซนเซอร์ตรวจลูกศรขวา
if((s6 <= White) && (s7 >= White))
{
//ให้วิ่งตรงด้วยความเร็ว ระดับ SP_Normal
analogWrite(enableRightMotor, SP_Normal);
analogWrite(enableLeftMotor, SP_Normal);
delay(200);
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, LOW);
delay(1000);
digitalWrite(rightMotorPin1, HIGH);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, HIGH);
digitalWrite(leftMotorPin2, LOW);
delay(100);
}
if((s6 >= White) && (s7 <= White))
{
//ให้วิ่งตรงด้วยความเร็ว ระดับ SP_Normal
analogWrite(enableRightMotor, SP_Normal);
analogWrite(enableLeftMotor, SP_Normal);
delay(200);
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, LOW);
delay(1000);
digitalWrite(rightMotorPin1, HIGH);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, HIGH);
digitalWrite(leftMotorPin2, LOW);
delay(100);
}
}
จากโค้ดของบนเลยอะครับ
คือถ้า if((s6 <= White) && (s7 >= White)) อยากให้มันหน่วงเวลาสัก 200 ละเริ่มคำสั่งอีก 1000 พอครบแล้วก็ให้เริ่มอีกคำสั่งอีก 100 และอยากให้มันหน่วงคำสั่งอีกอะครับไม่อยากให้มันใช้ถี่เกินไปแบบให้คำสั่งมีคูลดาวตัวมันถึงจะใช้ได้อีกอะครับ ไม่ทราบว่าควรแทรกคำสั่งตรงไหนหรอครับ
arduino เมื่อใช้คำสั่งแล้วให้หน่วงเวลาถึงจะใช้ได้อีก
//******************** มอเตอร์ขวา **************************//
#define enableRightMotor 6 // กำหนดขา 6 เป็นขาของ ENA ของมอเตอร์ขวา A
#define rightMotorPin1 7 // กำหนดขา 7 เป็นขาของ INT 1 (เดินหน้า)
#define rightMotorPin2 8 // กำหนดขา 8 เป็นขาของ INT 2 (ถอยหลัง)
//******************** มอเตอร์ซ้าย **************************//
#define enableLeftMotor 5 // กำหนดขา 5 เป็นขาของ ENB ของมอเตอร์ซ้าย B
#define leftMotorPin1 9 // กำหนดขา 9 เป็นขาของ INT 3 (เดินหน้า)
#define leftMotorPin2 10 // กำหนดขา 10 เป็นขาของ INT 4 (ถอยหลัง)
//********************* เซนเซอร์ 5 ตัว******************************//
#define IR6 A4 // กำหนดขา A2 เป็น IR4
#define IR7 A5 // กำหนดขา A3 เป็น IR5
//******************** ปรับความเร็วมอเตอร์ **************************//
#define White 50
#define SP_Normal 80 // ความเร็วทางตรงปกติ
#define SP_Low 95 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วต่ำ
#define SP_Medium 120 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับกลาง
#define SP_High 130 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับสูง
#define SP_VeryHigh 140 // ความเร็วการเบี่ยงกลับมาให้ตรงด้วยความเร็วระดับสูงมาก
//*************************************************************//
void arrow_tracking()
{
pinMode(rightMotorPin1, OUTPUT);
pinMode(rightMotorPin2, OUTPUT);
pinMode(leftMotorPin1, OUTPUT);
pinMode(leftMotorPin2, OUTPUT);
pinMode(enableRightMotor, OUTPUT);
pinMode(enableLeftMotor, OUTPUT);
pinMode(IR6, INPUT);
pinMode(IR7, INPUT);
int s6 = analogRead(IR6); //เซนเซอร์ตรวจลูกศรซ้าย
int s7 = analogRead(IR7); //เซนเซอร์ตรวจลูกศรขวา
if((s6 <= White) && (s7 >= White))
{
//ให้วิ่งตรงด้วยความเร็ว ระดับ SP_Normal
analogWrite(enableRightMotor, SP_Normal);
analogWrite(enableLeftMotor, SP_Normal);
delay(200);
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, LOW);
delay(1000);
digitalWrite(rightMotorPin1, HIGH);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, HIGH);
digitalWrite(leftMotorPin2, LOW);
delay(100);
}
if((s6 >= White) && (s7 <= White))
{
//ให้วิ่งตรงด้วยความเร็ว ระดับ SP_Normal
analogWrite(enableRightMotor, SP_Normal);
analogWrite(enableLeftMotor, SP_Normal);
delay(200);
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, LOW);
delay(1000);
digitalWrite(rightMotorPin1, HIGH);
digitalWrite(rightMotorPin2, LOW);
digitalWrite(leftMotorPin1, HIGH);
digitalWrite(leftMotorPin2, LOW);
delay(100);
}
}
จากโค้ดของบนเลยอะครับ
คือถ้า if((s6 <= White) && (s7 >= White)) อยากให้มันหน่วงเวลาสัก 200 ละเริ่มคำสั่งอีก 1000 พอครบแล้วก็ให้เริ่มอีกคำสั่งอีก 100 และอยากให้มันหน่วงคำสั่งอีกอะครับไม่อยากให้มันใช้ถี่เกินไปแบบให้คำสั่งมีคูลดาวตัวมันถึงจะใช้ได้อีกอะครับ ไม่ทราบว่าควรแทรกคำสั่งตรงไหนหรอครับ