Cách tự làm “máy trò chơi bắt gậy rơi ngẫu nhiên”

Mục lục :

Thiết kế

Thông thường mình thấy đa phần sẽ làm từ 8-10 cây gậy rơi ngẫu nhiên, thời gian rơi của mỗi cây tầm 3-4 giây.

Phần vòng cung các bạn có thể làm bằng gỗ, ống nước cứng , đặt gia công bằng sắt …

Phần cây cột đứng chịu lực phải đủ vì vậy nếu làm bằng ống nước như mình sẽ bị cong, không thể đứng vững.

Các cây gậy ( 8 -10 cây tùy ý ) làm bằng ống nước theo mình là ổn nhất vì các bạn có thể điều chỉnh trọng lượng bằng cách thêm cát , nước vào bên trong, việc này sẽ làm thay đổi tốc độ rơi của gậy.

image

Các linh kiện cần chuẩn bị cho phần mạch điện điều khiển

Sơ đồ đấu nối mạch điện

dau-noi

Lập trình cho Arduino

int relay1 = 2;
int relay2 = 3;
int relay3 = 4;
int relay4 = 5;
int relay5 = 6;
int relay6 = 7;
int relay7 = 8;
int relay8 = 9;


int randNumber;
int randTime;

int myNum[9];
int i;
int j;
int so;

int button = 10;
bool chay;


void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A0));
  chay = false;
  i = 1;
  pinMode(button, INPUT_PULLUP);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  pinMode(relay5, OUTPUT);
  pinMode(relay6, OUTPUT);
  pinMode(relay7, OUTPUT);
  pinMode(relay8, OUTPUT);
   
  digitalWrite(relay1, LOW);
  digitalWrite(relay2, LOW);
  digitalWrite(relay3, LOW);
  digitalWrite(relay4, LOW);
  digitalWrite(relay5, LOW);
  digitalWrite(relay6, LOW);
  digitalWrite(relay7, LOW);
  digitalWrite(relay8, LOW);
}

void loop() {
  if (digitalRead(button) == 0) {
    chay = true;
  }
  if (chay == true) {
    if (i <= 8) {
      randTime = random(2800, 4600) / 100 * 100;
      delay(randTime);
      Serial.println(randTime);
demlai:
      randNumber = random(1000, 8990) / 1000;
      myNum[i] = randNumber;

      for (j = 1; j < i; j = j + 1) {
        if (myNum[i] != myNum[j]) {

        } else {
          goto demlai;
        }
      }

      Serial.print("so thu ");
      Serial.print(i);
      Serial.print(" :");
      Serial.println(myNum[i]);
      so = myNum[i] + 1;
      digitalWrite(so, HIGH);
      i = i + 1;


      Serial.println(digitalRead(relay1));
      Serial.println(digitalRead(relay2));
      Serial.println(digitalRead(relay3));
      Serial.println(digitalRead(relay4));
      Serial.println(digitalRead(relay5));
      Serial.println(digitalRead(relay6));
      Serial.println(digitalRead(relay7));
      Serial.println(digitalRead(relay8));


    } else {

      digitalWrite(relay1, LOW);
      digitalWrite(relay2, LOW);
      digitalWrite(relay3, LOW);
      digitalWrite(relay4, LOW);
      digitalWrite(relay5, LOW);
      digitalWrite(relay6, LOW);
      digitalWrite(relay7, LOW);
      digitalWrite(relay8, LOW);

      i = 1;
      chay = false;
    }
  }
  delay(1000);
}

Kết quả

Mời các bạn xem video