https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay
Digital
Blink Without Delay
กระพริบ an LED โดยไม่ต้องใช้ the delay() function.
LAST REVISION: 31/10/2566 21:11
บางครั้งคุณจำเป็นต้องทำสองสิ่งพร้อมกัน ตัวอย่างเช่น คุณอาจต้องการกระพริบไฟ LED ขณะที่อ่านการกดปุ่ม ในกรณีนี้ คุณไม่สามารถใช้ delay()ได้ เนื่องจาก Arduino จะหยุดโปรแกรมของคุณชั่วคราวในระหว่าง the delay(). หาก the button ถูกกดในขณะที่ Arduino หยุดชั่วคราวเพื่อรอให้ the delay() ผ่านไป โปรแกรมของคุณจะพลาด the button press.
sketch นี้สาธิตวิธีการกะพริบไฟ LED โดยไม่ใช้ delay(). มันจะเปิดไฟ LED แล้วจดบันทึกเวลา จากนั้นแต่ละครั้งที่ผ่าน loop(), มันจะตรวจสอบเพื่อดูว่าเวลากะพริบที่ต้องการผ่านไปแล้วหรือไม่ หากมันผ่านไป ระบบจะเปิดหรือปิด LED และจดบันทึก the new time. ด้วยวิธีนี้ LED จะกะพริบอย่างต่อเนื่องในขณะที่ the sketch execution จะไม่ล่าช้าบนคำสั่งเดียว
การอุปมาเหมือนการอุ่นพิซซ่าในไมโครเวฟและรออีเมลสำคัญด้วย คุณใส่พิซซ่าในไมโครเวฟแล้วตั้งไว้ 10 นาที อุปมาการใช้ delay() คือการนั่งอยู่หน้าไมโครเวฟดูตัวจับเวลานับถอยหลังจาก 10 นาทีจนกระทั่งตัวจับเวลาถึงศูนย์ หากอีเมลสำคัญมาถึงในช่วงเวลานี้คุณจะพลาดมัน
สิ่งที่คุณจะทำในชีวิตจริงคือเปิดเครื่องอบพิซซ่า แล้วเช็คอีเมล จากนั้นอาจจะทำอย่างอื่น (ซึ่งใช้เวลาไม่นานเกินไป!) และบ่อยครั้งที่คุณจะกลับมาที่ไมโครเวฟเพื่อดู หากตัวจับเวลาถึงศูนย์ แสดงว่าพิซซ่าของคุณเสร็จแล้ว
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีตั้งค่าตัวจับเวลาที่คล้ายกัน
Digital
Blink Without Delay
กระพริบ an LED โดยไม่ต้องใช้ the delay() function.
LAST REVISION: 31/10/2566 21:11
บางครั้งคุณจำเป็นต้องทำสองสิ่งพร้อมกัน ตัวอย่างเช่น คุณอาจต้องการกระพริบไฟ LED ขณะที่อ่านการกดปุ่ม ในกรณีนี้ คุณไม่สามารถใช้ delay()ได้ เนื่องจาก Arduino จะหยุดโปรแกรมของคุณชั่วคราวในระหว่าง the delay(). หาก the button ถูกกดในขณะที่ Arduino หยุดชั่วคราวเพื่อรอให้ the delay() ผ่านไป โปรแกรมของคุณจะพลาด the button press.
sketch นี้สาธิตวิธีการกะพริบไฟ LED โดยไม่ใช้ delay(). มันจะเปิดไฟ LED แล้วจดบันทึกเวลา จากนั้นแต่ละครั้งที่ผ่าน loop(), มันจะตรวจสอบเพื่อดูว่าเวลากะพริบที่ต้องการผ่านไปแล้วหรือไม่ หากมันผ่านไป ระบบจะเปิดหรือปิด LED และจดบันทึก the new time. ด้วยวิธีนี้ LED จะกะพริบอย่างต่อเนื่องในขณะที่ the sketch execution จะไม่ล่าช้าบนคำสั่งเดียว
การอุปมาเหมือนการอุ่นพิซซ่าในไมโครเวฟและรออีเมลสำคัญด้วย คุณใส่พิซซ่าในไมโครเวฟแล้วตั้งไว้ 10 นาที อุปมาการใช้ delay() คือการนั่งอยู่หน้าไมโครเวฟดูตัวจับเวลานับถอยหลังจาก 10 นาทีจนกระทั่งตัวจับเวลาถึงศูนย์ หากอีเมลสำคัญมาถึงในช่วงเวลานี้คุณจะพลาดมัน
สิ่งที่คุณจะทำในชีวิตจริงคือเปิดเครื่องอบพิซซ่า แล้วเช็คอีเมล จากนั้นอาจจะทำอย่างอื่น (ซึ่งใช้เวลาไม่นานเกินไป!) และบ่อยครั้งที่คุณจะกลับมาที่ไมโครเวฟเพื่อดู หากตัวจับเวลาถึงศูนย์ แสดงว่าพิซซ่าของคุณเสร็จแล้ว
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีตั้งค่าตัวจับเวลาที่คล้ายกัน