[1/2568] ใบงานรายวิชา เซนเซอร์และแอคทูเอเตอร์ [สัปดาห์ที่ 15]

ใบงานประจำสัปดาห์ รายวิชาเซนเซอร์และแอคทูเอเตอร์


รายวิชาเซนเซอร์และแอคชูเอเตอร์

จงเขียนไมโครคอนโทรลเลอร์เชื่อมต่อกับเซนเซอร์และแอคูเอเตอร์ โดยกำหนดให้เชื่อมต่อกับ led, switch, dht22 โดยใช้งานคำสั่งที่ส่ง output สัญญาณ digital เพื่อควบคุมให้ได้ตามโจทย์ที่กำหนด. โดยใช้ความรู้ในการเขียนโปรแกรมพื้นฐานที่เรียนในสัปดาห์ที่ผ่านมา นำมาประยุกต์ใช้งานด้วยคำสั่งที่ใช้เขีนยโปรแกรม if , if else ฝึกกระบวนการคิด การลำดับขั้นตอนตามข้อย่อยที่กำหนด

กำหนดให้นักเรียนนักศึกษา ทำการต่อ arduino uno r3 กับ LCD1602 ,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



การใช้งานจอ lcd16x2 แบบต่อตรง


การใช้งานจอ lcd16x2 แบบโมดูลไดร์ I2C

ในการต่อใช้งานจอแสดงผล lcd16x2 เข้ากับไมโครคอนโทรลเลอร์ด้วยโมดูลไดร์ I2C มีการเชื่อมต่อดังต่อไปนี้
  • Vcc -- > Vcc (5v)
  • Gnd --> Gnd
  • SCL --> A5
  • SDA -- >A4
เมื่อนักเรียนทำการเชื่อมต่อโมดูลไดร์ I2Cเข้ากับ ไมโครคอนโทรลเลอร์แล้ว การเขียนคำสั่งเพื่อใช้งานจอ lcd นั้นต้องพึ่งพาชุดคำสั่งที่ซับซ้อน เราสามารถเขียนเพื่อเรียกใช้งานคำสั่งเหล่านั้นได้ เพราผู้พัฒนาได้ทำการเตรียมชุดคำสั่งเหล่านั้นไว้แล้ว เราต้องทำคือการเรียกใช้งานไลบรารี่ การที่เราจะเรียกใช้งานไลบรารี่ได้นั้นก็ต้องทำการติดตั้งไลบรารี่ก่อน การติดตั้งไลบรารี่ให้ทำตามขั้นตอนไปพร้อมๆกัน (ทำพร้อมครูผู้สอน)



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


  • 1. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับจอ lcd1602 แล้วเขียนโปรแกรมแสดงผลชื่อนักเรียน ณ ตำแหน่งบรรทัดที่ 2 ชิดขอบขวาค้างไว้ 1 วินาทีแล้วหายไป *ข้อย่อยที่ 1 ต้องทำงานก่อนเสมอ(ชื่อจริง ทบทวนวิธีการชี้ตำแหน่งและแสดงผล)
  • 2. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับปุ่มกด button 1 ปุ่มแล้ว เมื่อมีการกดปุ่มให้แสดงจำนวนครั้งที่กดผ่าน lcd1602 ลดลงครั้งละ 1 จำนวน (โดยจุดเริ่มต้นให้เริ่มที่จำนวน 15 เสมอ สามารถกดได้ต่ำสุดไม่เกิน 0)
  • 3. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับ dht22 แล้วเขียนโปรแกรมให้แสดงผลค่า temp ที่ lcd1602 แบบ realtime (ทดสอบโดยการเป่าลมร้อนเบาๆ ให้อุณหภูมิเปลี่ยนอย่างน้อย 2 องศา) * ศึกษาทบทวนวิธีการติดตั้ง library dht11
  • 4. (ต่อ)จากข้อย่อยที่ 3 เขียนโปรแกรมปรับปรุงโดยกำหนดให้อ่านค่าจาก dht22 เมื่อเริ่มต้นการทำงานเท่านั้น และสามารถใช้งานปุ่มกด 1 ปุ่ม เมื่อกดแล้วสามารถเพิ่มค่า 1 องศาของ temp ณ ปัจจุบันได้( temp จะเพิ่มขึ้นทุกครั้งที่กดเท่านั้น )
  • 5. (ต่อ) จากข้อย้อยที่ 4 เขียนปรับปรุงโปรแกรมให้เพิ่มปุ่มกดที่ 2 ใช้ในการลดค่า temp และมีขอบเขตของอุณหภูมิในช่วง 0 ถึง 30 เท่านั้นหากไม่อยู่ในช่วงนี้ให้แสดงผลคำว่า "Error" ณ lcd1602 บรรทัดที่ 2 (ยังสามารถกดปุ่ม เพิ่ม,ลด ค่า tempได้ กำหนดการหน่วงเวลา 0.3 วินาที)



ความคิดเห็น

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

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

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

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