pulseIn() ใน arduino ทำงานอย่างไร ?

HC-SR04 กับ Arduino

การทำงานของฟังก์ชัน pulseIn() ใน Arduino

ฟังก์ชัน pulseIn() ใน Arduino ใช้สำหรับวัดระยะเวลาที่สัญญาณที่เข้ามาอยู่ในสถานะหนึ่ง (HIGH หรือ LOW) ซึ่งเหมาะสำหรับการวัดสัญญาณพัลส์หรือสัญญาณที่เปลี่ยนแปลงตามเวลา ณ ที่นี้จะเป็นการยกตัวอย่างกับเซ็นเซอร์ที่ได้รับความนิยมในการวัดหาค่าระยะทาง เช่น สัญญาณจากเซ็นเซอร์ HC-SR04

Syntax ของฟังก์ชัน pulseIn()

pulseIn(pin, value);
pulseIn(pin, value, timeout);
  • pin: ขาดิจิตอลที่ต้องการอ่านสัญญาณพัลส์
  • value: ระบุสถานะที่ต้องการวัด เช่น HIGH หรือ LOW
  • timeout: (ไม่บังคับ) เวลา (หน่วยไมโครวินาที) ที่จะรอการเริ่มต้นพัลส์ หากไม่มีพัลส์เกิดขึ้นภายในเวลานี้ ฟังก์ชันจะคืนค่า 0

เซนเซอร์ Ultrasonic HC-SR04 ตัวอย่าง

การทำงานของ HC-SR04 กับ Arduino ตัวอย่างการทำงาน

สิ่งประดิษฐ์เกิดจากกระบวนการคิดเพื่อแก้ปัญหาใดๆ และเรามักจะพบกับปัญหาที่เกี่ยวข้องกับระยะทางในช่วงสั้นๆที่มีความแม่นยำ หากความต้องการที่กล่าวมาข้างต้นเราจะพิจารณาเอาอุปกรณ์ตัวนึงเข้ามาแก้ปัญหาเหล่านี้ เป็นอุปกรณ์ที่ได้รับความนิยมเป็นอย่างมากเพราะใช้งานง่ายการเชื่อมต่อสื่อสารไม่ซับซ้อนและมีโปรแกรมตัวอย่างให้ใช้งานมากมายนั้นคือ HC-SR04 เป็นเซ็นเซอร์วัดระยะทางด้วยอัลตราโซนิก (Ultrasonic Sensor) ที่ทำงานโดยการปล่อยคลื่นเสียงความถี่สูงและรับสัญญาณสะท้อนกลับมาเพื่อคำนวณระยะทาง วัดจากระยะเวลาที่เสียงใช้ในการเดินทางจากตัวปล่อย (transmitter) ไปยังวัตถุและสะท้อนกลับมาที่ตัวรับ (receiver)

การทำงานของ HC-SR04

  1. Trigger Signal: ใช้ขาสัญญาณ Trigger เพื่อส่งพัลส์สั้น ๆ ให้กับเซ็นเซอร์ โดยต้องส่งสัญญาณที่มีความกว้าง 10 ไมโครวินาที
  2. Sound Emission: เมื่อรับสัญญาณจาก Trigger ขา Echo จะเริ่มทำงาน โดยเซ็นเซอร์จะปล่อยคลื่นเสียงที่มีความถี่ 40 kHz ออกไปจากตัวปล่อย

การใช้งานคำสั่งหน่วงเวลาและจับเวลา delay() และ millis() ใน arduino

การใช้งานคำสั่ง delay() millis() ใน arduino
การใช้งาน millis() กับ delay() ใน Arduino Uno

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

ที่มาและความสำคัญ การเขียนโปรแกรมไมโครคอนโทรลเลอร์ Arduino Uno จะมีฟังก์ชัน millis() และ delay() ให้ใช้สำหรับการจัดการเรื่องเวลา แต่ทั้งสองฟังก์ชันมีความแตกต่างกันในการใช้งานและความเหมาะสมในแต่ละสถานการณ์ หากเราเริ่มต้นศึกษาการเขียนไมโครคอนโทรลเลอร์ เรามักจะพบการเริ่มใช้งานคำสั่ง delay() เพื่อหน่วงเวลาบางอย่างเอาไว้ จนกระทั้งเราชินกับการใช้งาน delay() เพราะใช้งานง่ายไม่ซับซ้อนด้วยคุณสมบัติค้างสถานะนั้นๆไว้ขณะหนึ่งตามค่าที่กำหนด เมื่อเราสามารถเขียนไมโครคอนโทรลเลอร์ให้มีความซับซ้อนมากขึ้นเราจะพบว่า โปรแกรมของเราทำงานช้าลงอย่างเห็นได้ชัด หรืออาจจะอ่านค่าเซ็นเซอร์บางไม่เป็นไปตามขอบเขตที่มันควรจะเป็นไม่ตามเป้าหมายที่เราออกแบบไว้ เพราะการใช้งาน delay() เป็นการทำงานเป็นแบบ blocking

Arduino และการหา address สำหรับอุปกรณ์ที่สื่อสารกันผ่าน i2c interface

การหา address ของ I2C บน Arduino Uno

การหา address ของ I2C บน Arduino Uno

ที่มาและความสำคัญ. การเรียนรู้ไมโครคอนโทรลเลอร์ Arduino uno เป็นการเรียนรู้ไมโครขั้นพื้นฐานหากเราศึกษาไปเรื่อยๆเรามักจะมีองค์ประกอบของการใช้งานโมดูอื่นๆเข้ามาเกี่ยวข้อง และเป็นการสื่อสารด้วย interface แบบต่างๆ หนึ่งใน interface ที่มักนิยมใช้งานพบได้บ่อยครั้งคือ interface แบบ i2c ด้วยจุดเด่นต่างๆเช่นความง่าย,สายเชื่อมต่อน้อย,มีไรบรารี่เยอะ หากถามว่าข้อดีข้องการสื่อสารนี้มีข้อดีอย่างไรไปหาอ่านเพิ่มเติมเอาเองขี้เกียจพิมพ์ – -! เราจะข้ามมาที่กระบวนการหาตำแหน่งที่อยู่ของโมดูลหรืออุปกรณ์เลยละกัน เพราะเมื่อเราต่อโมดูลหรืออุปกรณ์นั้นๆแล้ว ลองใช้ code ที่อยู่ใน internet แล้วผลปรากฏไม่สามารถใช้งานได้ หนึ่งในปัญหาที่พบบ่อยคือการระบุที่อยู่ไม่ถูกต้องนั้นเอง เราจึงจำเป็นต้องหาตำแหน่งที่อยู่ก่อนถึงจะเริ่มการเขียน code เพื่อใช้งานกับโมดูลหรืออุปกรณ์ได้ .