Tag Archives: วิทย์ม.ต้น

วิทย์ม.ต้น: Cosmos Ep. 5, ทำ Spectroscope กระดาษแข็ง

วันนี้เด็กๆม.ต้นที่กลุ่มบ้านเรียนปฐมธรรมได้ดูรายการ Cosmos: A Spacetime Odyssey ตอนที่ 5 กันครับ ตอนนี้เรื่องแสง สเปคตรัมของแสง ประเภทของแสงแบ่งตามความถี่ครับ หลังจากดูเสร็จเราก็สร้าง Spectrometer แบบง่ายๆพับจากกระดาษแข็งกันแล้วส่องดูแสงอาทิตย์ จอ LCD และไฟฉายกันครับ

แสงเป็นคลื่นแม่เหล็กไฟฟ้า (Electromagnetic Radiation) แสงที่เราเห็นเป็นส่วนเล็กๆของคลื่นแม่เหล็กไฟฟ้าทั้งหมด ผมเคยบันทึกเรื่องคลื่นแม่เหล็กไฟฟ้าไปบ้างแล้วที่นี่, ที่นี่, และที่นี่ เชิญเข้าไปดูนะครับ ถ้าจะเรียนรายละเอียดเยอะขึ้นควรเข้าไปดูที่ Khan Academy เรื่อง Light: Electromagnetic waves, the electromagnetic spectrum and photons แล้วอ่านและดูคลิปให้จบครับ

ใน Cosmos Ep. 5 มีเรื่องการค้นพบแสงอินฟราเรดที่เรามองไม่เห็นแต่รู้สึกได้โดยรู้สึกเป็นความร้อน ลองเข้าไปอ่านที่นี่ครับ: Discovery of Infrared

นิวตันค้นพบว่าแสงอาทิตย์มีแสงสีต่างๆประกอบกัน เมื่อแสงอาทิตย์วิ่งผ่านแท่งแก้วปริซึม (prism) แสงจะแยกออกเป็นสีต่างๆหลายสีเหมือนรุ้ง นิวตันตั้งชื่อแสงสีต่างๆนี้ว่าสเปคตรัม เชิญดูการทดลองที่นิวตันใช้เพื่อสรุปว่าแสงอาทิตย์มีสีต่างๆรวมกันอยู่ครับ:

โจเซฟ เฟราโฮเฟอร์ (Joseph Fraunhofer) พบว่าในสเปคตรัมมีแถบมืดๆเล็กๆอยู่เหมือนบาร์โค้ด แต่ไม่แน่ใจว่าเกิดจากอะไร แต่ในที่สุดนักวิทยาศาสตร์สมัยต่อมาก็เข้าใจว่าเกิดจากการดูดซับแสงของธาตุต่างๆ โดยที่อะตอมของธาตุต่างๆจะดูดซับแสงที่ความถี่เฉพาะเจาะจงเป็นเอกลักษณ์ของธาตุนั้นๆ ทำให้เราสามารถรู้ส่วนประกอบของวัตถุไกลๆเช่นดาวต่างๆได้ครับ นอกจากนี้แถบที่เลื่อนไปจากที่ที่ควรจะเป็นยังบอกได้ว่าแสงมาจากแหล่งกำเนิดที่เคลื่อนที่เข้าหาหรือออกจากเราได้ด้วยครับ:

หลังจากดู Cosmos จบ เด็กๆก็ประดิษฐ์ Spectrometer เพื่อแยกแสงให้เป็นสีต่างๆที่เป็นส่วนประกอบครับ  เราเอาแบบมาจาก Public Lab ครับ แค่พิมพ์แบบบนกระดาษแข็งแล้วตัดและพับ เอาชิ้นพลาสติกจาก DVD-R และทำช่องให้แสงเข้าเล็กๆแล้วเอาไปติดกับกล้องมือถือครับ:

วิทย์ม.ต้น: รู้จักการทำ Trail (ลายวิ่งตาม) ใน Scratch, นั่ง debug โปรแกรมกัน

วันนี้เด็กๆมัธยมต้นก็เขียนโปรแกรม Scratch ของเขากันต่อนะครับ วันนี้รู้จักเทคนิคเพิ่มเติมที่จะทำให้เมื่อตัวละครเคลื่อนไหวจะมีเงาๆเป็นลายวิ่งตาม หน้าตาประมาณนี้ครับ:

มาจาก https://scratch.mit.edu/projects/58897590/#editor ครับ
มาจาก https://scratch.mit.edu/projects/58897590/ ครับ  กดเข้าไปดูโค้ดได้ครับ

วิธีทำก็ทำประมาณนี้ครับ:

เข้าไปดูวิธีได้ที่ https://scratch.mit.edu/projects/58897590/#editor และอ่านวิธีอื่นๆได้ที่ https://en.scratch-wiki.info/wiki/Making_a_Trail ครับ

อันนี้เป็นการใช้เทคนิคในโปรเจ็คผมเองครับ อยู่ที่ https://scratch.mit.edu/projects/227691459/ 

โปรเจ็คจำลองการเคลื่อนที่ของดาวหางที่ถูกแรงโน้มถ่วงของดวงอาทิตย์ดูดครับ โค้ดอยู่ที่ https://scratch.mit.edu/projects/227691459/

โปรเจ็คจำลองการเคลื่อนที่ของดาวหางที่ถูกแรงโน้มถ่วงของดวงอาทิตย์ดูดครับ โค้ดอยู่ที่ https://scratch.mit.edu/projects/227691459/
โปรเจ็คจำลองการเคลื่อนที่ของดาวหางที่ถูกแรงโน้มถ่วงของดวงอาทิตย์ดูดครับ โค้ดอยู่ที่ https://scratch.mit.edu/projects/227691459/

เวลาที่เหลือเราก็มานั่งรีวิวความคืบหน้าของโปรแกรมของเด็กๆแต่ละคน ช่วยกัน debug และหาวิธีแก้ปัญหาต่างๆครับ

 

วิทย์ม.ต้น: เขียน 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 ครับ