Arduino การใช้งานอ่านค่าจากสวิตช์ โดยใช้คำสั่ง digitalRead()
การต่อสวิตช์มี 2 แบบ คือ pull up โดยจ่ายสัญญาณ 1 ให้กับสวิตช์ อีกแบบคือ pull down โดยจ่ายสัญญาณ 0 ให้กับสวิตช์ โดยผ่านตัวต้านทานเพื้อจำกัดกระแสไม่ให้มากจนทำให้บอร์ดพัง
การกำหนดค่า 0 หรือ 1 ให้กับสวิตช์ก็เพื่อป้องกันสัญญาณรบกวน ใน Arduino เข้าใจปัญหานี้ จึงออกแบบให้ต่อโหมด pull up ได้ โดยไม่ต้องมีอุปกรณ์เพิ่ม เรียกว่า โหมด INPUT_PULLUP

การต่อสวิตช์มี 2 แบบคือ

1. Pull UP คือการกำหนดสัญญาณ 1 ให้กับสวิตช์ตลอดเวลา เมื่อสวิตช์ถูกกดจะให้สัญญาณ 0

2. Pull Down คือ การกำหนดสัญญาณ 0 ให้กับสวิตช์ตลอดเวลา เมื่อสวิตช์ถูกกดจะให้สัญญาณ 1

ใช้ตัวต้านทานจ่ายไฟให้กับสวิตช์ ตัวอย่างดังรูป

Pull UP มีแถมพิเศษ

Arduino ออกแบบให้สามารถทำงานแบบ Pull UP ได้แบบไม่ต้องใช้ตัวต้านทานเพิ่ม เพียงแค่พิมพ์โคดคำสั่งให้เป็นโหมดนี้

pinMode(ขา,INPUT_PULLUP);

 

ตัวอย่าง ต้องการต่อสวิตช์กับขา 2 เมื่อกดปุ่มให้ LED ที่ขา 7 ติด และเมื่อปล่อยให้ LED ดับ

  1. เพื่อให้ง่ายต่อการใช้งาน กำหนดสวิตช์เป็นโหมด INPUT_PULLUP สวิตชจะมีสถานะ 1 ตลอดเวลา
  2. อ่านค่าสวิตช์โดยใช้คำสั่ง digitalRead(ขาสวิตช์);
  3. กำหนด LED ให้เป็นโหมด OUTPUT
  4. สั่งให้ไฟ LED ติด โดยใช้คำสั่ง digitalWrite(ขา LED,1);

โคดตัวอย่าง

 

 

 


7 Response Comments

  • datsun  4 สิงหาคม 2018 at 21:25

    โคดตัวอย่างข้างบน คำสั่ง digitalwrite หลัง else ต้องเป็น (7,0) ไหมครับ

    ตอบกลับ
    • admin  4 สิงหาคม 2018 at 23:53

      ทำได้ ถ้าเขียนคำสั่งว่า digitalWrite(7,0); แปลว่า สั่งให้ไฟออก 0V ที่ขา 7 ครับ

      ตอบกลับ
      • zneb076  3 มิถุนายน 2019 at 15:18

        if(sw==0){
        digitalWrite(7,1);
        }else{
        digitalWrite(7,1);
        }

        ตรงนี้ใน code ใน else ต้องเป็น digitalWrite(7,0); ใช่ป่ะครับ

        ตอบกลับ
        • cool  4 มิถุนายน 2019 at 11:35

          ถูกต้องครับ ต้องเป็น digitalWrite(7,0);

          ตอบกลับ
  • sutorn  7 พฤศจิกายน 2018 at 16:56

    ไม่มีตัวต้านทานจำกัดกระแส led เหรอครับ

    ตอบกลับ
    • admin  7 พฤศจิกายน 2018 at 23:14

      กระแสไม่เยอะ และโวลต์อยู่ในช่วงของ led ทำงาน สามารถต่อตรงได้เลย แต่ถ้าจะต่อ R ก็ได้ครับ

      ตอบกลับ

โพสคอมเมนต์

Please enter your name. Please enter an valid email address. Please enter a message.