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

ใบงานประจำสัปดาห์ที่ 11 พื้นฐานการอิเตอร์เฟส


จงเขียนไมโครคอนโทรลเลอร์โดยกำหนดให้เชื่อมต่อกับ led โดยใช้งานรับคำสั่งสัญญาณ digital จากปุ่มกด button เพื่อควบคุม led ให้ได้ตามโจทย์ที่กำหนด. โดยใช้ความรู้ในการเขียนโปรแกรมพื้นฐานที่เรียนในสัปดาห์ที่ผ่านมา นำมาประยุกต์ใช้งาน if , if else , while ,for , switch case ให้นักเรียนนักศึกษาทำไปทีละข้อย่อย จนครบโจทย์ที่สมบูรณ์(ฟังคำอธิบายจากครูผู้สอนเพิ่มเติม)

1. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อไมโครคอนโทรลเลอร์กับ led จำนวนทั้งหมด 4 ดวงและมีการเชื่อมต่อกับปุ่มกด button จำนวน 2 ปุ่ม ข้อควรระวังการต่อใช้งานกับโมดูล 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


Interface ที่เกี่ยวข้อง :

คำสั่งสำหรับการรับค่าที่สื่อสารกันผ่าน Serial monitor (ซึ่งเป็น Interface ระหว่างไมโครคอนโทรลเลอร์และคอมพิวเตอร์)


 if (Serial.available() > 0) {
    String incomingtext = Serial.readString();
    incomingtext.trim();
    Serial.print("test String text :");
    Serial.println(incomingtext);
 } 


อ่านบทความเพิ่มเติมเกี่ยวกับ uart



ให้นักเรียนนักศึกษาทำไปทีละข้อย่อย จนครบโจทย์ที่สมบูรณ์

  • 1 กำหนดให้นักเรียนนักศึกษาเชื่อมต่อปุ่มกด button จำนวน 2 ปุ่มกับไมโครคอนโทรลเลอร์แล้ว จงเขียนโปรแกรมกำหนดให้กดปุ่ม 1 แสดง " pressed 1 " กดปุ่ม 2 แสดง " pressed 2 " และใช้การหน่วงเวลา 200 ms (ทบทวนพื้นฐานการต่อใช้งานปุ่มกด)
  • 2. (ต่อ) เมื่อมีข้อความขึ้น pressed 1 แล้วกำหนดให้ led ติดครั้งละ 1 ดวง(ติดค้าง) ทิศทางใดๆไปยังฝั่งตรงข้าม เมื่อกดครบ 4 ครั้ง led ต้องติดครบ 4 ดวง
  • 3 กำหนดให้เชื่อมต่อกับ led จำนวน 4 ดวงแล้วเขียนโปรแกรมให้สัมพันธ์กับการกดปุ่ม โดยมีเงื่อนไขให้ผู้ใช้งานจะต้องพิมพ์คำใน Serial monitor คำว่า "start" ก่อนจึงเริ่มการทำงานของการกดปุ่มได้โดยกดปุ่ม 1 เปลี่ยนตำแหน่ง led และกดปุ่ม 2 กลับตำแหน่งเดิม การแสดงผลต้องให้ led ตำแหน่งปัจจุบันติดค้างไว้ (ปุ่ม 1 กดไปทางซ้าย ปุ่ม 2 กดไปทางขวา (การแสดงผล led แบบดาวตก))โดยค่าเริ่มต้นคือให้ led ฝั่งใดฝั่งหนึ่งติดค้างไว้ก่อนเสมอ
  • 4 (ต่อ) หากถูกขัดจังหวะ ณ ดวงใดๆด้วยการพิมพ์คำว่า "end" กำหนดให้ led ดับทั้งหมด และเมื่อถึงตำแหน่งสิ้นสุดฝั่งใดฝั่งหนึ่งแล้ว led จะค้างอยู่ 1 ดวง ณ ตำแหน่งสุดท้าย
  • 5 (ต่อ) หากผู้ใช้งานพิมพ์ข้อความ "start" อีกครั้ง led จะต้องปรากฏ ณ ตำแหน่งเดิมใน(ข้อย่อยที่4) และสามารถเลื่อนตำแหน่งในข้อย่อยที่ 2 ได้

ความคิดเห็น

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

[16/07/67] ใบงานรายวิชาไมโครโปรเซสเซอร์และ ไมโครคอนโทรลเลอร์ สัปดาห์ที่ 9

[11/08/2567] ใบงานรายวิชาไมโครคอนโทรลเลอร์และโปรเซส สัปดาห์ที่ 13

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