ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
ใครที่ต้องการระบบที่ซับซ้อนขึ้น เช่นเพิ่มสวิทช์ หรือมี delay หลายๆตัว แนะนำให้ดูวิดิโอนี้ต่อเลยนะครับth-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
ขอบคุณมากครับ มีประโยนช์มาก
ขอบคุณครับ งงกับ milli มาตั้งนาน ดูอันนี้แล้วเข้าใจเลยครับ
สอนเข้าใจง่าย ขอบคุณมากครับ 2022 ยังใช้งานปกติครับ
สอนอธิบายเข้าใจดีมากครับ
ขอบคุณครับ มีประโยชน์มาก เพราะเคยใช้แต่ delay()
เป็นความรู้ดีมากครับ
ขอบคุณคร้าบบ
ดีครับ อยากให้แสดงตัวอย่างการใช้งาน เช่น เรากด ปุ่ม แล้วจะเป็นการตั้งเวลา อีก 1 ชั่งโมงสั่งให้ไฟดิดครับ ขอบคุณล่วงหน้าครับ
น่าสนใจครับ เดี๋ยวลองทำดูครับ มีคนสงสัยแนวๆนี้เยอะเหมือนกัน
ขอบคุณสำหรับ ตัวอย่าง และขอสอบถามหน่อยครับ ถ้าเรามี สวิชท์ 1 อัน กดปุ่มค้างไว้ (สถานะเป็น 0 เพราะเซ็ตเป็น INPUT_PULLUP ไว้) แล้ว ให้ Servo ตัวที่1 ทำงาน เลย ถัดมา อีก 1 วิ ให้ตัวที่ 2 ทำงาน ถัดมาอีก 2 วิ ตัวที่3 ทำงาน หลังจากนั้น ก็ วนกลับไปทำใหม่ ตั้งแต่ต้น ผมลองใส่ค่าตามตัวอย่าง มันจะทำงาน ทุก ๆ วิ ที่เราได้ตั้งไว้ มันจะไม่ไล่ลำดับน่ะครับ
ต้องใช้ state และ timer ช่วยครับ แนะนำให้ดูวิดิโอนี้ต่อนะครับth-cam.com/video/cQB0RA9IvNQ/w-d-xo.htmlถ้าต้องการสอบถาม หรือคำแนะนำ สามารถทักมาทางเพจเฟซบุ้คได้เลยครับ facebook.com/MLabpage/
แล้วสมมุติว่า timer1 เราสั่ง steper มอเตอร์ ให้หมุนอยู่แล้วแล้วยังทำไม่เสร็จ ตัว timer 2 จะทำงานมั้ยครับ
ขึนกับว่าฟังก์ชันที่เราสั่งมันเป็น Blocking หรือ non-blocking ครับ ถ้าเป็น non-blocking คือฟังก์ชันที่ทำงานโดยไม่ต้องรอ เช่นไม่มี delay หรือ while loop ระบบก็จะสามารถทำงานได้ตามปกติครับ
แล้วท่าค่าของunsigned long มันสุดแล้วอะครับจะเกิดการเออเรอร์ไหมครับ
ถ้ามันสุดมันจะกลายเป็น0ใหม่ครับ
@@Kittisak_Pomarsa ใช่ครับ แต่ถ้าเอามาลบกันยังใช่ได้อยู่ครับ เพราะ unsigned ลบกัน ไม่มีติดลบ
ถ้ามันเก็บค่าคาบเวลาจนครบ 49 วันกว่า ๆโปรแกรมเราจะมีปัญหาเรื่องข้อจำกัดของ mills ()มั้ยครับแล้วแก้ยังไง
สวัสดีครับ ถ้าระยะเวลาที่เรานับไม่เกิน 49 วัน ไม่มีปัญหาครับ เช่นทำไฟกระพริบ ทุก 1 วินาที แม้ว่าเวลาจะผ่านไป 49 วัน หรือ 50 วัน มันก็ยังกระพริบทุก 1 วินาทีเหมือนเดิม เพราะเป็นการคำนวณแบบ unsigned ครับแต่ถ้าให้มันจับเวลายาวๆเลย ดช่นจำเวลาที่ระบบเริ่มทำงาน จนเวลานานกว่า 49 วัน หมายความว่าตัวแปร unsigned long มันจะ overflow ครับ ค่ามันจะกลับมาเป็น 0 ถ้าต้องการนับเวลานานๆ แนะนำให้ใช้ Timelib ครับ ผมเคยยกตัวอย่างไว้เหมือนกันในวิดิโอนี้ th-cam.com/video/XWxm2jKJ2TA/w-d-xo.html ถ้าไม่เข้าใจจุดไหนทักมาในเพจได้เลยนะครับ
ถ้าตั้งให้ รีเซ็ทค่านับจำนวนให้เป็น 0 เขียนยังไงครับ
รบกวนติดต่อทางเฟซบุ้คเพจนะครับบ น่าจะสะดวกกว่า
ดีครับถ้าผมมีลำดับอยางเช่น 1 ทำงาน 500 2ทำงาน1000 3ทำงาน1500 เงือนไขคือ 1ทำงานพอถึง1000สองทำงานเเล้ว1หยุด จากนั้นถึง1500 3ทำ 2หยุด จะเขียนเเบบไหนอะครับ
รบกวนถามทางเฟซบุ๊คเพจนะครับ ในนี้ตอบยากครับ facebook.com/MLabpage
แนะนำให้ดูวิดิโอนี้ต่อนะครับ th-cam.com/video/cQB0RA9IvNQ/w-d-xo.htmlถ้าดูแล้วมีข้อสงสัยให้ทักมาทางเพจได้เลยครับ
สวัสดีครับ พอดีผมอยากให้ มันกดปุ่มแล้วเริ่มนับเวลา อ่ะครับ ผมต้องใช้ 2 delay แต่มันไม่ได้เลยมาใช้ millis พอใช้แล้วผมต้องการให้ กด สวิสแล้วถึงจะเริ่มนับ 1 อ่ะครับ มันต้องแก้อะไรตรงไหนไหมครับขอบคุณครับ
เพิ่มสวิตช์ในคำสั่ง millis ยังไงคับ
เพิ่มเพื่อจึดประสงค์อะไรครับ
@@mlab3051 เอาไปหน่วงเวลาของ Module Relay คับ แบบว่ากดสวิตช์แล้วให้ Relay ทำงาน 15นาที แล้วดับครับ แต่ผมไม่รู้ว่าต้องใช้สวิตช์คำสั่งอะไร
ถ้าเกิดต้องการ Delay เวลาเป็นหลายๆ ชั่วโมง ต้องทำยังไงครับ
สามารถแปลงชั่วโมงเป็นมิลลิวินาที โดย มิลลิวินาที เท่ากับ (ชั่วโมง) * 60 * 60 * 1000
BLYNK_WRITE(V0){ if(param.asInt() == 1) { digitalWrite(relay1,LOW); delay(100); digitalWrite(relay2,LOW); delay(20000); Blynk.virtualWrite(V0,0); digitalWrite(relay1,HIGH); delay(100); digitalWrite(relay2,HIGH); }}ผมจะเอา ฟังชั่น millis มาแทน delay(20000); ยังไงครับขอบคุณครับ
ถ้าแบบนี้ต้องเขียนแบบเสตทแมชชีนครับ
วิดิโอเรื่อง state machine เสร็จแล้วนะครับบ
ใครที่ต้องการระบบที่ซับซ้อนขึ้น เช่นเพิ่มสวิทช์ หรือมี delay หลายๆตัว แนะนำให้ดูวิดิโอนี้ต่อเลยนะครับ
th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
ขอบคุณมากครับ มีประโยนช์มาก
ขอบคุณครับ งงกับ milli มาตั้งนาน ดูอันนี้แล้วเข้าใจเลยครับ
สอนเข้าใจง่าย ขอบคุณมากครับ 2022 ยังใช้งานปกติครับ
สอนอธิบายเข้าใจดีมากครับ
ขอบคุณครับ มีประโยชน์มาก เพราะเคยใช้แต่ delay()
เป็นความรู้ดีมากครับ
ขอบคุณคร้าบบ
ดีครับ อยากให้แสดงตัวอย่างการใช้งาน เช่น เรากด ปุ่ม แล้วจะเป็นการตั้งเวลา อีก 1 ชั่งโมงสั่งให้ไฟดิดครับ ขอบคุณล่วงหน้าครับ
น่าสนใจครับ เดี๋ยวลองทำดูครับ มีคนสงสัยแนวๆนี้เยอะเหมือนกัน
ขอบคุณสำหรับ ตัวอย่าง และขอสอบถามหน่อยครับ ถ้าเรามี สวิชท์ 1 อัน กดปุ่มค้างไว้ (สถานะเป็น 0 เพราะเซ็ตเป็น INPUT_PULLUP ไว้) แล้ว ให้ Servo ตัวที่1 ทำงาน เลย ถัดมา อีก 1 วิ ให้ตัวที่ 2 ทำงาน ถัดมาอีก 2 วิ ตัวที่3 ทำงาน หลังจากนั้น ก็ วนกลับไปทำใหม่ ตั้งแต่ต้น ผมลองใส่ค่าตามตัวอย่าง มันจะทำงาน ทุก ๆ วิ ที่เราได้ตั้งไว้ มันจะไม่ไล่ลำดับน่ะครับ
ต้องใช้ state และ timer ช่วยครับ แนะนำให้ดูวิดิโอนี้ต่อนะครับ
th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
ถ้าต้องการสอบถาม หรือคำแนะนำ สามารถทักมาทางเพจเฟซบุ้คได้เลยครับ facebook.com/MLabpage/
แล้วสมมุติว่า timer1 เราสั่ง steper มอเตอร์ ให้หมุนอยู่แล้วแล้วยังทำไม่เสร็จ ตัว timer 2 จะทำงานมั้ยครับ
ขึนกับว่าฟังก์ชันที่เราสั่งมันเป็น Blocking หรือ non-blocking ครับ ถ้าเป็น non-blocking คือฟังก์ชันที่ทำงานโดยไม่ต้องรอ เช่นไม่มี delay หรือ while loop ระบบก็จะสามารถทำงานได้ตามปกติครับ
แล้วท่าค่าของunsigned long มันสุดแล้วอะครับจะเกิดการเออเรอร์ไหมครับ
ถ้ามันสุดมันจะกลายเป็น0ใหม่ครับ
@@Kittisak_Pomarsa ใช่ครับ แต่ถ้าเอามาลบกันยังใช่ได้อยู่ครับ เพราะ unsigned ลบกัน ไม่มีติดลบ
ถ้ามันเก็บค่าคาบเวลาจนครบ 49 วันกว่า ๆโปรแกรมเราจะมีปัญหาเรื่องข้อจำกัดของ mills ()มั้ยครับแล้วแก้ยังไง
สวัสดีครับ ถ้าระยะเวลาที่เรานับไม่เกิน 49 วัน ไม่มีปัญหาครับ เช่นทำไฟกระพริบ ทุก 1 วินาที แม้ว่าเวลาจะผ่านไป 49 วัน หรือ 50 วัน มันก็ยังกระพริบทุก 1 วินาทีเหมือนเดิม เพราะเป็นการคำนวณแบบ unsigned ครับ
แต่ถ้าให้มันจับเวลายาวๆเลย ดช่นจำเวลาที่ระบบเริ่มทำงาน จนเวลานานกว่า 49 วัน หมายความว่าตัวแปร unsigned long มันจะ overflow ครับ ค่ามันจะกลับมาเป็น 0 ถ้าต้องการนับเวลานานๆ แนะนำให้ใช้ Timelib ครับ ผมเคยยกตัวอย่างไว้เหมือนกันในวิดิโอนี้ th-cam.com/video/XWxm2jKJ2TA/w-d-xo.html ถ้าไม่เข้าใจจุดไหนทักมาในเพจได้เลยนะครับ
ถ้าตั้งให้ รีเซ็ทค่านับจำนวนให้เป็น 0 เขียนยังไงครับ
รบกวนติดต่อทางเฟซบุ้คเพจนะครับบ น่าจะสะดวกกว่า
ดีครับถ้าผมมีลำดับอยางเช่น 1 ทำงาน 500 2ทำงาน1000 3ทำงาน1500 เงือนไขคือ 1ทำงานพอถึง1000สองทำงานเเล้ว1หยุด จากนั้นถึง1500 3ทำ 2หยุด จะเขียนเเบบไหนอะครับ
รบกวนถามทางเฟซบุ๊คเพจนะครับ ในนี้ตอบยากครับ facebook.com/MLabpage
แนะนำให้ดูวิดิโอนี้ต่อนะครับ th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
ถ้าดูแล้วมีข้อสงสัยให้ทักมาทางเพจได้เลยครับ
สวัสดีครับ พอดีผมอยากให้ มันกดปุ่มแล้วเริ่มนับเวลา อ่ะครับ ผมต้องใช้ 2 delay แต่มันไม่ได้เลยมาใช้ millis พอใช้แล้วผมต้องการให้ กด สวิสแล้วถึงจะเริ่มนับ 1 อ่ะครับ มันต้องแก้อะไรตรงไหนไหมครับขอบคุณครับ
แนะนำให้ดูวิดิโอนี้ต่อนะครับ th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
ถ้าดูแล้วมีข้อสงสัยให้ทักมาทางเพจได้เลยครับ
เพิ่มสวิตช์ในคำสั่ง millis ยังไงคับ
เพิ่มเพื่อจึดประสงค์อะไรครับ
@@mlab3051 เอาไปหน่วงเวลาของ Module Relay คับ แบบว่ากดสวิตช์แล้วให้ Relay ทำงาน 15นาที แล้วดับครับ แต่ผมไม่รู้ว่าต้องใช้สวิตช์คำสั่งอะไร
ถ้าเกิดต้องการ Delay เวลาเป็นหลายๆ ชั่วโมง ต้องทำยังไงครับ
สามารถแปลงชั่วโมงเป็นมิลลิวินาที โดย มิลลิวินาที เท่ากับ (ชั่วโมง) * 60 * 60 * 1000
BLYNK_WRITE(V0)
{
if(param.asInt() == 1)
{
digitalWrite(relay1,LOW);
delay(100);
digitalWrite(relay2,LOW);
delay(20000);
Blynk.virtualWrite(V0,0);
digitalWrite(relay1,HIGH);
delay(100);
digitalWrite(relay2,HIGH);
}
}
ผมจะเอา ฟังชั่น millis มาแทน delay(20000); ยังไงครับ
ขอบคุณครับ
ถ้าแบบนี้ต้องเขียนแบบเสตทแมชชีนครับ
วิดิโอเรื่อง state machine เสร็จแล้วนะครับบ