คำสั่ง delayMicroseconds() นั้นเป็นการออกคำสั่งเพื่อการทำงานของโปรแกรม เป็นหยุดเวลาในช่วงสั้นๆ อยู่ในระดับไมโครวินาที ซึ่ง 1,000 ไมโครวินาที(us) เท่ากับ 1 มิลลิวินาที (ms) หรือ 1,000,000 ไมโครวินาที เท่ากับ 1 วินาที (s) นั่นเอง
และค่าที่มากสุดในการให้ระยะเวลาที่แม่นยำคือ 16,383 และน้อยสุด คือ 3 ไมโครวินาที ซึ่งเป็นสิ่งสำคัญของนักโปรแกรม ที่จะต้องใส่ใจในการเลือกใช้คำสั่งดังกล่าวให้เหมาะสมกับช่วงเวลาที่ต้องการนั้นด้วย ลองดูชุดคำสั่งต่อไปนี้
//*************************************
//Program:testMicroDelay.pde
//Crate by:Deryoung.com
//Resulte: on-off in rage microsecond time.
//Interface: none
//*************************************
int outPin=9;
void setup()
{
pinMode(outPin,OUTPUT);
}
void loop()
{
digitalWrite(outPin, HIGH); // sets the pin on
delayMicroseconds(50); // pauses for 50 microseconds
digitalWrite(outPin, LOW); // sets the pin off
delayMicroseconds(50); // pauses for 50 microseconds
}
|
รูปที่ 1. แสดงการเปิดปิดของ port Digital-9 ด้วยเวลา 50us
หลังจากเราได้ใช้คำสั่ง
digitalWrite(outPin, HIGH); จะอยู่ในสถานะ HIGH (5vdc)
delayMicroseconds(50); คำสั่งนี้จะทำการหยุดโปรแกรมชั่วขณะเป็นเวลา 50 ไมโครวินาที ทำให้ขา digitital-9
เป็น HIGH นาน 50 ไมโครวินาที
digitalWrite(outPin, LOW);จะอยู่ในสถานะ LOW (0V)
delayMicroseconds(50); คำสั่งนี้จะทำการหยุดโปรแกรมชั่วขณะเป็นเวลา 50 ไมโครวินาที ทำให้ขา digitital-9
เป็น LOW นาน 50 ไมโครวินาที
ทดลองอีกครั้ง โดยเราจะทดลองป้อนสถานะ HIGH ให้ขา digital-9 เป็นเวลา 25 us (ครึ่งหนึ่งของสถานะ Low)
void loop()
{
digitalWrite(outPin, HIGH);
delayMicroseconds(25); // pauses for 25 microseconds
digitalWrite(outPin, LOW);
delayMicroseconds(50);
}
หลังจาก Run โปรแกรมข้างต้น จะผลลัพธ์ที่ออกมาดังแสดงด้านล่าง

รูปที่ 2. ป้อนสถานะ HIGH นาน 25 ไมโครวินาที
เพื่อเป็นหาค่า min ที่ต่ำสุด (อย่างแม่นยำ) ทดลองป้อนเวลาเป็น 1 ไมโครวินาทีในสภาวะ HIGH ที่ digital-9 และ LOW เป็นระยะเวลา 5 ไมโครวินาที
int outPin=9;
void setup()
{
pinMode(outPin,OUTPUT);
}
void loop()
{
digitalWrite(outPin, HIGH); // sets the pin on
delayMicroseconds(1); // pauses for 1 microseconds
digitalWrite(outPin, LOW); // sets the pin off
delayMicroseconds(5); // pauses for 5 microseconds
}
|

ผลจากการตรวจวัดด้วย Oscilloscope จะผลลัพทธ์ช่วง HIGH ได้ผลลัพธ์ประมาณ 2.3us (ใกล้เคียง 3 us) ส่วนผลลัพธ์ของช่วงล่างที่เป็น LOW ยังคงได้ระยะเวลาที่ใกล้เคียงกับ 5.0us มากกว่า ตามที่เราป้อนหรือโปรแกรมมันลงไปในโปรแกรมข้างต้น.