สารบัญ:
- ขั้นตอนที่ 1: แผนผัง
- ขั้นตอนที่ 2: สร้างเครื่อง Godot
- ขั้นตอนที่ 3: รหัส: ตัวเลขสุ่มจากความโกลาหล?
- ขั้นตอนที่ 4: ประหลาดใจกับเครื่อง Godot ของคุณ
วีดีโอ: เครื่อง Godot: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
เครื่อง Godot คืออะไร?
มันเป็นส่วนหนึ่งของประสบการณ์ของมนุษย์ที่เราสามารถพบว่าตัวเองอยู่ในสถานะรอคอยบางสิ่งที่อาจเกิดขึ้นในที่สุดหลังจากการรอคอยเป็นเวลานานหรือไม่เลย
Godot Machine เป็นงานศิลปะไฟฟ้าที่ใช้พลังงานแสงอาทิตย์ซึ่งพยายามจับภาพอารมณ์ที่สิ้นหวังซึ่งมาพร้อมกับการรอคอยที่ไร้จุดหมาย
ชื่อนี้มาจากบทละครที่โด่งดังของซามูเอล เบ็คเค็ตต์ Waiting for Godot ซึ่งชายสองคนรอการมาของ Godot ที่อาจมาถึงในวันพรุ่งนี้ วันถัดไป หรือไม่เลยก็ได้
เครื่อง Godot ทำอะไรได้บ้าง?
- 1. เมื่อได้รับแสงแดด วงจร Joule Thief จะเริ่มชาร์จตัวเก็บประจุ
- 2. เมื่อชาร์จที่ประมาณ 5V แล้ว Arduino Nano จะได้รับพลังงาน
- 3. Arduino สร้างตัวเลขสุ่มจริง 20 บิต ซึ่งแสดงบนแถบ LED 4 บิต
- 4. ตัวเลขนี้เปรียบเทียบกับตัวเลขสุ่มอื่น ซึ่งทุกคนไม่รู้จัก ซึ่งถูกเก็บไว้ใน eeprom ในครั้งแรกที่วงจรเปิด
- 5. ถ้าเท่ากัน สิ้นสุดการรอ เครื่องจะเก็บข้อมูลนี้ไว้ใน eeprom และต่อจากนี้ไปไฟ LED สีเขียวและเสียงบี๊บเพียโซจะทำงาน (หากมีพลังงานเพียงพอ)
- 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
ฉันสร้างวงจรบนแผ่นไม้อัด ไม่มีอะไรพิเศษที่นั่น แผงโซลาร์เซลล์ 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 Machine ของคุณและโปรดแชร์ แสดงความคิดเห็น และ/หรือถามว่ามีอะไรไม่ชัดเจน
ในขณะที่คุณกำลังรอหมายเลข Godot โปรดลงคะแนนให้ Instructable นี้ในการประกวด Made With Math! ขอบคุณ!
รองชนะเลิศในการแข่งขัน Made with Math
แนะนำ:
เครื่อง ULTRASONIC LEVITATION โดยใช้ ARDUINO: 8 ขั้นตอน (พร้อมรูปภาพ)
ULTRASONIC LEVITATION Machine การใช้ ARDUINO: เป็นเรื่องที่น่าสนใจมากที่ได้เห็นบางสิ่งที่ลอยอยู่ในอากาศหรือในที่ว่าง เช่น ยานอวกาศของมนุษย์ต่างดาว นั่นคือสิ่งที่โครงการต่อต้านแรงโน้มถ่วงเป็นเรื่องเกี่ยวกับ วัตถุ (โดยทั่วไปคือกระดาษแผ่นเล็กๆ หรือเทอร์โมคอล) ถูกวางไว้ระหว่างทรานส
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง
เครื่อง Arduino ที่ให้งาน (aka: การสร้าง Bop-it ของคุณเอง!): 5 ขั้นตอน
The Task Giving Arduino Machine (หรือที่รู้จักว่า: Making Your Own Bop-it!): สำหรับการศึกษานี้ ฉันกำลังติดตาม ฉันได้รับมอบหมายให้ทำบางอย่างด้วย Arduino ฉันได้รวบรวมปัญหามาตรฐานของวัสดุจากโรงเรียนและคิดบางอย่างที่จะแก้ไขปัญหาเหล่านั้นด้วยเสื่อด้านนอกน้อยที่สุด
เครื่อง ATM ใช้ Arduino (พิมพ์ลายนิ้วมือ+บัตร RFID) : 4 ขั้นตอน (พร้อมรูปภาพ)
เครื่อง ATM ที่ใช้ Arduino (พิมพ์ลายนิ้วมือ+บัตร RFID): สวัสดีเพื่อน ๆ ฉันกลับมาพร้อมกับแนวคิดใหม่เกี่ยวกับเครื่อง ATM โดยใช้ Arduino ซึ่งมีประโยชน์ในพื้นที่ชนบทที่ไม่สามารถให้บริการเงินสดได้ มันเป็นความคิดเล็กน้อย ฉันหวังว่า คุณสนุกกับมัน มาเริ่มกันเลย
เครื่อง Bluetooth Skype ที่ง่ายและรวดเร็ว: 3 ขั้นตอน (พร้อมรูปภาพ)
เครื่อง Bluetooth Skype ที่ง่ายและรวดเร็ว: ซื้อชุดหูฟัง Motorola HS820 ตัวใดตัวหนึ่งตามคำแนะนำในคำแนะนำอื่น และใส่ไว้ในเครื่องโทรศัพท์แบบเดิม นี่เป็นเครื่องต้นแบบจริงๆ จนกว่าฉันจะพบโทรศัพท์ 'คลาสสิก' ที่ดี แค่เรื่องไร้สาระบ่ายวันศุกร์ในออฟฟิศ