การใช้งาน millis() กับ Arduino

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 พ.ย. 2019

ความคิดเห็น • 35

  • @mlab3051
    @mlab3051  2 ปีที่แล้ว +1

    ใครที่ต้องการระบบที่ซับซ้อนขึ้น เช่นเพิ่มสวิทช์ หรือมี delay หลายๆตัว แนะนำให้ดูวิดิโอนี้ต่อเลยนะครับ
    th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html

  • @EArth_lnwza
    @EArth_lnwza ปีที่แล้ว +2

    ขอบคุณมากครับ มีประโยนช์มาก

  • @opwo7637
    @opwo7637 3 ปีที่แล้ว +1

    ขอบคุณครับ งงกับ milli มาตั้งนาน ดูอันนี้แล้วเข้าใจเลยครับ

  • @user-on4kk4hs3h
    @user-on4kk4hs3h ปีที่แล้ว +1

    สอนเข้าใจง่าย ขอบคุณมากครับ 2022 ยังใช้งานปกติครับ

  • @user-dm4zy3gq2v
    @user-dm4zy3gq2v ปีที่แล้ว +1

    สอนอธิบายเข้าใจดีมากครับ

  • @winaiwussa5054
    @winaiwussa5054 4 ปีที่แล้ว +2

    ขอบคุณครับ มีประโยชน์มาก เพราะเคยใช้แต่ delay()

  • @sornchaiseevitoon1841
    @sornchaiseevitoon1841 4 ปีที่แล้ว +1

    เป็นความรู้ดีมากครับ

    • @mlab3051
      @mlab3051  4 ปีที่แล้ว

      ขอบคุณคร้าบบ

  • @detdamdongbori_Diy_inventer
    @detdamdongbori_Diy_inventer 4 ปีที่แล้ว +1

    ดีครับ อยากให้แสดงตัวอย่างการใช้งาน เช่น เรากด ปุ่ม แล้วจะเป็นการตั้งเวลา อีก 1 ชั่งโมงสั่งให้ไฟดิดครับ ขอบคุณล่วงหน้าครับ

    • @mlab3051
      @mlab3051  4 ปีที่แล้ว

      น่าสนใจครับ เดี๋ยวลองทำดูครับ มีคนสงสัยแนวๆนี้เยอะเหมือนกัน

  • @samartupathong7919
    @samartupathong7919 2 ปีที่แล้ว +1

    ขอบคุณสำหรับ ตัวอย่าง และขอสอบถามหน่อยครับ ถ้าเรามี สวิชท์ 1 อัน กดปุ่มค้างไว้ (สถานะเป็น 0 เพราะเซ็ตเป็น INPUT_PULLUP ไว้) แล้ว ให้ Servo ตัวที่1 ทำงาน เลย ถัดมา อีก 1 วิ ให้ตัวที่ 2 ทำงาน ถัดมาอีก 2 วิ ตัวที่3 ทำงาน หลังจากนั้น ก็ วนกลับไปทำใหม่ ตั้งแต่ต้น ผมลองใส่ค่าตามตัวอย่าง มันจะทำงาน ทุก ๆ วิ ที่เราได้ตั้งไว้ มันจะไม่ไล่ลำดับน่ะครับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว +1

      ต้องใช้ state และ timer ช่วยครับ แนะนำให้ดูวิดิโอนี้ต่อนะครับ
      th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
      ถ้าต้องการสอบถาม หรือคำแนะนำ สามารถทักมาทางเพจเฟซบุ้คได้เลยครับ facebook.com/MLabpage/

  • @O4d112
    @O4d112 3 ปีที่แล้ว

    แล้วสมมุติว่า timer1 เราสั่ง steper มอเตอร์ ให้หมุนอยู่แล้วแล้วยังทำไม่เสร็จ ตัว timer 2 จะทำงานมั้ยครับ

    • @mlab3051
      @mlab3051  3 ปีที่แล้ว

      ขึนกับว่าฟังก์ชันที่เราสั่งมันเป็น Blocking หรือ non-blocking ครับ ถ้าเป็น non-blocking คือฟังก์ชันที่ทำงานโดยไม่ต้องรอ เช่นไม่มี delay หรือ while loop ระบบก็จะสามารถทำงานได้ตามปกติครับ

  • @sittichaisangkammee9279
    @sittichaisangkammee9279 4 ปีที่แล้ว

    แล้วท่าค่าของunsigned long มันสุดแล้วอะครับจะเกิดการเออเรอร์ไหมครับ

    • @Kittisak_Pomarsa
      @Kittisak_Pomarsa 3 ปีที่แล้ว +1

      ถ้ามันสุดมันจะกลายเป็น0ใหม่ครับ

    • @mlab3051
      @mlab3051  3 ปีที่แล้ว

      @@Kittisak_Pomarsa ใช่ครับ แต่ถ้าเอามาลบกันยังใช่ได้อยู่ครับ เพราะ unsigned ลบกัน ไม่มีติดลบ

  • @mayu4456
    @mayu4456 2 ปีที่แล้ว +1

    ถ้ามันเก็บค่าคาบเวลาจนครบ 49 วันกว่า ๆโปรแกรมเราจะมีปัญหาเรื่องข้อจำกัดของ mills ()มั้ยครับแล้วแก้ยังไง

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว +2

      สวัสดีครับ ถ้าระยะเวลาที่เรานับไม่เกิน 49 วัน ไม่มีปัญหาครับ เช่นทำไฟกระพริบ ทุก 1 วินาที แม้ว่าเวลาจะผ่านไป 49 วัน หรือ 50 วัน มันก็ยังกระพริบทุก 1 วินาทีเหมือนเดิม เพราะเป็นการคำนวณแบบ unsigned ครับ
      แต่ถ้าให้มันจับเวลายาวๆเลย ดช่นจำเวลาที่ระบบเริ่มทำงาน จนเวลานานกว่า 49 วัน หมายความว่าตัวแปร unsigned long มันจะ overflow ครับ ค่ามันจะกลับมาเป็น 0 ถ้าต้องการนับเวลานานๆ แนะนำให้ใช้ Timelib ครับ ผมเคยยกตัวอย่างไว้เหมือนกันในวิดิโอนี้ th-cam.com/video/XWxm2jKJ2TA/w-d-xo.html ถ้าไม่เข้าใจจุดไหนทักมาในเพจได้เลยนะครับ

  • @saran2341
    @saran2341 2 ปีที่แล้ว

    ถ้าตั้งให้ รีเซ็ทค่านับจำนวนให้เป็น 0 เขียนยังไงครับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว

      รบกวนติดต่อทางเฟซบุ้คเพจนะครับบ น่าจะสะดวกกว่า

  • @FiwGerCh
    @FiwGerCh 4 ปีที่แล้ว

    ดีครับถ้าผมมีลำดับอยางเช่น 1 ทำงาน 500 2ทำงาน1000 3ทำงาน1500 เงือนไขคือ 1ทำงานพอถึง1000สองทำงานเเล้ว1หยุด จากนั้นถึง1500 3ทำ 2หยุด จะเขียนเเบบไหนอะครับ

    • @mlab3051
      @mlab3051  4 ปีที่แล้ว

      รบกวนถามทางเฟซบุ๊คเพจนะครับ ในนี้ตอบยากครับ facebook.com/MLabpage

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว

      แนะนำให้ดูวิดิโอนี้ต่อนะครับ th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
      ถ้าดูแล้วมีข้อสงสัยให้ทักมาทางเพจได้เลยครับ

  • @NightKingHot
    @NightKingHot 2 ปีที่แล้ว

    สวัสดีครับ พอดีผมอยากให้ มันกดปุ่มแล้วเริ่มนับเวลา อ่ะครับ ผมต้องใช้ 2 delay แต่มันไม่ได้เลยมาใช้ millis พอใช้แล้วผมต้องการให้ กด สวิสแล้วถึงจะเริ่มนับ 1 อ่ะครับ มันต้องแก้อะไรตรงไหนไหมครับขอบคุณครับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว +1

      แนะนำให้ดูวิดิโอนี้ต่อนะครับ th-cam.com/video/cQB0RA9IvNQ/w-d-xo.html
      ถ้าดูแล้วมีข้อสงสัยให้ทักมาทางเพจได้เลยครับ

  • @jirawatflim3334
    @jirawatflim3334 2 ปีที่แล้ว +1

    เพิ่มสวิตช์ในคำสั่ง millis ยังไงคับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว

      เพิ่มเพื่อจึดประสงค์อะไรครับ

    • @jirawatflim3334
      @jirawatflim3334 2 ปีที่แล้ว

      @@mlab3051 เอาไปหน่วงเวลาของ Module Relay คับ แบบว่ากดสวิตช์แล้วให้ Relay ทำงาน 15นาที แล้วดับครับ แต่ผมไม่รู้ว่าต้องใช้สวิตช์คำสั่งอะไร

  • @totoserado2083
    @totoserado2083 9 หลายเดือนก่อน

    ถ้าเกิดต้องการ Delay เวลาเป็นหลายๆ ชั่วโมง ต้องทำยังไงครับ

    • @mlab3051
      @mlab3051  18 วันที่ผ่านมา

      สามารถแปลงชั่วโมงเป็นมิลลิวินาที โดย มิลลิวินาที เท่ากับ (ชั่วโมง) * 60 * 60 * 1000

  • @ttapfx
    @ttapfx 2 ปีที่แล้ว +1

    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); ยังไงครับ
    ขอบคุณครับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว

      ถ้าแบบนี้ต้องเขียนแบบเสตทแมชชีนครับ

    • @mlab3051
      @mlab3051  2 ปีที่แล้ว

      วิดิโอเรื่อง state machine เสร็จแล้วนะครับบ