Category Archives: science

วิทย์ม.ต้น: เขียน Scratch ต่อ, หัดใช้ Clone และ Broadcast

วันนี้เด็กๆม.ต้นก็เขียนโปรแกรม Scratch กันต่อนะครับ วันนี้ผมแนะนำเด็กๆให้รู้จักคำสั่งพวก Clone และ Broadcast

เราใช้คำสั่ง create clone of … เพื่อสร้างตัวละครใน Scratch เพิ่มขึ้น ตัวที่ถูกสร้างเรียกว่าเป็น clone (โคลน) ใช้คำสั่ง when I start as a clone เพื่อให้รู้ว่าตัวที่เป็นโคลนควรจะทำอะไรบ้าง ใช้คำสั่ง delete this clone เพื่อลบโคลนให้หายไปครับ

สามคำสั่งหลักเกี่ยวกับ Clone ครับ
สามคำสั่งหลักเกี่ยวกับ Clone ครับ

ตัวอย่างเช่น https://scratch.mit.edu/projects/226828866/ เราสร้างโคลนแมวออกมาหลายๆตัว โดยที่โคลนแต่ละตัวก็จะร้องเหมียวแล้วก็หายไปครับ:

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

ให้เด็กๆไปดูเพิ่มเติมที่  https://scratch.mit.edu/projects/10170600/ และที่ https://en.scratch-wiki.info/wiki/Cloning ครับ

เราใช้คำสั่ง broadcast คู่กับ when I receive… คือให้ตัวละครป่าวประกาศข้อความบางอย่างด้วยคำสั่ง broadcast แล้วตัวละครอื่นๆใช้คำสั่ง when I receive คอยฟังข้อความที่อยากฟัง ถ้าได้ยินก็ทำงานต่อไปครับ ตัวอย่างเช่นที่ https://scratch.mit.edu/projects/226829837/ แมวร้องเหมียว แล้ว broadcast ว่าให้เป็ดร้องได้ เป็ดได้ยินดังนั้นก็ร้องก้าบแล้ว broadcast ว่าให้แมวร้องได้ แมวได้ยินดังนั้นก็ร้องเหมียว แล้วแล้ว broadcast ว่าให้เป็ดร้องได้ เป็นอย่างนี้ไปเรื่อยๆครับ

อีกตัวอย่างก็เช่นโค้ดที่ผมใช้จำลองการเคลื่อนที่ของดาวสองดวงเมื่อมีแรงโน้มถ่วงระหว่างกันที่ https://scratch.mit.edu/projects/225919898/
ที่ผมใช้คำสั่ง broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มทำการจำลองการเคลื่อนที่ล่ะนะ:

broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มคำนวณการเคลื่อนที่ล่ะนะ
broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มคำนวณการเคลื่อนที่ล่ะนะ

ดาวต่างๆก็คอยฟังประกาศ ถ้ามีประกาศว่า StartSimulation ก็เตรียมตัววาดวงโคจร:

ถ้าดาวได้ยินว่า StartSimulation ก็เตรียมวาดวงโคจรได้
ถ้าดาวได้ยินว่า StartSimulation ก็เตรียมวาดวงโคจรได้

หรือเมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้:

เมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้
เมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้

เมื่อดาวได้ยินประกาศที่ว่า UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา:

เมื่อดาวได้ยินประกาศ UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา
เมื่อดาวได้ยินประกาศ UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา

สำหรับเรื่อง Broadcast ถ้ายังไม่เข้าใจ ให้เด็กๆไปดูเพิ่มเติมที่ https://www.youtube.com/watch?v=BnYbOCiudyc และ https://en.scratch-wiki.info/wiki/Broadcast ครับ

วิทย์ม.ต้น: Cosmos Ep. 3, วาดวงโคจรด้วย Scratch

วันนี้เด็กๆม.ต้นที่กลุ่มบ้านเรียนปฐมธรรมได้ดูรายการ Cosmos: A Spacetime Odyssey ตอนที่ 3 กันครับ ตอนนี้เกี่ยวกับการค้นพบของนิวตันเรื่องกฎการเคลื่อนที่และแรงโน้มถ่วงครับ 

ยุคก่อนนิวตัน มนุษยชาติยังไม่มีวิทยาศาสตร์แบบแม่นยำครับ ความรู้ต่างๆยังเป็นสิ่งที่สังเกตว่าเป็นจริงแต่ไม่รู้สาเหตุว่าทำไมถึงเป็นอย่างนั้น แต่เมื่อนิวตันตีพิมพ์หนังสือ Philosophiæ Naturalis Principia Mathematica เมื่อปี 1687 มนุษยชาติก็พัฒนาไปอีกก้าวหนึ่ง เราเริ่มเข้าใจการทำงานของธรรมชาติได้ลึกซึ้งขึ้น สามารถคำนวณเรื่องแรงและการเคลื่อนที่ต่างๆรวมไปถึงการโคจรของดวงดาวด้วยครับ ความรู้ของมนุษยชาติเริ่มเข้าสู่ยุคที่สามารถทำนายว่าจะเกิดอะไรขึ้นบ้าง อย่างไร อย่างถูกต้อง และมีรายละเอียดครับ

กฎการเคลื่อนที่ของนิวตันมีหน้าตาประมาณนี้ครับ:

1. สิ่งของต่างๆจะอยู่เฉยๆ หรือเคลื่อนที่ไปเรื่อยๆเป็นเป็นเส้นตรงด้วยความเร็วเท่าเดิมถ้าไม่มีอะไรไปทำอะไรมัน

2. ปริมาณการเคลื่อนที่ (โมเมนตัม = ผลคูณของมวลกับความเร็ว) จะเปลี่ยนได้ก็เมื่อมี “แรง” มาทำให้มันเปลี่ยน อัตราการเปลี่ยนแปลงของโมเมนตัมคือแรง

3. เมื่อวัตถุ A ไปออกแรงกับอีกวัตถุ B วัตถุ B ก็จะออกแรงกับวัตถุ A ด้วย ด้วยแรงขนาดเท่ากันแต่มีทิศทางตรงกันข้าม

นอกจากนี้นิวตันยังค้นพบด้วยว่าแรงโน้มถ่วงระหว่างวัตถุสองชิ้นที่มีมวล M และ m และอยู่ห่างกัน r จะมีขนาดแปรผันกับ M m / r2  ครับ โดยที่ทิศทางแรงจะอยู่ในแนวที่เชื่อมมวลทั้งสอง

จากหลักการเหล่านี้เราสามารถคำนวณว่าวัตถุที่มีมวล m จะเคลื่อนที่อย่างไรโดยการดูว่ามีแรงอะไรกระทำกับวัตถุบ้าง (= F) แล้วเราก็คำนวณความเร่ง (=a คืออัตราความเปลี่ยนแปลงของความเร็ว = F/m) แล้วเราก็คำนวณว่าความเร็ว v เปลี่ยนไปอย่างไรในเวลาสั้นๆ dt (คือ v กลายเป็น v + a dt เมื่อเวลาเปลี่ยนไป dt) แล้วเราก็คำนวณตำแหน่ง x จากความเร็ว (x กลายเป็น x + v dt) แล้วก็วนกลับไปคำนวณแรงใหม่เป็นรอบการคำนวณต่อไปเรื่อยๆ วิธีอย่างนี้ใช้เทคนิค Calculus ที่นิวตันตีพิมพ์ในหนังสือข้างบน หรือให้คอมพิวเตอร์คอยคำนวณให้เราก็ได้ครับ

เนื่องจากเด็กๆเริ่มเข้าใจการโปรแกรมภาษา Scratch แล้ว ผมจึงทำตัวอย่างการคำนวณดูวงโคจรของดาวสองดวงจากกฎการเคลื่อนที่และแรงโน้มถ่วงที่ค้นพบโดยนิวตันครับ ตัวอย่างอยู่ที่ https://scratch.mit.edu/projects/225919898/ โดยทุกคนสามารถกด See Inside แล้วเข้าไปปรับมวล ตำแหน่ง และความเร็วของดาวทั้งสองเพื่อดูวงโคจรได้

ตัวอย่างที่ดาวอันหนึ่งมีมวลเป็น 1,000 เท่าของอีกดาว และผลของความเร็วต้นต่างๆกันว่าทำให้วงโคจรหน้าตาเป็นอย่างไรครับ กดดูให้ภาพเต็มจอนะครับ:

ตัวอย่างดาวสองดวงมวลใกล้ๆกันครับ กดดูให้ภาพเต็มจอนะครับ:

ตัวอย่างการทำ Gravity Assist หรือ Gravity Slingshot เพิ่มความเร็วให้ดาวหรือยานอวกาศครับ กดดูให้ภาพเต็มจอนะครับ:

 

 

วิทย์ม.ต้น: ดูผลงานโปรแกรม Scratch หนึ่งสัปดาห์ที่ผ่านมา

วันนี้เด็กๆมัธยมต้นนำเสนอโปรแกรมภาษา Scratch ที่ไปหัดทำในสัปดาห์ที่ผ่านมาครับ เด็กๆทำอะไรได้เยอะกว่าที่ผมคาดไว้เยอะเหมือนกัน เรียนรู้ได้ด้วยตัวเองโดยทำ tutorial และดูตัวอย่างโปรแกรมในโปรเจ็กต่างๆบนเว็บ Scratch ครับ

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

ตัวอย่างเกมที่เด็กๆทำกันครับ:

เราจะมาดูความก้าวหน้าต่อไปของโปรแกรมเหล่านี้วันศุกร์หน้าครับ