Skip to main content

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือครู - วัตถุประสงค์ของกิจกรรมนี้

ตอนนี้นักเรียนมีประสบการณ์ในการรักษาหน้าจอของสมองเหมือนปุ่มใหญ่เพียงปุ่มเดียวพวกเขาสามารถเปลี่ยนหน้าจอเป็นสองปุ่ม กิจกรรมนี้จะแนะนำให้นักเรียนรู้จักกับการใช้ ข้อความ if-else ที่ซ้อนกันเพื่อจัดการข้อความที่มีเงื่อนไขและตรรกะพื้นฐานของการทำเช่นนั้นได้ดียิ่งขึ้น นักเรียนจะได้รับคำแนะนำก่อนในการสร้างโครงการสำหรับการกดหน้าจอเพื่อหมุนหุ่นยนต์ไปทางซ้ายหรือขวา แต่จากนั้นพวกเขาจะถูกขอให้สลับปุ่มเพื่อให้สิ่งที่หมุนหุ่นยนต์ไปทางซ้ายตอนนี้หมุนไปทางขวาและในทางกลับกัน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ข้อความ ว่า ถ้าช่วยหรืออื่นๆที่ใช้ในกิจกรรมนี้โปรดไปที่ข้อมูลความช่วยเหลือภายใน VEXcode V5 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องมือช่วยเหลือในตัวนี้โปรด ดูบทความนี้

ต่อไปนี้เป็นโครงร่างของสิ่งที่นักเรียนของท่านจะทำในกิจกรรมนี้:

  • การตรวจ สอบ โครงการ StopOrDrive และรูปแบบของหน้าจอของสมองเป็นพิกเซล
  • การสร้าง โครงการ LeftOrRight ใหม่ในขณะที่ได้รับคำแนะนำผ่านการให้เหตุผลของการเขียนโปรแกรม
  • การแก้ไขโครงการเพื่อให้ปุ่มบนหน้าจอทำงานตรงกันข้าม
  • ขยายการเรียนรู้ของคุณ: การแบ่งหน้าจอออกเป็นสองปุ่มที่เมื่อกดแล้วให้หมุนหุ่นยนต์ไปทางซ้ายหรือขวา
     

ตรวจสอบให้แน่ใจว่าคุณมีฮาร์ดแวร์ที่จำเป็นโน้ตบุ๊ควิศวกรรมและ VEXcode V5 พร้อมใช้งาน

วัสดุที่ต้องใช้:
จำนวน วัสดุที่จำเป็น
1

ชุดเริ่มต้นห้องเรียน VEX V5 (พร้อมเฟิร์มแวร์ล่าสุด)

1

VEXcode V5 (เวอร์ชันล่าสุด, Windows, macOS)

1

สมุดบันทึกวิศวกรรม

1

โครงการ StopOrDrive จากหน้าเล่นก่อนหน้านี้

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือครู

สำหรับข้อเสนอแนะเกี่ยวกับกลยุทธ์การสอนสำหรับส่วนนี้โปรดอ่านคอลัมน์การจัดส่งของคู่มือการ ก้าวเดินที่ควรทำหรือไม่ควรทำ!  (Google Doc /.docx /.pdf)

หน้าจอของสมองสามารถมีได้มากกว่าหนึ่งปุ่มกิจกรรม

นี้จะช่วยให้คุณตั้งโปรแกรมให้หุ่นยนต์ขับไปข้างหน้าและเลี้ยวซ้ายหรือขวาขึ้นอยู่กับว่าหน้าจอของสมองด้านใดถูกกด

คำสั่งเพิ่มเติมสามประเภทที่คุณจะต้องใช้ในระหว่างกิจกรรมนี้มีดังต่อไปนี้:

  • drivetrain.turn (ขวา)
  • หมายเลข < 50
  • brain.screen.x_position ()

คุณสามารถใช้ ข้อมูล ความช่วยเหลือภายใน VEXcode V5 เพื่อเรียนรู้เกี่ยวกับคำแนะนำ

VEXcode V5 ที่มีไดรฟ์สำหรับคำสั่งที่พิมพ์ลงในพื้นที่ทำงานทางด้านซ้ายและข้อมูลความช่วยเหลือจะเปิดขึ้นทางด้านขวา ความช่วยเหลือแสดงคำจำกัดความของคำสั่งและข้อมูลเกี่ยวกับวิธีการใช้งาน

ขั้นตอนที่ 1: เริ่มต้นด้วยการตรวจ สอบ โครงการ StopOrDrive

เรามาเริ่มต้นด้วยการตรวจ สอบ โครงการ StopOrDrive

โป รเจกต์ StopOrDrive มี Clawbot หยุดทำงานหากมีการกดหน้าจอหรือไม่เช่นนั้นก็จะขับเคลื่อนไปข้าง
หน้าหน้าจอทั้งหมดเป็นปุ่มใหญ่ปุ่มเดียวแต่ในโปรเจกต์ถัดไปนี้เราต้องการให้ครึ่งหนึ่งของหน้าจอเป็นปุ่มเดียวและอีกครึ่งหนึ่งเป็นอีกปุ่มหนึ่ง

# Begin project code
	while True:
		if brain.screen.pressing():
			drivetrain.stop()
			while brain.screen.pressing():
				wait(5, MSEC)
		else:
			drivetrain.drive(FORWARD)
		wait(5, MSEC)

ในการแบ่งหน้าจอออกเป็นสองปุ่มเราจำเป็นต้องเข้าใจเพิ่มเติมเกี่ยวกับเค้าโครงของหน้าจอ

ตารางพิกเซลของหน้าจอ V5 Brain แสดงแถวที่มีหมายเลข 12 แถวตามด้านซ้ายโดยแถวบนสุดมีป้ายกำกับแถวที่ 1 และด้านล่างมีป้ายกำกับแถวที่ 12 ด้านบนเป็นคอลัมน์ที่มีหมายเลข 48 คอลัมน์โดยคอลัมน์ 1 มีป้ายกำกับที่ด้านซ้ายสุดและคอลัมน์ 48 มีป้ายกำกับที่ด้านขวาสุด การวัดพิกเซลทั้งหมดมีความกว้าง 480 พิกเซลสูง 240 พิกเซล

  • สังเกตว่าคอลัมน์มีจำนวนเพิ่มขึ้นจากซ้ายไปขวา จำนวนคอลัมน์คือ 48 และหน้าจอกว้าง 480 พิกเซล
  • เขียนลงในสมุดบันทึกวิศวกรรมของคุณว่าค่า x บนหน้าจอเท่ากับจำนวนพิกเซลที่วัดจากซ้ายไปขวา
  • ค่า x ของกึ่งกลางหน้าจอคืออะไร? สำหรับกิจกรรมนี้คุณสามารถมุ่งเน้นไปที่แกน x เพียงอย่างเดียวเพราะคุณต้องการเพียงปุ่มซ้ายและขวาเท่านั้น

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือครู - คำตอบ

ค่า x ที่กึ่งกลางของหน้าจอเท่ากับครึ่งหนึ่งของความกว้างของหน้าจอเป็นพิกเซล ดังนั้นค่า x ของจุดศูนย์กลางคือ 240 นักเรียนจะต้องใช้หมายเลขนี้เพื่อตั้งโปรแกรมตามเงื่อนไขว่าจะกดหน้าจอทางซ้ายหรือขวา ดังนั้นตรวจสอบให้แน่ใจว่าพวกเขาทั้งหมดมีค่าที่ถูกต้อง

เมื่อมองไปข้างหน้าการท้าทายส่วนติดต่อผู้ใช้ในส่วนคิดใหม่จะกำหนดให้นักเรียนนำสิ่งที่ได้เรียนรู้ไปใช้ในการสร้างปุ่มสี่ปุ่มบนหน้าจอ ดังนั้นพวกเขาจะต้องใช้ทั้งค่า x และ y

ไอคอนเคล็ดลับสำหรับครู เคล็ดลับสำหรับครู

สำหรับความช่วยเหลือเพิ่มเติมโปรดดูที่ ไลบรารี vex สำหรับบทความความช่วยเหลือเพิ่มเติม

ขั้นตอนที่ 2: การเขียนโปรแกรมสำหรับสองปุ่ม

  •  บันทึก StopOrDrive เป็น  โครงการ LeftOrRight

กล่องโต้ตอบชื่อโปรเจกต์ในแถบเครื่องมือ VEXcode V5 อ่านซ้ายหรือขวาและแสดงช่อง 2 ที่เลือกไว้

  • สร้างโปรเจกต์ด้านล่าง มันจะให้ Clawbot หมุนไปทางซ้ายหรือขวาเมื่อกดหน้าจอขึ้นอยู่กับด้านที่กด
# Begin project code
	while True:
		if brain.screen.pressing():
			if brain.screen.x_position() < 240:
				drivetrain.turn(LEFT)
				while brain.screen.pressing():
					wait(5, MSEC)
			else:
				drivetrain.turn(RIGHT)
				while brain.screen.pressing():
					wait(5, MSEC)
		else:
			drivetrain.drive(FORWARD)
		wait(5, MSEC)
  • มาดูกันว่าโปรเจกต์นี้ทำอะไรได้บ้าง

    โดยจะคอยตรวจสอบว่ามีการกดหน้าจอหรือไม่ หากหน้าจอไม่ได้ถูกกดมันจะขับไปข้างหน้าแต่ถ้าเป็นเช่นนั้นมันจะตรวจสอบตำแหน่งที่หน้าจอถูกกด

    ถ้าเครื่องรีดอยู่ทางด้านซ้าย (น้อยกว่า 240) มันจะเลี้ยวซ้าย ไม่อย่างนั้นมันจะเลี้ยวขวา เราไม่จำเป็นต้องมีเงื่อนไขอื่นสำหรับเมื่อค่า x มากกว่า 240 เพราะถ้าไม่น้อยกว่า 240 (เลี้ยวซ้าย) จะต้องมากกว่า (เลี้ยวขวา) เรามีแค่สองปุ่มที่ต้องกังวล ในขณะ

    ที่ รอคำสั่ง Control หลังจากแต่ละเทิร์นให้โปรเจกต์รอจนกว่าจะไม่มีการกดหน้าจออีกต่อไปก่อนที่จะดำเนินการต่อ

โปรเจกต์ซ้ายหรือขวาจะแสดงด้วยคำสั่งที่มีป้ายกำกับการทำงาน ในขณะที่ TRUE และ FIRST หากคำสั่งมีป้ายกำกับเป็น Keeps ตรวจสอบว่ามีการกดหน้าจอหรือไม่ คำสั่งซ้อนกันถัดไปหากมีป้ายกำกับเมื่อกดหน้าจอตรวจสอบว่าอยู่ทางซ้ายหรือขวา คำสั่งเลี้ยวถัดไปจะมีป้ายกำกับหากกดอยู่ทางซ้าย (น้อยกว่า 240 เลี้ยวซ้าย) จากนั้นรอจนกว่าคำสั่งจะมีป้ายกำกับรอจนกว่าหน้าจอจะไม่ถูกกดอีกต่อไปก่อนที่จะดำเนินการต่อ คำสั่งเลี้ยวขวาถัดไปในสาขาอื่นจะมีป้ายกำกับหากกดไม่อยู่ทางซ้าย (น้อยกว่า 240) เลี้ยวขวาและรอจนกว่าคำสั่งจะมีป้ายกำกับรอจนกว่าหน้าจอจะไม่ถูกกดอีกต่อไปก่อนที่จะดำเนินการต่อ สาขาอื่นๆด้านนอกมีป้ายกำกับว่าไม่มีการกดหน้าจอให้ขับไปข้างหน้า

  • ตอนนี้โปรเจกต์เสร็จแล้วให้ดาวน์โหลดและเรียกใช้เพื่อทดสอบวิธีการทำงานแถบเครื่องมือ VEXcode V5 พร้อมกล่องสีแดงรอบๆไอคอนดาวน์โหลด ไอคอนที่แสดงอ่านจากซ้ายไปขวาตัวควบคุมสมองดาวน์โหลดเรียกใช้หยุดและแชร์
  • จดบันทึกในสมุดบันทึกวิศวกรรมของคุณเกี่ยวกับวิธีที่ปุ่มควบคุมการเคลื่อนไหวของ Clawbot

ไอคอนเคล็ดลับสำหรับครู เคล็ดลับสำหรับครู

เมื่อทำการทดสอบนักเรียนควรรับรู้ว่าส่วนต่อประสานผู้ใช้เมื่อใช้จากด้านหลัง Clawbot ดูเหมือนจะทำงานในทางกลับกัน จากมุมมองของผู้ใช้ Clawbot จะหันออกจากด้านที่ผู้ใช้กด นั่นไม่ใช่ประสบการณ์การใช้งานที่ดีที่สุด

ขั้นตอนที่ 3: ปรับโครงการเพื่อประสบการณ์การใช้งานที่ดีขึ้น

เมื่อกดปุ่มของหน้าจอจากด้านหลัง Clawbot ในขณะที่มันขับไปข้างหน้าคุณกดที่ด้านขวาของหน้าจอเพื่อเลี้ยวซ้ายและด้านซ้ายของหน้าจอเพื่อเลี้ยวขวา นั่นไม่ใช่ประสบการณ์ของผู้ใช้ที่ดี ประสบการณ์ของผู้ใช้คือความสามารถของผู้ใช้ในการโต้ตอบกับส่วนติดต่อผู้ใช้เพื่อควบคุมระบบคอมพิวเตอร์ มีข้อมูลเพิ่มเติมเกี่ยวกับอินเทอร์เฟซผู้ใช้ในส่วนใช้งานของห้องปฏิบัติการนี้

ในกรณีนี้เราจำเป็นต้องปรับปรุงส่วนติดต่อผู้ใช้เพื่อปรับปรุงประสบการณ์ผู้ใช้

  • ตรวจสอบ โครงการ LeftOrRight และแก้ไขเพื่อให้เมื่อผู้ใช้กดปุ่มจากด้านหลัง Clawbot หุ่นยนต์จะหันไปทางขวาเมื่อผู้ใช้กดด้านซ้ายของหน้าจอ ไม่เช่นนั้นคลอว์บอตจะเลี้ยวซ้าย
# Begin project code
	while True:
		if brain.screen.pressing():
			if brain.screen.x_position() < 240:
				drivetrain.turn(LEFT)
				while brain.screen.pressing():
					wait(5, MSEC)
			else:
				drivetrain.turn(RIGHT)
				while brain.screen.pressing():
					wait(5, MSEC)
		else:
			drivetrain.drive(FORWARD)
		wait(5, MSEC)
  • วางแผนทดสอบและทำซ้ำในโครงการนี้และเอกสารในสมุดบันทึกวิศวกรรมของคุณเพื่อให้โครงการทำให้ Clawbot หันไปทางด้านข้างของหน้าจอที่ผู้ใช้กดจากด้านหลัง Clawbot

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือครู

นักเรียนควรวางแผนทดสอบและปรับแต่งการเปลี่ยนแปลงเหล่านี้ในโครงการขณะที่บันทึกไว้ในสมุดบันทึกทางวิศวกรรม สำหรับโน้ตบุ๊กวิศวกรรมแต่ละตัวให้ คลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้ ( Google Doc /.docx /.pdf) หรือคลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้สำหรับโน้ตบุ๊กทีม ( Google Doc /.docx /.pdf) อย่าลืมอธิบายการให้คะแนนแก่นักเรียนก่อนเริ่มทำงาน

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือครู - โซลูชัน

มีสองวิธีที่เป็นไปได้ในการแก้ปัญหาที่เกิดขึ้นข้างต้น วิธีแรกคือวิธีที่เขียนลงในคำสั่ง: ตรวจสอบ โครงการ LeftOrRight และแก้ไขเพื่อให้เมื่อผู้ใช้กดปุ่มจากด้านหลัง Clawbot หุ่นยนต์จะหันไปทางขวาเมื่อผู้ใช้กดด้านซ้ายของหน้าจอ ไม่เช่นนั้นคลอว์บอตจะเลี้ยวซ้าย

# Begin project code
	while True:
		if brain.screen.pressing():
			if brain.screen.x_position() < 240:
				drivetrain.turn(RIGHT)
				while brain.screen.pressing():
					wait(5, MSEC)
			else:
				drivetrain.turn(LEFT)
				while brain.screen.pressing():
					wait(5, MSEC)
		else:
			drivetrain.drive(FORWARD)
		wait(5, MSEC)

โซลูชันอื่นๆคือการสลับคำแนะนำของผู้ปฏิบัติงานเพื่อให้เมื่อค่า x มากกว่า 240 Clawbot จะเลี้ยวซ้าย 

# Begin project code
	while True:
		if brain.screen.pressing():
			if brain.screen.x_position() < 240:
				drivetrain.turn(LEFT)
				while brain.screen.pressing():
					wait(5, MSEC)
			else:
				drivetrain.turn(RIGHT)
				while brain.screen.pressing():
					wait(5, MSEC)
		else:
			drivetrain.drive(FORWARD)
		wait(5, MSEC)

ไอคอนสร้างแรงจูงใจในการอภิปราย สร้างแรงจูงใจในการอภิปราย

คุณจำเป็นต้องใช้พิกัดจากระนาบพิกัดเมื่อคุณตั้งโปรแกรมคำสั่งตามเงื่อนไขเมื่อค่า x น้อยกว่า 240 (ด้านซ้ายของหน้าจอ) หากต้องการให้หน้าจอของ Brain วาดปุ่มภาพคุณจะต้องใช้พิกัดด้วย
กลับไปที่ขั้นตอนที่ 2 ซึ่งแสดงพิกัดสำหรับหน้าจอ V5 Robot Brain

ตารางพิกเซลของหน้าจอ V5 Brain แสดงแถวที่มีหมายเลข 12 แถวตามด้านซ้ายโดยแถวบนสุดมีป้ายกำกับแถวที่ 1 และด้านล่างมีป้ายกำกับแถวที่ 12 ด้านบนเป็นคอลัมน์ที่มีหมายเลข 48 คอลัมน์โดยคอลัมน์ 1 มีป้ายกำกับที่ด้านซ้ายสุดและคอลัมน์ 48 มีป้ายกำกับที่ด้านขวาสุด การวัดพิกเซลทั้งหมดมีความกว้าง 480 พิกเซลสูง 240 พิกเซล

ถาม: ค่า x ที่ขอบด้านขวาของหน้าจอคืออะไร
ตอบ: ค่า x เพิ่มขึ้นจาก 0 ที่ขอบซ้ายเป็น 480 ที่ขอบขวา

ถาม: ดังนั้นช่วงของค่า x คือ 480 (0 ถึง 480) ช่วงของค่า y คืออะไร?
ตอบ: ช่วงของค่า y คือ 240 (0 ถึง 240)

ถาม: จุดกำเนิด (0, 0) ของระนาบพิกัดนี้อยู่ที่ไหน
 ตอบ: ต้นทางอยู่ที่ด้านซ้ายบน

ถาม: คุณอยู่ที่ด้านบนของหน้าจอเมื่อค่า y เท่ากับ 0 ทำไมสิ่งนี้ถึงผิดปกติ?
ตอบ: โดยปกติค่า y จะเพิ่มขึ้นเมื่อคุณเลื่อนขึ้นแต่บนหน้าจอ V5 ค่า y จะเพิ่มขึ้นเมื่อคุณเลื่อนลง แต่คุณสามารถคิดว่าค่า y เพิ่มขึ้นเมื่อคุณย้ายออกจากจุดเริ่มต้น (0, 0) ที่ด้านบนซ้ายของหน้าจอ

ไอคอนขยายการเรียนรู้ของคุณ ขยายการเรียนรู้ของท่าน

ในส่วนการท้าทายส่วนติดต่อผู้ใช้ของ Rethink นักเรียนจะถูกขอให้พัฒนาโครงการที่สร้างปุ่มสี่ปุ่มบนหน้าจอเพื่อควบคุมกรงเล็บและแขนของ Clawbot สำหรับความท้าทายนั้นพวกเขายังถูกขอให้แสดงปุ่มทั้งสี่นั้นบนหน้าจอ สิ่งนี้ขยายการเรียนรู้ของคุณเช่นเดียวกับหน้าก่อนหน้านี้จะช่วยเตรียมความพร้อมสำหรับความท้าทายนั้นเนื่องจากความท้าทายมีสี่ปุ่มให้ตั้งโปรแกรมและมีเพียงสองปุ่มเท่านั้น

ให้นักเรียนเพิ่มกิจกรรมลงในโปรแกรมเพื่อให้หน้าจอวาดปุ่มที่มองเห็นได้สองปุ่มเมื่อโครงการดำเนินการ แนะนำให้นักเรียนใช้คุณลักษณะความช่วยเหลือใน VEXcode V5 สำหรับข้อมูลเกี่ยวกับเหตุการณ์โดยเฉพาะอย่างยิ่งข้อมูลของ คำสั่ง วาดรูปสี่เหลี่ยมผืนผ้า แนะนำให้นักเรียนทบทวนวิธีการจัดหน้าจอของ Brain ให้เป็นระบบพิกัดตามจำนวนพิกเซลเมื่อใช้ใน คำสั่ง วาดสี่เหลี่ยมผืนผ้า พวกเขาจะต้องเข้าใจว่าเพื่อที่จะตั้งค่าพารามิเตอร์ภายในคำสั่งนั้น นอกจากนี้พวกเขาจะต้องเข้าใจวิธีการออกอากาศกิจกรรม ในกรณีนี้กิจกรรมคือการวาดปุ่ม

นักเรียนควรวางแผนทดสอบและปรับแต่งการเปลี่ยนแปลงเหล่านี้ในโครงการขณะที่บันทึกไว้ในสมุดบันทึกทางวิศวกรรม สำหรับโน้ตบุ๊กวิศวกรรมแต่ละตัวให้ คลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้ ( Google Doc /.docx /.pdf) หรือคลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้สำหรับโน้ตบุ๊กทีม ( Google Doc /.docx /.pdf)

นี่คือตัวอย่างวิธีแก้ปัญหา:

# Begin project code
	screen_buttons = Event()
	
	def has_screen_buttons():
		brain.screen.set_fill_color(Color.GREEN)
		brain.screen.draw_rectangle(0, 0, 240, 120)
		brain.screen.set_fill_color(Color.PURPLE)
		brain.screen.draw_rectangle(240, 0, 480, 120)
		brain.screen.set_fill_color(Color.ORANGE)
		brain.screen.draw_rectangle(0, 120, 240, 240)
		brain.screen.set_fill_color(Color.CYAN)
		brain.screen.draw_rectangle(240, 120, 480, 240)
		wait(1, SECONDS)
	
	screen_buttons(has_screen_buttons)
	
	while True:
		screen_buttons.broadcast()
	
		if brain.screen.pressing():
	
			if brain.screen.x_position() < 240:
	
				if brain.screen.y_position() < 120:
					claw_motor.spin(FORWARD)
					while brain.screen.pressing():
						wait(5, MSEC)
	
				else:
					claw_motor.spin(REVERSE)
					while brain.screen.pressing():
						wait(5, MSEC)
	
			else:
				if brain.screen.y_position() < 120:
					arm_motor.spin(FORWARD)
					while brain.screen.pressing():
						wait(5, MSEC) 
				
				else:
					arm_motor.spin(REVERSE)
					while brain.screen.pressing():
						wait(5, MSEC) 
	
		   claw_motor.stop()
		   arm_motor.stop()
		   
		wait(5, MSEC)

เพื่อประสบการณ์ที่สมจริงอย่างมืออาชีพเพิ่มเติมให้นักเรียนขอข้อเสนอแนะจากเพื่อนร่วมชั้นเกี่ยวกับตัวเลือกสองสีของพวกเขา

สีที่เลือกทำให้คุณต้องการใช้อินเทอร์เฟซหรือสีใดที่พวกเขาต้องการในฐานะผู้ใช้?

ส่วนหนึ่งของการพัฒนาส่วนติดต่อผู้ใช้ที่ยอดเยี่ยมคือการรวบรวมข้อมูลเกี่ยวกับประสบการณ์ของผู้ใช้แม้แต่ความชอบด้านสุนทรียศาสตร์