กล่องเครื่องมือสำหรับครู
-
วัตถุประสงค์ของกิจกรรมนี้
กิจกรรมนี้จะแนะนำให้นักเรียนรู้จักการใช้คำสั่ง while and if then เพื่อให้หุ่นยนต์ขับไปข้างหน้า เว้นแต่จะกดหน้าจอ
-
กิจกรรมนี้จะแนะนำให้นักเรียนรู้จักเงื่อนไขและคำสั่งที่ทำให้หุ่นยนต์ขับเคลื่อนไปข้างหน้า เว้นแต่จะกดหน้าจอ
-
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง ถ้าแล้ว และ ถ้าแล้ว มิฉะนั้น หรือคำสั่งอื่นๆ ที่ใช้ในกิจกรรมนี้ โปรดไปที่ข้อมูลวิธีใช้ใน VEXcode V5 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องมือช่วยเหลือในตัวนี้ โปรดดูบทความเกี่ยวกับความช่วยเหลือใน C++ เหล่านี้
กล่องเครื่องมือสำหรับครู
หากต้องการคำแนะนำเกี่ยวกับกลยุทธ์การสอนในส่วนนี้ โปรดอ่านคอลัมน์ "การจัดส่ง" ของ "คู่มือการกำหนดจังหวะ สิ่งที่ต้องทำหรือไม่ต้องทำ" (Google Doc / .docx / .pdf)
Clawbot พร้อมที่จะตัดสินใจแล้ว!
การสำรวจนี้จะให้เครื่องมือแก่คุณเพื่อสามารถเริ่มต้นสร้างโปรเจ็กต์เจ๋งๆ ที่ใช้คำสั่ง if then else
- คำสั่ง VEXcode V5 C++ ที่จะใช้ในการสำรวจนี้:
- ระบบส่งกำลังขับเคลื่อน(เดินหน้า);
- การกดหน้าจอสมอง()
- ระบบส่งกำลัง.หยุด();
- ถ้า (เงื่อนไข){}
- รอจนกว่า();
- ขณะที่ (เงื่อนไข){}
- รอ (1, วินาที);
คุณสามารถใช้ข้อมูลวิธีใช้ ใน VEXcode V5 เพื่อเรียนรู้เกี่ยวกับคำสั่ง C++
ตรวจสอบให้แน่ใจว่าคุณมีฮาร์ดแวร์ที่จำเป็น สมุดบันทึกวิศวกรรม และ VEXcode V5 พร้อมแล้ว
| ปริมาณ | วัสดุที่ต้องใช้ |
|---|---|
| 1 |
VEX V5 Classroom Starter Kit (พร้อมเฟิร์มแวร์ล่าสุด) |
| 1 |
VEXcode V5 (เวอร์ชันล่าสุด, Windows, macOS) |
| 1 |
สมุดบันทึกวิศวกรรม |
| 1 |
เทมเพลต Clawbot (ระบบส่งกำลัง 2 มอเตอร์ ไม่มีไจโร) |
เคล็ดลับสำหรับครู
หากนี่เป็นครั้งแรกที่นักเรียนใช้ VEXcode V5 พวกเขาสามารถอ้างอิงบทช่วยสอนได้ตลอดเวลาในระหว่างการสำรวจครั้งนี้ บทช่วยสอนจะอยู่ในแถบเครื่องมือ

ขั้นตอนที่ 1: เริ่มต้นด้วยการทำความเข้าใจเกี่ยวกับคำสั่งเงื่อนไข
ก่อนคุณจะเริ่มเขียนโปรแกรมด้วยเงื่อนไข โปรดอ่านบทความในไลบรารี VEX ที่อธิบายคำสั่ง If Then Else สามารถอ่านบทความ ที่นี่
หากต้องการดูรายการตัวดำเนินการที่จะใช้ในคำสั่ง If Then Else โปรดอ่านบทความในไลบรารี VEX ที่อธิบายเกี่ยวกับค่าบูลีน บทความนี้สามารถพบได้ ที่นี่
ขั้นตอนที่ 2: มาเริ่มการเขียนโปรแกรมด้วยคำสั่งเงื่อนไขกัน
-
เปิดโครงการตัวอย่างเทมเพลต Clawbot (Drivetrain 2 มอเตอร์, ไม่มีไจโร)

- สร้างโครงการด้านล่างนี้
// เริ่มรหัสโครงการ
int main() {
// การเริ่มต้นการกำหนดค่าหุ่นยนต์ ห้ามถอดออก!
vexcodeInit();
ขณะ (เป็นจริง) {
Drivetrain.drive(ไปข้างหน้า);
ถ้า (Brain.Screen.pressing()) {
Drivetrain.stop();
waitUntil(!Brain.Screen.pressing());
}
}
} ดำเนินการดังต่อไปนี้ในสมุดบันทึกวิศวกรรมของคุณ:
- อธิบายว่าโครงการให้ Clawbot ทำสิ่งใด คุณจะต้องอธิบายมากกว่าข้อเท็จจริงที่ว่ามันสร้างปุ่มหยุด อธิบายว่าคำสั่งไหนที่ทำให้ Clawbot ทำอะไร
- เขียนสรุปเป็นประโยคเดียวเพื่ออธิบายสิ่งที่โครงการทำ
- ทดสอบเพื่อดูว่าการทำนายของคุณเกี่ยวกับสิ่งที่โครงการให้ Clawbot ทำนั้นถูกต้องหรือไม่
- บันทึกและดาวน์โหลดโครงการเป็น CreatingAStopButton ไปที่สล็อต 1 บน Clawbot จากนั้นจึงเรียกใช้
- หาก ความช่วยเหลือในการดาวน์โหลดโครงการ โปรดดูบทช่วยสอนใน VEXcode V5 ที่อธิบายวิธีการดาวน์โหลดและเรียกใช้โครงการ (C++)
- ตรวจสอบคำอธิบายของโครงการของคุณและเพิ่มหมายเหตุเพื่อแก้ไขตามความจำเป็น
กล่องเครื่องมือสำหรับครู
-
คำตอบ
โครงการนี้ให้หุ่นยนต์ขับไปข้างหน้าอย่างต่อเนื่องแต่จะหยุดหากกดหน้าจอ วิธีการนี้ทำได้โดยใช้คำสั่ง ตลอดไป เพื่อขับเคลื่อนและตรวจสอบอย่างต่อเนื่อง หากกดหน้าจอ (TRUE) Clawbot จะหยุดขับเคลื่อน
นักเรียนไม่คาดว่าจะเข้าใจว่าทำไมจึงใช้คำสั่ง waitUntil () อธิบายว่าคำสั่ง waitUntil () จำเป็นเนื่องจากความเร็วของการไหลของโปรแกรมของหุ่นยนต์ หากไม่มีสิ่งนั้น มอเตอร์ของ Clawbot จะทำงานเหมือนกับว่าผู้ใช้กำลังกดหน้าจอซ้ำแล้วซ้ำเล่าในขณะที่หน้าจอเคลื่อนที่ผ่านโปรเจ็กต์ แทนที่จะเป็นเช่นนั้น คำสั่ง waitUntil() จะหยุดการทำงานของโปรแกรม และไม่ให้โครงการเริ่มวนซ้ำ forever อีกครั้ง จนกระทั่งผู้ใช้หยุดกดหน้าจอ
บรรทัดของ pseudocode อาจจะเรียบง่ายเหมือนกับ: ขับไปข้างหน้าจนกว่าจะกดหน้าจอ
สามารถเก็บรักษาสมุดบันทึกวิศวกรรมของนักศึกษาได้และให้คะแนน เป็นรายบุคคล (Google Doc / .docx / .pdf) หรือเป็นทีม (Google Doc / .docx / .pdf) ลิงก์ก่อนหน้านี้มีหัวข้อที่แตกต่างกันสำหรับแต่ละแนวทาง เมื่อใดก็ตามที่มีการรวมเกณฑ์ในการวางแผนการศึกษา ถือเป็นแนวทางปฏิบัติที่ดีที่จะอธิบายเกณฑ์ หรืออย่างน้อยที่สุดแจกสำเนาให้กับนักเรียนก่อนที่กิจกรรมจะเริ่มต้น
ขั้นตอนที่ 3: ทำความเข้าใจคำสั่ง wait until()
สังเกตว่าถ้ากดหน้าจอ Brain การไหลของโครงการจะดำเนินไปอย่างรวดเร็ว และโครงการจะดำเนินไปที่คำสั่งถัดไป ซึ่งก็คือคำสั่ง Drivetrain.stop()
ดังนั้น โปรเจ็กต์นี้จึงต้องใช้คำสั่ง waitUntil() ที่บอกให้หุ่นยนต์หยุดนิ่งจนกว่าจะปล่อยหน้าจอ Brain มิฉะนั้น คำสั่ง ตลอดไป จะทำให้โครงการต้องเริ่มต้นใหม่อีกครั้ง
รอจนกระทั่ง(!Brain.Screen.pressing())คำสั่ง waitUntil() จำเป็นเนื่องจากความเร็วของการไหลของโปรเจ็กต์ หากไม่มีอยู่ โปรเจ็กต์จะย้ายไปยังคำสั่งถัดไปก่อนที่หุ่นยนต์จะมีเวลาตอบสนอง
ขั้นตอนที่ 4: เปลี่ยนแปลงโครงการ
ขั้นตอนต่อไปของเราคือการเปลี่ยนคำสั่ง if then เป็นคำสั่ง if then else
- เริ่มต้นโดยการบันทึก CreatingAStopButton เป็นโครงการใหม่ StopOrDrive
- หากคุณต้องการความช่วยเหลือในการบันทึกโครงการ คลิก ที่นี่สำหรับ C++
- จากนั้นสร้างโครงการ StopOrDrive ดังแสดงด้านล่างนี้
// เริ่มรหัสโครงการ
int main() {
// การเริ่มต้นการกำหนดค่าหุ่นยนต์ ห้ามถอดออก!
vexcodeInit();
ขณะ (เป็นจริง) {
Drivetrain.drive(ไปข้างหน้า);
ถ้า (Brain.Screen.pressing()) {
Drivetrain.stop();
waitUntil(!Brain.Screen.pressing());
}
อื่น ๆ {
Drivetrain.drive(ไปข้างหน้า);
}
}
} - ดาวน์โหลด StopOrDrive ไปยัง Slot 2 บน Clawbot ของคุณ
- หาก ความช่วยเหลือในการดาวน์โหลดโครงการ โปรดดูบทช่วยสอนใน VEXcode V5 ที่อธิบายวิธีการดาวน์โหลดและเรียกใช้โครงการ (C++)
- ทดสอบ สร้างปุ่ม StopOrDrive (ช่อง 1) จากนั้นทดสอบ StopOrDrive (ช่อง 2) และเปรียบเทียบเพื่อดูว่ามีข้อแตกต่างใด ๆ ในพฤติกรรมของหุ่นยนต์หรือไม่ จดบันทึกความแตกต่างในสมุดบันทึกวิศวกรรมของคุณ
กล่องเครื่องมือสำหรับครู
-
คำตอบ
ในส่วนของพฤติกรรมของหุ่นยนต์ ไม่ ควรมีความแตกต่างระหว่าง โครงการ CreatingAStopButton และ StopOrDrive
หากนักเรียนต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับการทำความเข้าใจคำสั่ง If-Else โปรดคลิก ที่นี่
ทั้งสองโครงการนี้มีการทำงานของ Clawbot ในลักษณะเดียวกัน ความแตกต่างเพียงอย่างเดียวคือการใช้คำสั่ง if then else ในโครงการ StopOrDrive
การใช้คำสั่ง if then else จะทำให้คุณสามารถเพิ่มปุ่มเพิ่มเติมลงในหน้าจอในกิจกรรมที่จะเกิดขึ้นได้
ขยายการเรียนรู้ของคุณ
ในขณะที่ห้องปฏิบัติการ STEM ดำเนินไป นักเรียนจะพัฒนาโครงการต่างๆ ที่ให้หน้าจอของ Clawbot ทำหน้าที่เป็นอินเทอร์เฟซผู้ใช้ได้ ในการเตรียมความพร้อมนั้น ท้าทายให้นักเรียนคิดหาวิธีวาดสี่เหลี่ยมผืนผ้าสีบนหน้าจอที่ทำงานเหมือนปุ่ม เนื่องจากการกดจุดไหนบนหน้าจอในขณะนั้นถือเป็นเงื่อนไข ปุ่มดังกล่าวจึงควรครอบคลุมพื้นที่หน้าจอทั้งหมด นักเรียนควรให้โครงการออกอากาศเหตุการณ์เพื่อวาดปุ่มเมื่อเริ่มต้น
แนะนำให้นักเรียนเรียนรู้ก่อนว่าหน้าจอของสมองมีการจัดระเบียบเป็นระบบพิกัดอย่างไร พวกเขาจะต้องเข้าใจสิ่งนี้เพื่อที่จะตั้งค่าพารามิเตอร์ภายในคำแนะนำที่พวกเขาจะใช้ พิกัดที่ใช้จะสอดคล้องกับจำนวนพิกเซล ไม่ใช่จำนวนคอลัมน์หรือแถว นี่คือเค้าโครงของหน้าจอ:

นักเรียนควรวางแผน ทดสอบ และปรับปรุงการเปลี่ยนแปลงเหล่านี้ให้กับโครงการในขณะที่บันทึกไว้ในสมุดบันทึกวิศวกรรมของตน สำหรับโน้ตบุ๊กวิศวกรรมแต่ละตัวให้ คลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้ ( Google Doc /.docx /.pdf) หรือคลิกลิงก์ใดลิงก์หนึ่งต่อไปนี้สำหรับโน้ตบุ๊กทีม ( Google Doc /.docx /.pdf)
นี่คือตัวอย่างวิธีแก้ปัญหา:
// เริ่มรหัสโครงการ
event draw = event();
void drawButton() {
Brain.Screen.setFillColor(red);
Brain.Screen.drawRectangle(0, 0, 480, 240);
wait(1, seconds);
}
int main() {
// การเริ่มต้นการกำหนดค่าหุ่นยนต์ ห้ามถอดออก!
vexcodeInit();
draw(drawButton);
while (true) {
draw.broadcast();
Drivetrain.drive(forward);
if (Brain.Screen.pressing()) {
waitUntil(!Brain.Screen.pressing());
}
else {
Drivetrain.drive(forward);
}
}
} ตามที่คุณเห็น ปุ่มดังกล่าวถูกวาดขึ้นเพื่อให้ครอบคลุมหน้าจอทั้งหมดโดยเริ่มจากจุดกำเนิด (0, 0) และเติมพิกเซลแนวนอน (แกน x) จำนวน 480 พิกเซล และพิกเซลแนวตั้ง (แกน y) จำนวน 240 พิกเซล