[1/2568] ใบงานรายวิชา เซ็นเซอร์และแอคทูเอเตอร์ (ต่อ)
ใบงานประจำสัปดาห์ รายวิชาการประยุกต์ไมโครคอนโทรลเลอร์
รายวิชาเซนเซอร์และแอคชูเอเตอร์
จงเขียนไมโครคอนโทรลเลอร์เชื่อมต่อกับเซนเซอร์และแอคูเอเตอร์ โดยกำหนดให้เชื่อมต่อกับ led, switch, dht22 โดยใช้งานคำสั่งที่ส่ง output สัญญาณ digital เพื่อควบคุมให้ได้ตามโจทย์ที่กำหนด. โดยใช้ความรู้ในการเขียนโปรแกรมพื้นฐานที่เรียนในสัปดาห์ที่ผ่านมา นำมาประยุกต์ใช้งานด้วยคำสั่งที่ใช้เขีนยโปรแกรม if , if else ฝึกกระบวนการคิด การลำดับขั้นตอนตามข้อย่อยที่กำหนด
กำหนดให้นักเรียนนักศึกษา ทำการต่อ arduino uno r3 กับ led จำนวน 4 ดวงเซนเซอร์ dht22 และปุ่มกดสองปุ่ม ดังรูป
ตัวอย่างคำสั่ง
รูปแบบการเขียนคำสั่ง if
if(condition){
//statement การทำงานใดๆ
}
รูปแบบการเขียนคำสั่ง if else
if(condition){
//statement การทำงานใดๆ
}else{
//statement การทำงานใดๆ
}
รูปแบบการเขียนคำสั่ง if else..if
if(condition){
//statement การทำงานใดๆ
}else if(condition){
//statement การทำงานใดๆ
}
รูปแบบการเขียนคำสั่ง switch case
switch (variable)
{
case VALUE_1:
//statement การทำงานใดๆ
break;
case VALUE_2:
//statement การทำงานใดๆ
break;
case VALUE_3:
//statement การทำงานใดๆ
break;
default:
//statement การทำงานใดๆ
}
ข้อควรระวังการต่อใช้งานกับโมดูล button นั้น มีทั้งแบบ active HIGH และแบบ active LOW นักศึกษาต้องทำการตรวจสอบว่าโมดูลปุ่มกดที่ได้ไปนั้นเป็นประเภทไหนจะได้ทำการเขียนโปรแกรมควบคุมได้อย่างถูกต้อง
เมื่อนักเรียนนักศึกษาทำการ ต่อไมโครคอนโทรลเลอร์เข้ากับ led และปุ่มกดแล้ว ให้ทำการเช็คโมดูลปุ่มกดนั้นเป็น Active HIGH หรือ Active LOW โดยทดลองเขียน code ดังต่อไปนี้ และการอ้างอิงตำแหน่งค่า input เพื่อรับสัญญาณดิจิตอลจะอยู่ที่ขา 11 หากนักเรียนนักศึกษาต่อขา input ที่รับสัญญาณแตกต่างไปจากนี้ให้ทำการเปลี่ยนขานั้นๆ ให้ตรงกับการต่อใช้งานจริงด้วย มิฉะนั้นการรับค่า digitalRead จะเกิดความผิดพลาด
int button = 11;
void setup(){
Serial.begin(9600);
pinMode(button,INPUT);
}
void loop() {
if(digitalRead(button)==HIGH){
Serial.println("button is Active HIGH");
}
delay(500);
}
เมื่อนักเรียนนักศึกษาใช้งาน code ด้านบนแล้ว Serial monitor ไม่ปรากฏข้อความแต่เมื่อลองกดปุ่ม แล้วปรากฏคำว่า button is Active HIGH ที่หน้า Serial monitor แสดงว่าโมดูลที่นักเรียนต่ออยู่นั้นถูกต้อง และเป็นชนิด Actiove HIGH
int button = 11;
void setup(){
Serial.begin(9600);
pinMode(button,INPUT);
}
void loop() {
if(digitalRead(button)==LOW){
Serial.println("button is Active LOW");
}
delay(500);
}
เมื่อนักเรียนนักศึกษาใช้งาน code ด้านบนแล้ว Serial monitor ไม่ปรากฏข้อความแต่เมื่อลองกดปุ่ม แล้วปรากฏคำว่า button is Active LOW ที่หน้า Serial monitor แสดงว่าโมดูลที่นักเรียนใช้งานนั้นถูกต้อง และเป็นชนิด Actiove LOW
ตัวอย่างการเขียนโปรแกรมเชื่อมต่อกับ dht22 ต่อสายไฟกับตำแหน่งขาให้ถูกต้อง " นักเรียนต้องติดตั้ง library ของตัวอุปกรณ์ dht22 ก่อน เพราะไม่สามารถเขียนสัญญาณดิจิตอลอ่านค่าพื้นฐานได้ " จากนั้นทำการเรียกใช้งาน คำสั่งเพื่ออ่านค่าจากเซ็นเซอร์ด้วยคำสั่ง obj.readTemperature() หากไม่สามารถเขียนเพื่อเรียกใช้งานได้ ให้แจ้งครูผู้สอน
#include "DHT.h" // นำเข้า library
#define DHTPIN 2 // ประกาศขาใช้งาน โดยเลือกตำแหน่งขาที่ 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 กำหนดชนิดเซนเซอร์
DHT dht(DHTPIN, DHTTYPE); // สร้างตัวแปรเชิงวัตถุชื่อ dht
void setup() {
dht.begin(); // เริ่มการทำงานของเซนเซอร์
}
void loop() {
float temperature = dht.readTemperature(); // รับค่าจากเซนเซอร์
}
ให้นักเรียนนักศึกษาทำไปทีละข้อย่อยแล้วเรียกตรวจ พร้อมอธิบาย
- 1. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับเซอเซอร์วัดอุณหภูมิ dht22 (เซนเซอร์) แล้วแสดงผลออกทาง Serial monitor แสดงทั้งค่าอุณหภูมิและความชื่น(แสดงตลอด)
- 2. (ต่อ)จากข้อย่อยที่ 1 กำหนดให้นักเรียนเชื่อมต่อไมโครคอนโทรลเลอร์กับ led จำนวน 4 ดวง แล้วเขียนให้แสดงผลแบบไฟวิ่ง จากด้านหนึ่งไปยังฝั่งตรงข้ามครั้งละ 1 ดวง แล้วไปหยุดค้าง ณ ตำแหน่งท้ายสุดของฝั่งตรงข้าม
- 3. (ต่อ)จากข้อย่อยที่ 2 กำหนดให้เชื่อม switch ปุ่มกดจำนวน 1 ปุ่ม แล้วทำการแก้ไขโปรแกรมจากข้อย่อยที่ 2 โดยกำหนดให้เมื่อมีการกดปุ่มแล้ว led จะแสดงผลตามข้อย่อยที่ 2 แต่เป็นทิศทางตรงกันข้าม และหยุด ณ ตำแหน่งสุดท้ายเหมือนกัน
- 4. (ต่อ)จากข้อย่อยที่ 2,3 สามารถทำซ้ำได้เมื่อกดปุ่มแล้ว led สามารถวิ่งกลับไปกลับมาได้
- 5. กำหนดให้เขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์เชื่อมต่อกับเซนเซอร์ dht22 (เซนเซอร์) และปุ่มกด switch จำนวน 2 ปุ่ม โดยเขียนโปรแกรมกำหนดการทำงานดังนี้ เมื่อโปรแกรมเริ่มทำงานให้อ่านค่าอุณหภูมิจากเซนเซอร์และแสดงผลค้างไว้ 1 ค่า เมื่อผู้ใช้งานกดปุ่ม 1 ค่าอุณหภูมิจะเพิ่มขึ้น 1 องศา และเมื่อกดปุ่มที่ 2 ทำงานเช่นเดียวกันแต่จะเป็นการลดค่าอุณหภูมิ 1 องศา
- 6. ต่อจากข้อที่ 5 กำหนดเชื่อมต่อ led จำนวน 4 ดวง โดย led ทำหน้าที่เป็นเกจวัดอุณหภูมิ เมื่ออุณหมูิถึงจุดที่กำหนดให้ led ติดขึ้น (กำหนด led1=20 องศา, led2=25 องศา, led3=30องศา, led4=35องศา )
ความคิดเห็น
แสดงความคิดเห็น