Mục lục:

Máy Godot: 4 bước (có hình ảnh)
Máy Godot: 4 bước (có hình ảnh)

Video: Máy Godot: 4 bước (có hình ảnh)

Video: Máy Godot: 4 bước (có hình ảnh)
Video: Hướng dẫn lập trình game Flappy bird bằng godot 4 - Phần 1: cài đặt, xử lý chuyển động và va chạm 2024, Tháng bảy
Anonim
Máy Godot
Máy Godot

Máy Godot là gì?

Đó là một phần của trải nghiệm con người mà chúng ta có thể thấy mình ở trong trạng thái chờ đợi một điều gì đó cuối cùng có thể xảy ra sau một thời gian dài chờ đợi, hoặc hoàn toàn không xảy ra.

Godot Machine là một tác phẩm nghệ thuật điện sử dụng năng lượng mặt trời cố gắng nắm bắt cảm xúc tuyệt vọng đi kèm với sự chờ đợi vô nghĩa.

Tên này là từ vở kịch nổi tiếng của Samuel Beckett, chờ đợi Godot, trong đó hai người đàn ông chờ đợi sự xuất hiện của một Godot nhất định, người có thể đến vào ngày mai, ngày kia hoặc không bao giờ.

Vậy Godot Machine làm được những gì?

  1. 1. Dưới ánh nắng mặt trời, một mạch Joule Thief bắt đầu sạc một ngân hàng tụ điện.
  2. 2. Sau khi được sạc đến khoảng 5V, Arduino Nano được cấp nguồn.
  3. 3. Arduino tạo ra một số ngẫu nhiên thực 20 bit, được hiển thị trên thanh LED 4 bit.
  4. 4. Số này được so sánh với một số ngẫu nhiên khác, chưa biết tất cả, đã được lưu trữ trong eeprom lần đầu tiên mạch khởi động.
  5. 5. Nếu bằng nhau thì hết thời gian chờ, máy sẽ lưu dữ kiện này vào eeprom và từ bây giờ đèn LED xanh và tiếng bíp piezo được kích hoạt (nếu còn đủ năng lượng).
  6. 6. Nếu không bằng, hy vọng, tuyệt vọng, lặp lại.

… Ngoài ra, thỉnh thoảng con số được tạo ra được phát ra bởi máy bíp, vì vậy bạn không thực sự quên rằng bạn có một Godot Machine.

Giả sử rằng xác suất để đạt được số Godot là 1 trên 2 ^ 20 hoặc khoảng một phần triệu và máy chạy không nhanh lắm, đặc biệt là vào mùa đông và mùa thu, có thể mất nhiều năm để tìm ra nó. Máy Godot của bạn thậm chí có thể trở thành một phần tài sản thừa kế của bạn. Trong khi chờ đợi nó kiểm tra số tiếp theo, bạn có thể tưởng tượng về việc những người cháu chắt của bạn cuối cùng có thể thấy nó đi đến kết luận như thế nào. Tóm lại: đó là món quà lý tưởng cho kỳ nghỉ lễ sắp tới!

Bước 1: Sơ đồ

Sơ đồ
Sơ đồ

Máy Godot bao gồm:

-Một máy thu năng lượng Joule Thief (Q1) sạc tụ điện 9x2200uF. Đối với những người bị chứng sợ xoắn (một góc không hợp lý của cuộn cảm, trong khi tụ điện và điện trở không gây ra vấn đề như vậy), đừng lo lắng vì không cần cuộn dây thủ công: khớp nối được tạo ra bằng cách đặt các cuộn cảm đồng trục tiêu chuẩn trong vùng lân cận của nhau như được hiển thị ở đây trong Ảnh thứ 2. Bí quyết tuyệt vời!

- Một công tắc nguồn bóng bán dẫn rời (Q2, Q3, Q4), bật ở 5V1 và tắt ở khoảng 3.0V. Bạn có thể muốn điều chỉnh R2-R4 một chút nếu bạn sử dụng các loại bóng bán dẫn (mục đích chung) khác nhau.

-Một bộ tạo entropy (Q6, Q7, Q8). Mạch này khuếch đại nhiễu điện tử có trong môi trường từ mức microvolt sang mức volt. Tín hiệu đó sau đó được lấy mẫu để tạo ra một bộ tạo số ngẫu nhiên dựa trên sự hỗn loạn (đọc trên). Một đoạn dây đàn guitar đóng vai trò như một ăng-ten.

-Một thanh LED với 4 đèn LED hoặc 4 đèn LED riêng biệt màu đỏ, một tiếng bíp piezo và một đèn LED màu xanh lá cây.

Lưu ý rằng đầu ra của công tắc nguồn (bộ thu của Q4) được kết nối với chân 5V của Arduino Nano, KHÔNG phải với chân VIN!

Bước 2: Xây dựng máy Godot

Chế tạo máy Godot
Chế tạo máy Godot
Chế tạo máy Godot
Chế tạo máy Godot
Chế tạo máy Godot
Chế tạo máy Godot

Tôi đã xây dựng mạch điện trên một tấm ván mỏng. Không có gì đặc biệt ở đó. Bảng điều khiển năng lượng mặt trời 2V / 200mA là phần còn lại của một dự án khác. Thương hiệu là Velleman. Thật dễ dàng để mở nó ra bằng cách sử dụng một con dao sắc, để khoan lỗ cho ốc vít, v.v. Bảng mạch và bảng điều khiển năng lượng mặt trời được vặn vào hai miếng ván ép, như trong hình. Ý tưởng là tấm pin mặt trời có thể được đặt hướng về phía mặt trời trên cửa sổ tĩnh.

Bước 3: Mã: Số ngẫu nhiên từ hỗn loạn?

Mật mã: Số ngẫu nhiên từ hỗn loạn?
Mật mã: Số ngẫu nhiên từ hỗn loạn?
Mật mã: Số ngẫu nhiên từ hỗn loạn?
Mật mã: Số ngẫu nhiên từ hỗn loạn?
Mật mã: Số ngẫu nhiên từ hỗn loạn?
Mật mã: Số ngẫu nhiên từ hỗn loạn?

Các số ngẫu nhiên được thực hiện như thế nào? Chà, chúng được làm bằng Toán học!

Thay vì sử dụng hàm tạo số ngẫu nhiên của Arduino random (), tôi quyết định viết Trình tạo số ngẫu nhiên (RNG) của riêng mình, chỉ để giải trí.

Nó dựa trên bản đồ hậu cần, là ví dụ đơn giản nhất về sự hỗn loạn xác định. Đây là cách nó hoạt động:

Giả sử x là một giá trị thực nào đó từ 0 đến 1, sau đó tính: x * r * (1-x), trong đó r = 3,9. Kết quả là 'x' tiếp theo của bạn. Lặp lại quảng cáo infinitum. Điều này sẽ cung cấp cho bạn một loạt các số từ 0 đến 1, như trong hình đầu tiên, nơi quá trình này được bắt đầu cho giá trị ban đầu của x = 0,1 (màu đỏ) và x = 0,1001 (màu xanh lam).

Bây giờ đây là phần thú vị: cho dù bạn chọn hai điều kiện ban đầu khác nhau gần đến mức nào, nếu chúng không hoàn toàn bằng nhau, thì dãy số kết quả cuối cùng sẽ phân kỳ. Điều này được gọi là 'Sự phụ thuộc nhạy cảm vào các điều kiện ban đầu'.

Về mặt toán học, phương trình ánh xạ x * r * (1-x) là một parabol. Như thể hiện trong hình thứ 2, bạn có thể xác định chuỗi x bằng đồ thị bằng cách sử dụng cái được gọi là cấu trúc mạng nhện: bắt đầu từ x trên trục hoành, tìm giá trị hàm trên trục y, sau đó phản ánh theo đường thẳng ở 45 góc độ đi qua gốc tọa độ. Lặp lại. Như được hiển thị cho chuỗi màu đỏ và xanh lam, ngay cả khi đóng ban đầu, chúng hoàn toàn phân kỳ sau khoảng 30 lần lặp lại.

Bây giờ, số 'r = 3,9' đến từ đâu? Hóa ra là đối với các giá trị thấp của r, chúng ta chỉ nhận được hai giá trị x xen kẽ. Khi tăng tham số r, tại một thời điểm nào đó sẽ chuyển sang dao động giữa 4, 8, 16 giá trị, v.v. Những sự phân nhánh hoặc phân nhánh này ngày càng nhanh hơn khi r được tăng lên, trong đó được gọi là 'lộ trình nhân đôi chu kỳ dẫn đến hỗn loạn'. Một biểu đồ có r trên trục hoành và nhiều lần lặp x chồng lên nhau theo chiều dọc sẽ dẫn đến cái được gọi là biểu đồ phân đôi (hình thứ 3). Đối với r = 3,9, bản đồ hoàn toàn hỗn loạn.

Vì vậy, nếu chúng ta tính toán nhiều lần cập nhật x và lấy mẫu từ chúng, chúng ta sẽ nhận được một số ngẫu nhiên? À không, tại thời điểm này, nó sẽ là một trình tạo Số ngẫu nhiên giả (PRNG), vì nếu chúng ta luôn bắt đầu từ cùng một giá trị ban đầu (sau khi đặt lại), chúng ta sẽ luôn nhận được cùng một chuỗi; hay còn gọi là hỗn loạn xác định. Đây là nơi máy phát entropy xuất hiện, tạo ra bản đồ hậu cần với một con số được tạo ra từ tiếng ồn điện được tìm thấy trong môi trường.

Nói cách khác, mã tạo số ngẫu nhiên thực hiện điều này:

- Đo điện áp từ bộ tạo entropi trên chân A0. Chỉ giữ 4 bit ít quan trọng nhất.

- Chuyển 4 bit này thành giá trị 'hạt giống', lặp lại 8 lần để có hạt giống dấu phẩy động 32 bit.

- Bán lại hạt giống từ 0 đến 1.

- Tính giá trị trung bình của hạt giống này và x, hiện trạng của bản đồ hậu cần.

- Nâng cao bản đồ hậu cần nhiều (64) bước.

- Trích xuất một bit đơn lẻ từ trạng thái bản đồ hậu cần x bằng cách kiểm tra một số thập phân không đáng kể.

- Chuyển bit đó vào kết quả cuối cùng.

- Lặp lại tất cả các bước trên 20 lần.

Lưu ý: Trong mã, Serial.println và Serial.begin được chú thích. Bỏ dấu // để kiểm tra các số ngẫu nhiên được tạo trên màn hình nối tiếp.

Công bằng mà nói, tôi chưa kiểm tra thống kê chất lượng của các số ngẫu nhiên (ví dụ: bộ thử nghiệm NIST) nhưng chúng có vẻ ổn.

Bước 4: Kinh ngạc trước Máy Godot của bạn

Kinh ngạc trước cỗ máy Godot của bạn!
Kinh ngạc trước cỗ máy Godot của bạn!

Hãy tận hưởng Máy Godot của bạn và vui lòng chia sẻ, bình luận và / hoặc hỏi nếu có điều gì chưa rõ ràng.

Trong khi chờ số Godot được tìm thấy, vui lòng bình chọn cho Bài có hướng dẫn này trong cuộc thi Made With Math! Cảm ơn!

Thực hiện với Cuộc thi Toán học
Thực hiện với Cuộc thi Toán học
Thực hiện với Cuộc thi Toán học
Thực hiện với Cuộc thi Toán học

Về nhì trong Cuộc thi Làm với Toán

Đề xuất: