ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

อยากใช้millis()หน่วงเวลาในif

Znook Watcharapon

ปกติผมใช้delayในการหน่วงเวลาแต่ทีนี้ผมอยากทำอย่างอื่นหลังคำสั่งนี้ด้วยdelayคงไม่เหมาะ

ลองดูในตัวอย่างในBlink without Delay ผมลองใช้ดูแล้วLEDมันติด1วินาที ดับ1วินาที มันวนลูปไปเรี่อยๆ

ที่ผมต้องการเป็นแบบนี้

 

    if สวิตซ์  = ถูกกด

 { 

    led = ทำงาน

   delay(5000); <<<<< ตรงนี้ผมอยากใช้millis()ติด5วินาทีทำได้ไหมครับ

    led = ดับ

}

    จบเงื่อนไข

 

 

 

 

 

 

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน

การใช้คำสั่ง delay() จะทำให้ทุกส่วนหยุดจนกว่าจะหน่วงเวลาครบ ทำให้คำสั่งหลัง delay ไม่ทำงาน

วิธีแก้คือเช็คทุกเวลาที่ตั้งไว้ เช่นตั้งไว้ 1 วินาที ก็ใช้คำสั่ง millis() ดึงเวลาออกมาเปรียบเทียบ ถ้าถึง 1 วินาทีแล้วก็จะทำงาน

การเขียนโคดแบบนี้อาจจะยาวหน่อย จึงมีหลายคนเขียนไลบารีให้ง่ายขึ้น มีหลายไลบารี

แนะนำไลบารีตัวนี้ครับ

https://blog.protoneer.co.nz/arduino-task-scheduler/

Arduino-Task-Scheduler

 

QUOTE 
ความคิดเห็นที่ #2
Znook Watcharapon

ลองใช้ดูแล้วผมยังไม่เห็นตวามแตกต่างจากdelayเลยครับ ต้องหยุดรอเหมือนเดิม

 

QUOTE 
ความคิดเห็นที่ #3
เจ้าของร้าน

ถ้ายังไม่ได้ ก็ต้องใช้คำสั่ง millis() ดึงเวลาแบบเขียนเอง ทำได้ตามที่ถามมาครับ

แสดงความคิดเห็นที่ 1-3 จากทั้งหมด 3 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม