산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

내장 점수 카운터가 있는 향상된 버즈 와이어 게임 - 아두이노 Nano 프로젝트

부품 및 소모품

부품수량
아두이노 Nano R31
부저1
5mm LED: 빨강1
5mm LED: 초록1
Texas Instruments 시프트 레지스터 - 직렬-병렬 (74HC595)1
7세그먼트 LED 디스플레이, 빨강1
저항 221Ω10
9V 배터리 (일반)1

필요한 도구 및 장비

프로젝트 소개

아두이노로 이것저것 만지작거리며 시간을 보내다, 실패 횟수를 세고 10번 닿으면 난리 나는 향상된 버즈 와이어 게임을 만들기로 했습니다!

제가 제 게임을 못 하는 영상입니다:

소스 코드는 세 파일로 나뉩니다.

코드에서 각 실패 후 500ms의 "유예 기간"을 설정했습니다. 플레이어에게 더 큰 휴식을 주고 싶다면 이 값을 수정하세요.

끝부분에서 LED가 너무 밝다는 걸 알았습니다! LED에 사용된 저항을 더 강한 것으로 교체해도 됩니다. 저는 약 100옴만 사용했거든요.

링으로는 열쇠고리 끝부분을 사용했습니다. 좋은 점은 그냥 열어서 와이어 끝까지 다시 돌아갈 필요가 없다는 거죠.

여러분이 제 프로젝트를 즐기시길 바랍니다!

코드

nervous_meter_score.ino (아두이노)
int latchPin = 3; // 74HC595의 ST_CP [RCK]
int clockPin = 4; // 74HC595의 SH_CP [SCK]
int dataPin = 2;  // 74HC595의 DS [S1]
const int STOP_LED = 6;
const int GO_LED = 7;
const int BUZZ = 8;
const int TOUCH = 10;
const int fail_threshold = 9;
enum Status { STOP = 0, GO = 1 };

void setup() {
  Serial.begin(9600);
  displayInitialSetup();
  gameInitialSetup();
}

Status status = GO;
int failCounter = 0;

void loop() {
  while (failCounter > fail_threshold) {
    gameover();
  }
  switch (status) {
    case GO:
      digitalWrite(GO_LED, HIGH);
      digitalWrite(STOP_LED, LOW);
      digitalWrite(BUZZ, LOW);
      if (digitalRead(TOUCH) == HIGH) {
        status = STOP;
      }
      break;
    case STOP:
      digitalWrite(GO_LED, LOW);
      failCounter++;
      if (failCounter > fail_threshold) break;
      displayDigit(failCounter);
      Serial.println(failCounter);
      failAlarm();
      status = GO;
      break;
  }
}

byte seg_spin[6] = { B10000000, B01000000, B00100000, B00010000, B00001000, B00000100 };

void gameover() {
  for (int i=0; i<6; i++) {
    digitalWrite(BUZZ, HIGH);
    delay(5);
    digitalWrite(BUZZ, LOW);
    delay(50);
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, seg_spin[i]);
    digitalWrite(latchPin, HIGH);
    delay(10);
  }
}
score_display.ino (아두이노)
byte seg_digits[10] = {
  B11111100, // 0
  B01100000, // 1
  B11011010, // 2
  B11110010, // 3
  B01100110, // 4
  B10110110, // 5
  B10111110, // 6
  B11100000, // 7
  B11111110, // 8
  B11100110  // 9
};

void displayDigit(int x) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, seg_digits[x]);
  digitalWrite(latchPin, HIGH);
}

void displayInitialSetup() {
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  displayDigit(0);
}
game.ino (아두이노)
void gameInitialSetup() {
  pinMode(STOP_LED, OUTPUT);
  pinMode(GO_LED, OUTPUT);
  pinMode(BUZZ, OUTPUT);
  pinMode(TOUCH, HIGH);
  digitalWrite(TOUCH, LOW);
}

void failAlarm() {
  digitalWrite(STOP_LED, HIGH);
  beep();
  delay(150);
  digitalWrite(STOP_LED, LOW);
  digitalWrite(BUZZ, LOW);
  delay(500);
}

void beep() {
  for(int i=0; i<3; i++) {
    digitalWrite(BUZZ, HIGH);
    delay(50);
    digitalWrite(BUZZ, LOW);
    delay(50);
  }
}

회로도

D10이 5V에 연결되면 실패로 간주되어 부저가 울리고 카운터가 증가합니다. 회로도에서는 이를 표현할 수 없어서 와이어와 구조를 적절히 구성하세요 :)

내장 점수 카운터가 있는 향상된 버즈 와이어 게임 - 아두이노 Nano 프로젝트

제조공정

  1. 텅스텐 와이어 메쉬는 공기와 반응하는가? 기술적 개요
  2. 티아라의 예술과 공예: 역사, 재료, 현대 디자인
  3. 철조망 설명: 역사, 구조, 현대적 용도
  4. 아두이노 나노 비행 시뮬레이터 2020 컨트롤 패널 – LCD & CDI 디스플레이
  5. 마이크로소프트 플라이트 시뮬레이터 2020용 아두이노 스위치 & LED 패널
  6. 파이썬 collections.Counter: 효율적 카운팅, 업데이트, 산술 연산
  7. E3.cable로 E3.series 전기 프로젝트에서 전선 삽입 마스터하기
  8. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  9. MOSMusic 프로젝트 키트: MOSFET, 아두이노로 음악 동기화 조명 제어
  10. 복잡한 금형·다이 생산을 위한 선구적 와이어 EDM 솔루션