สารบัญ:

เครื่อง Godot: 4 ขั้นตอน (พร้อมรูปภาพ)
เครื่อง Godot: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่อง Godot: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่อง Godot: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Godot Engine EP1: ควบคุมตัวละครเกม 2 มิติ [อัพเด็ต 2021] 2024, กรกฎาคม
Anonim
เครื่อง Godot
เครื่อง Godot

เครื่อง Godot คืออะไร?

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

Godot Machine เป็นงานศิลปะไฟฟ้าที่ใช้พลังงานแสงอาทิตย์ซึ่งพยายามจับภาพอารมณ์ที่สิ้นหวังซึ่งมาพร้อมกับการรอคอยที่ไร้จุดหมาย

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

เครื่อง Godot ทำอะไรได้บ้าง?

  1. 1. เมื่อได้รับแสงแดด วงจร Joule Thief จะเริ่มชาร์จตัวเก็บประจุ
  2. 2. เมื่อชาร์จที่ประมาณ 5V แล้ว Arduino Nano จะได้รับพลังงาน
  3. 3. Arduino สร้างตัวเลขสุ่มจริง 20 บิต ซึ่งแสดงบนแถบ LED 4 บิต
  4. 4. ตัวเลขนี้เปรียบเทียบกับตัวเลขสุ่มอื่น ซึ่งทุกคนไม่รู้จัก ซึ่งถูกเก็บไว้ใน eeprom ในครั้งแรกที่วงจรเปิด
  5. 5. ถ้าเท่ากัน สิ้นสุดการรอ เครื่องจะเก็บข้อมูลนี้ไว้ใน eeprom และต่อจากนี้ไปไฟ LED สีเขียวและเสียงบี๊บเพียโซจะทำงาน (หากมีพลังงานเพียงพอ)
  6. 6.ถ้าไม่เท่ากัน หวัง สิ้นหวัง ทำซ้ำ

…นอกจากนี้ บางครั้งหมายเลขที่สร้างขึ้นจะได้ยินเสียงบี๊บ คุณจึงอย่าลืมว่าคุณมีเครื่อง Godot

เนื่องจากความน่าจะเป็นที่จะตีเลขโกโดต์คือ 1 ส่วน 2^20 หรือประมาณหนึ่งในล้าน และเครื่องจักรก็ไม่เร็วมาก โดยเฉพาะอย่างยิ่งในฤดูหนาวและฤดูใบไม้ร่วง อาจต้องใช้เวลาหลายปีกว่าจะหาเจอ Godot Machine ของคุณอาจกลายเป็นส่วนหนึ่งของมรดกของคุณ ขณะรอให้ทดสอบเลขถัดไป คุณสามารถจินตนาการว่าหลานทวดที่อยู่ห่างไกลของคุณอาจเห็นบทสรุปได้อย่างไร กล่าวโดยย่อ: เป็นของขวัญในอุดมคติสำหรับเทศกาลวันหยุดที่กำลังจะมาถึง!

ขั้นตอนที่ 1: แผนผัง

แผนผัง
แผนผัง

เครื่อง Godot ประกอบด้วย:

- เครื่องเก็บเกี่ยวพลังงาน Joule Thief (Q1) ที่ชาร์จตัวเก็บประจุ 9x2200uF สำหรับผู้ที่เป็นโรคเฮลิกซาโฟเบีย (อาการเกรี้ยวกราดของตัวเหนี่ยวนำอย่างไม่ลงตัว ในขณะที่ตัวเก็บประจุและตัวต้านทานไม่มีปัญหาดังกล่าว) ไม่ต้องกลัวว่าจะต้องไขลานด้วยมือ เพราะข้อต่อถูกสร้างขึ้นโดยการวางตัวเหนี่ยวนำโคแอกเซียลแบบมาตรฐานไว้ใกล้ๆ กัน ดังแสดงใน รูปที่ 2 ทริคเด็ด!

- สวิตช์ไฟทรานซิสเตอร์แบบแยก (Q2, Q3, Q4) ซึ่งเปิดที่ 5V1 ประมาณและปิดที่ประมาณ 3.0V คุณอาจต้องการปรับแต่ง R2-R4 เล็กน้อย หากคุณใช้ทรานซิสเตอร์ประเภทต่าง ๆ (สำหรับวัตถุประสงค์ทั่วไป)

- เครื่องกำเนิดเอนโทรปี (Q6, Q7, Q8) วงจรนี้ขยายสัญญาณรบกวนอิเล็กทรอนิกส์ที่มีอยู่ในสิ่งแวดล้อมตั้งแต่ระดับไมโครโวลต์ไปจนถึงระดับโวลต์ สัญญาณนั้นจะถูกสุ่มตัวอย่างเพื่อสร้างตัวสร้างตัวเลขสุ่มตามความโกลาหล สายกีต้าร์ทำหน้าที่เป็นเสาอากาศ

- แถบ LED ที่มี LED 4 ดวงหรือไฟ LED สีแดงแยก 4 ดวง เสียงบี๊บแบบวงกลม และ LED สีเขียว

โปรดทราบว่าเอาต์พุตของสวิตช์ไฟ (ตัวรวบรวม Q4) เชื่อมต่อกับพิน 5V ของ Arduino Nano ไม่ใช่พิน VIN!

ขั้นตอนที่ 2: สร้างเครื่อง Godot

การสร้างเครื่อง Godot
การสร้างเครื่อง Godot
การสร้างเครื่อง Godot
การสร้างเครื่อง Godot
การสร้างเครื่อง Godot
การสร้างเครื่อง Godot

ฉันสร้างวงจรบนแผ่นไม้อัด ไม่มีอะไรพิเศษที่นั่น แผงโซลาร์เซลล์ 2V/200mA เป็นของเหลือจากโครงการอื่น แบรนด์คือ Velleman งัดเปิดได้ง่ายโดยใช้มีดคม เจาะรูสำหรับสกรู ฯลฯ แผงวงจรและแผงโซลาร์เซลล์ถูกขันบนไม้อัดสองชิ้นตามที่แสดงในภาพ แนวคิดก็คือแผงโซลาร์เซลล์สามารถวางตำแหน่งไว้ทางดวงอาทิตย์บนหน้าต่างนิ่งได้

ขั้นตอนที่ 3: รหัส: ตัวเลขสุ่มจากความโกลาหล?

รหัส: ตัวเลขสุ่มจากความโกลาหล?
รหัส: ตัวเลขสุ่มจากความโกลาหล?
รหัส: ตัวเลขสุ่มจากความโกลาหล?
รหัส: ตัวเลขสุ่มจากความโกลาหล?
รหัส: ตัวเลขสุ่มจากความโกลาหล?
รหัส: ตัวเลขสุ่มจากความโกลาหล?

ตัวเลขสุ่มเกิดขึ้นได้อย่างไร? พวกเขาทำด้วยคณิตศาสตร์!

แทนที่จะใช้ฟังก์ชันตัวสร้างตัวเลขสุ่มของ Arduino random() ฉันตัดสินใจเขียนตัวสร้างตัวเลขสุ่ม (RNG) ของตัวเองเพื่อความสนุก

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

สมมติว่า x เป็นค่าจริงระหว่าง 0 ถึง 1 แล้วคำนวณ: x*r*(1-x) โดยที่ r=3.9 ผลลัพธ์คือ 'x' ตัวถัดไปของคุณ ทำซ้ำโฆษณาไม่สิ้นสุด สิ่งนี้จะให้ชุดตัวเลขระหว่าง 0 ถึง 1 แก่คุณ ดังในภาพแรก ซึ่งกระบวนการนี้เริ่มต้นขึ้นสำหรับค่าเริ่มต้นของ x=0.1 (สีแดง) และ x=0.1001 (สีน้ำเงิน) ด้วย

ต่อไปนี้คือส่วนเด็ด: ไม่ว่าคุณจะเลือกเงื่อนไขเริ่มต้นสองเงื่อนไขที่ต่างกันมากน้อยเพียงใด หากเงื่อนไขเหล่านี้ไม่เท่ากันทุกประการ ผลลัพธ์ที่เป็นอนุกรมของตัวเลขก็จะแตกต่างกันออกไป สิ่งนี้เรียกว่า 'การพึ่งพาที่ละเอียดอ่อนในเงื่อนไขเริ่มต้น'

ในทางคณิตศาสตร์ สมการแผนที่ x*r*(1-x) คือพาราโบลา ดังที่แสดงในรูปที่ 2 คุณสามารถกำหนด x-series แบบกราฟิกได้โดยใช้สิ่งที่เรียกว่าโครงสร้างใยแมงมุม เริ่มจาก x บนแกนนอน ค้นหาค่าฟังก์ชันบนแกน y แล้วสะท้อนกับเส้นตรงที่ 45 องศาที่ผ่านจุดกำเนิด ทำซ้ำ. ดังที่แสดงสำหรับชุดสีแดงและสีน้ำเงิน แม้ว่าจะปิดในตอนแรก พวกมันจะแยกจากกันโดยสิ้นเชิงหลังจากทำซ้ำประมาณ 30 ครั้ง

ทีนี้ ตัวเลข 'r=3.9' มาจากไหน? ปรากฎว่าสำหรับค่า r ต่ำ เราได้ค่า x ที่สลับกันเพียงสองค่าเท่านั้น การเพิ่มพารามิเตอร์ r ในบางจุดจะเปลี่ยนเป็นการแกว่งระหว่าง 4, 8, 16 ค่า เป็นต้น การแตกแขนงหรือการแยกทางแยกเหล่านี้เกิดขึ้นอย่างรวดเร็วมากขึ้นเรื่อยๆ เมื่อ r เพิ่มขึ้น ในสิ่งที่เรียกว่า พล็อตที่มี r บนแกนนอนและ x-iterates จำนวนมากทับซ้อนกันในแนวตั้งจะส่งผลให้เกิดสิ่งที่เรียกว่าพล็อตแบบแฉก (รูปที่ 3) สำหรับ r=3.9 แผนที่นั้นวุ่นวายมาก

แล้วถ้าเราคำนวณ x-update และตัวอย่างหลายๆ ตัวจากพวกมัน เราจะได้ตัวเลขสุ่ม? ไม่เลย ณ จุดนี้มันจะเป็นตัวสร้าง Pseudo Random Number (PRNG) เนื่องจากถ้าเราเริ่มต้นจากค่าเริ่มต้นเดียวกันเสมอ (หลังจากออกจากการรีเซ็ต) เราจะได้รับลำดับเดียวกันเสมอ aka ความสับสนวุ่นวายที่กำหนดขึ้นเอง นี่คือที่มาของเอนโทรปี-เจนเนอเรเตอร์ ซึ่งทำให้แผนที่ลอจิสติกส์มีตัวเลขที่สร้างขึ้นจากสัญญาณรบกวนไฟฟ้าที่พบในสิ่งแวดล้อม

กล่าวอีกนัยหนึ่งรหัสตัวสร้างตัวเลขสุ่มทำสิ่งนี้:

- วัดแรงดันไฟจากเครื่องกำเนิดเอนโทรปีที่ขา A0 เก็บเฉพาะบิตที่มีนัยสำคัญน้อยที่สุด 4 บิต

- เปลี่ยน 4 บิตเหล่านี้เป็นค่า 'เมล็ด' ทำซ้ำ 8 ครั้งเพื่อรับเมล็ดจุดลอยตัว 32 บิต

- ปรับขนาดเมล็ดพันธุ์ใหม่ระหว่าง 0 ถึง 1

- คำนวณค่าเฉลี่ยของเมล็ดพันธุ์นี้และ x ซึ่งเป็นสถานะปัจจุบันของแผนที่ลอจิสติกส์

- เลื่อนแผนที่โลจิสติกหลายขั้นตอน (64) ขั้น

- แยกบิตออกจากสถานะแผนที่ลอจิสติก x โดยการตรวจสอบทศนิยมที่ไม่มีนัยสำคัญ

- เปลี่ยนบิตนั้นเป็นผลลัพธ์สุดท้าย

- ทำซ้ำขั้นตอนทั้งหมดข้างต้น 20 ครั้ง

หมายเหตุ: ในโค้ด Serial.println และ Serial.begin นั้นไม่มีความคิดเห็น ลบ // เพื่อตรวจสอบตัวเลขสุ่มที่สร้างขึ้นบนจอภาพอนุกรม

เพื่อความเป็นธรรม ฉันยังไม่ได้ตรวจสอบคุณภาพของตัวเลขสุ่มทางสถิติ (เช่น ชุดทดสอบ NIST) แต่ดูเหมือนว่าจะใช้ได้

ขั้นตอนที่ 4: ประหลาดใจกับเครื่อง Godot ของคุณ

ประหลาดใจที่เครื่อง Godot ของคุณ!
ประหลาดใจที่เครื่อง Godot ของคุณ!

ขอให้สนุกกับ Godot Machine ของคุณและโปรดแชร์ แสดงความคิดเห็น และ/หรือถามว่ามีอะไรไม่ชัดเจน

ในขณะที่คุณกำลังรอหมายเลข Godot โปรดลงคะแนนให้ Instructable นี้ในการประกวด Made With Math! ขอบคุณ!

ทำด้วยการแข่งขันคณิตศาสตร์
ทำด้วยการแข่งขันคณิตศาสตร์
ทำด้วยการแข่งขันคณิตศาสตร์
ทำด้วยการแข่งขันคณิตศาสตร์

รองชนะเลิศในการแข่งขัน Made with Math

แนะนำ: