« เมื่อ: เมษายน 07, 2016, 02:31:47 PM »
เขียนโปรแกรมวัดระยะด้วย Ultrasonic แสดงผลที่ UART Arduino สามารถเขียนโค้ดเพื่ออ่านค่าระยะจาก Ultrasonic ได้ไม่ยาก เขียนโค้ดเพียงไม่กี่บรรทัด เพียงแต่ค่าที่ได้ยังมีจุดด้อยกว่าการเขียนโค้ดโดยพึ่งไลบรารี่ฟังก์ชั่นอยู่ในกลุ่ม Serial http://arduino.cc/en/Reference/Serial
-Serial.begin() http://arduino.cc/en/Serial/Begin
-if (Serial) http://arduino.cc/en/Serial/IfSerial
-Serial.available() http://arduino.cc/en/Serial/Available
-Serial.read() http://arduino.cc/en/Serial/Read
-Serial.print() http://arduino.cc/en/Serial/Print
-Serial.println() http://arduino.cc/en/Serial/Println
-Serial.flush() http://arduino.cc/en/Serial/Flush
ฟังก์ชั่นที่ใช้งาน
-pinMode() http://arduino.cc/en/Reference/PinMode
-digitalWrite() http://arduino.cc/en/Reference/DigitalWrite
-delay() http://arduino.cc/en/reference/delay
ไลบารี่เพิ่มเติม
-Ultrasonic.h https://github.com/JRodrigoTech/Ultrasonic-HC-SR04
การเพิ่มไลบารี่ลงในโปรแกรม Arduino IDE จากไฟล์ Zip
1. ดาวน์โหลดไฟล์ Zip ดังรูป
2. แตกไฟล์ด้วยโปรแกรม winrar
3. ดับเบิลคลิกเข้าไปในโฟลเดอร์ที่แตกมาได้จากข้อ 2 คัดลอกเฉพาะโฟลเดอร์ Ultrasonic (คลิกขวาที่โฟลเดอร์เลือก copy)
4. นำไปวางในโฟลเดอร์ที่เก็บไลบรารี่ของโปรแกรม Arduino IDE ซึ่งจะอยู่ที่
C:\Users\......\Documents\Arduino\libraries
(คลิกขวาบริเวณว่าง ๆ ภายในโฟลเดอร์แล้วเลือก paste)
โจทย์การทดลอง
-เขียนโปรแกรมวัดระยะด้วย Ultrasonic แสดงผลที่ UART
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)
วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้บอร์ด Arduino
วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้ไอซี ATmega328 (ที่มี Boot Loader Arduino)
ตัวอย่างโปรแกรมที่ไม่ใช้ไลบรารี่
#define TRIGGER_PIN 9 // digital pin D9
#define ECHO_PIN 8 // digital pin D8
void setup()
{
Serial.begin (9600);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop()
{
double duration, distance;
digitalWrite(TRIGGER_PIN, LOW); // Get Start
delayMicroseconds(2); // stable the line
digitalWrite(TRIGGER_PIN, HIGH); // sending 10 us pulse
delayMicroseconds(10); // delay
digitalWrite(TRIGGER_PIN, LOW); // after sending pulse wating to receive signals
duration = pulseIn(ECHO_PIN, HIGH); // calculating time
distance = (duration/2) / 29.1; // single path
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
ตัวอย่างโปรแกรมที่ใช้ไลบรารี่#include <Ultrasonic.h>
Ultrasonic ultrasonic(A5,A4); // (Trig PIN,Echo PIN)
void setup() {
Serial.begin(9600);
}
void loop()
{
Serial.print(ultrasonic.Ranging(CM)); // CM or INC
Serial.println(" cm" );
delay(100);
}
การเปลี่ยนค่า time out เพื่อปรับระยะการวัดค่าปกติของไลบรารี่จะกำหนดมาให้วัดได้ประมาณ 50 cm ซึ่งมีค่า Default TimeOut เท่ากับ 3000 µs = 50cm
คำสั่งที่ใช้คือ
Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
ผู้ใช้สามารถเปลี่ยนค่าระยะการวัดได้ โดยการกำหนดค่า TimeOut เข้าในฟังก์ชั่น ตัวอย่างเช่น
Ultrasonic ultrasonic(9,8,3000); // (Trig PIN,Echo PIN, Max.TimeOut in µsec )
วิธีการคำนวณค่า TimeOut เพื่อให้ได้ระยะการวัดที่ต้องการ
-ต้องการระยะการวัดสูงสุดหน่วยเป็นเซนติเมตรใช้สูตร
TimeOut = Max.Distance(cm) * 58
Example: 50 cm * 58 = 2900 µs
-ต้องการระยะการวัดสูงสุดหน่วยเป็นนิ้วใช้สูตร
TimeOut = Max.Distance(inc) * 148
Example: 25 inc * 148 = 3700 µs
« แก้ไขครั้งสุดท้าย: กรกฎาคม 14, 2017, 08:42:50 PM โดย admin »
บันทึกการเข้า