[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




ให้นักเรียนนักศึกษาทำไปทีละข้อย่อยแล้วเรียกตรวจ พร้อมอธิบาย

  • 1. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับเซอเซอร์วัดอุณหภูมิ dht22 (เซนเซอร์) แล้วแสดงผลออกทาง Serial monitor แสดงทั้งค่าอุณหภูมิและความชื่น(แสดงตลอด) (ในขั้นตอนนี้ให้ทำพร้อมครูผู้สอน เรียนรู้การเรียกใช้งาน library)
  • 2. ต่อจากข้อ 1 กำหนดให้เชื่อมต่อ led(แอคชูเอเตอร์) จำนวน 4 ดวงแล้วเขียนโปรแกรมแสดงผลให้ led ทั้ง 4 ดวงกระพริบติดและดับสลับกัน(ไม่กำหนดรอบ) เมื่อเริ่มการทำงาน
  • 3. ต่อจากข้อ 2 กำหนดให้เชื่อมต่อ switch button (เซนเซอร์) จำนวน 1 ปุ่มแล้ว กดแสดงผลคำ "switch active !" ออกทาง Serial monitor (ต่อใช้งานเป็นชนิด Active ใดก็ได้)
  • 4. ต่อจากข้อย่อยที่ 3 กำหนดให้เขียนปรับปรุงโปรแกรมกำหนดให้ค่าที่วัดได้จาก dht22 ไม่แสดงผลอุณหภูมิก่อน จนกระทั่งกดปุ่ม 1 ครั้งแล้วถึงจะแสดงผล(การแสดงผลไม่กำหนดรอบ)
  • 5. ต่อจากข้อย่อยที่ 4 กำหนดให้เขียนปรับปรุงโปรแกรมโดยนำค่าการแสดงผลอุณหภูมิเกจวัดระดับด้วย led หากค่าอุณหภูมิมากขึ้นให้ led 4 แสดงผลไล่ลำดับเพิ่มขึ้น และหากค่าอุณหภูมิลดลงให้ led แสดงผลไล่ลำดับลดลง (กำหนดจุดแต่ละจุดอุณหภูมิด้วยตนเอง)
  • 6. ต่อจากข้อที่ 5 กำหนดให้เขียนโปรแกรมเพิ่มเติมเมื่อมีการกด switch ซ้ำ โปรแกรมจะหยุดแสดงผลค่าอุณหภูมิ และ led จะไม่แสดงผลด้วย.



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

[2/2567] ใบงานรายวิชาการประยุกต์ไมโครคอนโทรลเลอร์ สัปดาห์ที่ 8

[2/2567] ใบงานรายวิชาการประยุกต์ไมโครคอนโทรลเลอร์ สัปดาห์ที่ 5 (ใบงานแรกของเทอม)

[2/2567] ใบงานรายวิชาพื้นฐานการอินเตอร์เฟส สัปดาห์ที่ 7