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

아두이노 UNO와 LCD로 만드는 디지털 카탄 주사위

부품 및 소모품

아두이노 UNO1개
Adafruit 표준 LCD - 16x2 흰색/파란색1개
SparkFun 푸시버튼 스위치 12mm1개

프로젝트 소개

카탄 정착민 게임을 좋아해서 디지털 주사위를 만들어 보았습니다. 처음엔 빨간 LED 7개를 사용했는데, 카탄에는 주사위 2개가 필요하다는 걸 깨달았습니다. 그래서 LCD 디스플레이를 사용하기로 했습니다.

디스플레이 설정

평소처럼 LCD 디스플레이를 설정하세요. 방법을 모르면 이 지침을 따르세요.

아두이노 UNO와 LCD로 만드는 디지털 카탄 주사위

버튼 추가

주사위를 굴릴 때마다 누를 버튼을 추가하세요. 주사위 굴리기 동작을 흉내 내고 싶다면 틸트 센서를 사용해도 됩니다.

코드 및 초기 텍스트

이제 코드를 추가할 차례입니다. LiquidCrystal 라이브러리를 포함하는 걸 잊지 마세요. setup에서 디스플레이 초기 텍스트를 "Roll the dice!"로 설정했습니다. 원하는 텍스트로 변경 가능합니다.

아두이노 UNO와 LCD로 만드는 디지털 카탄 주사위

긴장감 조성

버튼을 누를 때마다 호출되는 buildUp 함수를 작성하여 주사위 눈이 나올 때의 긴장감을 조성했습니다. 디스플레이는 16자 2행입니다. 두 행을 1~6 사이의 랜덤 숫자로 채우되, 숫자가 나타날 때마다 속도가 빨라지도록 했습니다. for 루프에서 이 효과를 냅니다. 디스플레이 행/열 수가 다르면 코드를 조정하세요.

딜레이를 220ms로 설정하고 16로 나누었습니다. 루프가 돌 때마다 이 값을 countDelay에서 빼줍니다. 숫자가 나타나는 속도를 조절하려면 이 숫자들을 변경하세요.

아두이노 UNO와 LCD로 만드는 디지털 카탄 주사위

주사위 눈 표시

이제 실제 주사위 눈을 표시합니다. 카탄에 필요한 두 개의 주사위를 표현하기 위해 각 행에 하나씩 숫자를 표시했습니다. setCursor로 디스플레이 중앙에 위치시켰습니다. 원하는 위치에 배치하세요.

아두이노 UNO와 LCD로 만드는 디지털 카탄 주사위

도둑 (The Robber)

카탄에서 7은 특수한 숫자라서 7이 나오면 추가 메시지를 표시했습니다. 7이 나오면 아래에 "The Robber"가 나타나 모든 플레이어가 카드 수를 세도록 알립니다. 다른 게임에 사용하려면 이 코드를 삭제하거나 메시지/숫자를 수정하세요.

즐기기!

친구들을 초대해 카탄 정착민 게임을 즐기세요!

코드

카탄 주사위 코드
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int diceButton = 10;
int reply;
int count = 0;
long diceOne;
long diceTwo;

void setup() {
  lcd.begin(16, 2);
  pinMode(diceButton, INPUT);
  randomSeed(analogRead(0));
  lcd.setCursor(1, 0);
  lcd.print("Roll the dice!");
}

void buildUp() {
  lcd.clear();
  int countDelay = 220;
  int setColumn = 0;
  for (count = 0; count <= 16; count++) {
    lcd.setCursor(setColumn, 0);
    lcd.print(random(1, 7));
    lcd.setCursor(setColumn, 1);
    lcd.print(random(1, 7));
    delay(countDelay);
    countDelay -= 13;
    setColumn += 1;
  }
}

void loop() {
  diceButton = digitalRead(10);
  diceOne = random(1, 7);
  diceTwo = random(1, 7);
  if (diceButton == HIGH) {
    buildUp();
    lcd.clear();
    lcd.setCursor(7, 0);
    lcd.print(diceOne);
    lcd.setCursor(7, 1);
    lcd.print(diceTwo);
    if (diceOne + diceTwo == 7) {
      lcd.clear();
      lcd.setCursor(7, 0);
      lcd.print("7");
      lcd.setCursor(3, 1);
      lcd.print("The Robber");
    }
  }
}

Liquid Crystal 라이브러리를 포함하는 걸 잊지 마세요.

제조공정

  1. 4511 7세그먼트 디코더 활용: 실전 BCD 디스플레이 튜토리얼
  2. 디스플레이 튜브: CRT에서 캣아이 인디케이터까지
  3. 고급 스펙트럼 분석: 파형과 고조파 해석
  4. 주사위: 고대 도구에서 현대 게이밍까지 역사, 설계, 제조
  5. 액정 표시장치(LCD): 기술, 제조 및 미래 전망
  6. C# 메서드 오버로딩 마스터하기: 개념, 예제, 모범 사례
  7. Primal Display: 라즈베리 파이 LCD 온도 모니터 만들기
  8. RetroPie에 Kuman 3.5″ TFT 디스플레이 설치하기 - 단계별 가이드
  9. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  10. Verilog 디스플레이 태스크 마스터하기: 효율적인 디버깅 및 로깅