이 DIY 전자 D20 다이로 스타일을 구르십시오.

이 DIY 전자 D20 다이로 스타일을 구르십시오.

다음 탁상용 롤 플레잉 게임을 위해 조금 독특한 것을 원하십니까? 크리티컬 히트와 미스에 대한 맞춤형 그래픽이 있는 전자 D20은 어떻습니까? 오늘은 Arduino와 몇 가지 간단한 부품으로 자신만의 것을 만드는 방법을 보여 드리겠습니다.





이전에 Arduino를 사용한 적이 없더라도 걱정하지 마십시오. 시작하기 가이드 .





구축 계획

이것은 간단한 프로젝트입니다. Arduino는 OLED 디스플레이를 구동하고 버튼은 다이를 굴립니다. 크리티컬 히트 또는 크리티컬 미스 롤에 대해 맞춤형 그래픽이 표시됩니다. 코드를 D8, D10 또는 D12로 쉽게 수정할 수 있습니다.





필요한 것

  • 1 x 아두이노
  • 1 x 0.96' I2C OLED 디스플레이
  • 1 x 푸시 버튼
  • 1 x 10k? 저항기
  • 1 x 브레드보드
  • 다양한 연결 와이어
  • 작성된 지침을 끝까지 따르고 ​​싶지 않다면 전체 코드가 여기에 있습니다.

이것들은 자신의 D20을 구축하는 데 필요한 핵심 부품입니다. 케이스(아래에서 설명)에 설치하고 회로를 보다 영구적인 상태로 납땜할 수 있습니다. 이를 위해 필요한 추가 부품은 다음과 같습니다.

  • 4 x M2 x 10mm(0.4인치) 볼트
  • 4 x M2 너트
  • 4 x 7mm(0.28인치) 와셔
  • 9V 배터리 스냅(또는 적절한 대안)
  • 다양한 열수축 튜브

이 OLED 디스플레이는 매우 멋집니다. 일반적으로 흰색, 파란색, 노란색 또는 이 세 가지를 혼합하여 구입할 수 있습니다. 케이스에 맞게 파란색으로 하나 구매했습니다. 당신이 얻을 I2C 대신 모델 SPI .



거의 모든 Arduino가 적합합니다. 케이스에 쏙 들어갈 만큼 작기 때문에 나노를 선택했습니다. Arduino 모델에 대한 자세한 내용은 구매 가이드를 확인하세요.

서킷

필요한 회로는 다음과 같습니다.





연결하다 VCC 그리고 접지 OLED 디스플레이에서 Arduino에 +5V 그리고 지면 . 연결하다 아날로그 4 Arduino에서 레이블이 지정된 핀에 SDA . 연결하다 아날로그 5 ~로 SCL 핀. 이 핀에는 I2C 버스를 사용하여 디스플레이를 구동하는 데 필요한 회로가 포함되어 있습니다. 정확한 핀은 모델에 따라 다르지만 A4 및 A5는 Nano 및 Uno에 사용됩니다. 을 체크 해봐 와이어 라이브러리 문서 Uno 또는 Nano를 사용하지 않는 경우 모델의 경우.

배터리를 접지에 연결하고 와인 핀. 이것은 전압 입력을 나타내며 다양한 DC 전압을 수용합니다. 그러나 먼저 특정 모델을 확인하고 때로는 약간 다를 수 있습니다.

버튼을 연결 디지털 핀 2 . 어떻게 10k를 알 수 있습니까? 저항은 접지에 연결됩니다. 이건 매우 중요합니다! 이것은 풀다운 저항으로 알려져 있으며 Arduino가 버튼을 누를 때 가짜 데이터 또는 간섭을 감지하는 것을 방지합니다. 보드를 보호하는 역할도 합니다. 이 저항을 사용하지 않으면 +5V가 바로 접지됩니다. 이것은 데드 쇼트 Arduino를 죽이는 쉬운 방법입니다.

이 회로를 납땜하는 경우 열 수축 튜브로 연결을 보호하십시오.

너무 많이 가열하지 않도록 하고 회로가 작동하는지 확인한 후에만 가열하십시오. 케이블을 쌍으로 비틀 수도 있습니다. 이렇게 하면 옷을 깔끔하게 유지하고 과도한 스트레스로부터 보호할 수 있습니다.

버튼 테스트

이제 회로를 구축했으므로 이 테스트 코드를 업로드합니다(올바른 보드와 포트를 선택하십시오. 도구 > 보드 그리고 도구 > 포트 메뉴):

const int buttonPin = 2; // the number of the button pin
void setup() {
pinMode(buttonPin, INPUT); // setup button
Serial.begin(9600); // setup serial
}
void loop(){
if(digitalRead(buttonPin) == HIGH) {
Serial.print('It Works');
delay(250);
}
}

업로드가 완료되면 Arduino를 USB를 통해 연결된 상태로 유지하고 직렬 모니터를 엽니다( 오른쪽 상단 > 직렬 모니터 ). 말씀을 보셔야 합니다 효과가있다 버튼을 누를 때마다 나타납니다.

아무 일도 일어나지 않으면 가서 회로를 다시 확인하십시오.

OLED 설정

디스플레이를 구동하려면 두 개의 라이브러리를 설치해야 합니다. 다운로드 Adafruit_SSD1306 및 Github에서 Adafruit-GFX [No Longer Available] 라이브러리를 다운로드하여 라이브러리 폴더에 저장합니다. 라이브러리 폴더가 어디에 있는지 확실하지 않은 경우 이 동일한 디스플레이를 더 자세히 구성하는 내 레트로 게임 자습서를 읽으십시오.

Arduino IDE를 다시 시작하고 다음에서 테스트 스케치를 업로드하십시오. 파일 > 예제 메뉴. 선택하다 아다프루트 SSD1306 그리고 ssd1306_128x64_i2c . 이 코드를 업로드하면(시간이 좀 걸립니다) 디스플레이에 많은 모양과 패턴이 표시되어야 합니다.

아무 일도 일어나지 않으면 연결을 다시 확인하십시오. 확인 후에도 여전히 작동하지 않으면 샘플 코드를 수정해야 합니다.

오디오 파일을 압축하는 방법

이 줄을 변경합니다(시작 부분에서 설정 기능):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

이에:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

이것은 사용 중인 디스플레이에 대한 라이브러리 특정 세부 정보를 알려줍니다. 이제 빌드를 계속할 수 있도록 모든 설정이 완료되어야 합니다.

경우

이것을 브레드보드에 구축하거나 상자에 넣고 싶지 않다면 이 단계를 건너뛸 수 있습니다.

이 상자를 디자인하고 3D 인쇄했습니다. 파일 가져오기 싱기버스 . 3D 프린터가 없어도 걱정하지 마세요 -- 온라인 서비스 3D 허브 그리고 셰이프웨이 온라인 인쇄 서비스를 제공합니다.

이 상자는 나무로 만들거나 플라스틱을 구입하여 쉽게 만들 수 있습니다. 프로젝트 상자 .

뚜껑은 단순한 푸시 핏 디자인이며 하드웨어에 대한 몇 가지 컷이 포함되어 있습니다.

코드

이제 모든 것이 준비되었으므로 코드를 작성할 차례입니다. 작동 방식은 다음과 같습니다. 의사 코드 :

if button is pressed
generate random number
if random number is 20
show graphic
else if random number is 1
show graphic
else
show number

이것이 제대로 작동하려면 난수가 생성되어야 합니다. 이것은 주사위 굴림입니다. Arduino에는 라는 난수 생성기가 있습니다. 무작위의 , 그러나 그것을 사용해서는 안됩니다. 기본적인 무작위 작업에는 충분하지만 전자 주사위에는 충분히 무작위가 아닙니다. 이유는 다소 복잡하지만 관심이 있는 경우 더 읽을 수 있습니다. boallen.com .

다운로드 트루랜덤 도서관 설리치 깃허브에서. 이것을 라이브러리 폴더에 추가하고 IDE를 다시 시작하십시오.

이제 새 파일을 만들고 초기 코드를 설정합니다(또는 GitHub에서 완성된 코드를 가져옴).

#include
#include
#include
#include
#include
Adafruit_SSD1306 display(4);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // setup the OLED
pinMode(buttonPin, INPUT); // setup button
}
void loop() {

}

이 코드는 OLED를 구성하고 새로운 난수 라이브러리와 함께 OLED와 통신하는 데 필요한 모든 라이브러리를 포함합니다. 이제 이것을 메인 루프에 추가하십시오:

if(digitalRead(buttonPin) == HIGH) {
delay(15);
if(digitalRead(buttonPin) == HIGH) {
display.fillScreen(BLACK); // erase the whole display
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 0);
display.println(TrueRandom.random(1, 21)); // print random number
display.display(); // write to display
delay(100);
}
}

이것은 현재로서는 매우 기본적이지만 작동하는 D20입니다. 버튼을 누를 때마다 1에서 20 사이의 임의의 숫자가 화면에 표시됩니다.

이것은 잘 작동하지만 약간 지루합니다. 더 좋게 만들어 봅시다. 두 가지 새로운 방법을 만들고, 드로다이 그리고 지우다 :

void drawDie() {
display.drawRect(32, 0, 64, 64, WHITE);
}

이것들은 화면 중앙에 주사위를 그립니다. D20이나 D12 등을 그려서 이것을 더 복잡하게 만들고 싶을 수도 있지만 기본 6면체 주사위를 그리는 것이 더 간단합니다. 기본 사용법은 다음과 같습니다.

drawDie();

다음으로 메인 루프를 수정하여 더 크고 중앙에 있는 임의의 숫자만 그립니다. 텍스트 크기와 커서를 다음과 같이 변경합니다.

display.setTextColor(WHITE);
display.setCursor(57, 21);

이제 훨씬 좋아 보입니다.

유일한 문제는 9보다 큰 숫자의 경우입니다.

이에 대한 수정은 간단합니다. 10보다 작은 숫자는 커서가 10 이상의 숫자와 다른 위치로 설정됩니다. 다음 줄을 교체하십시오.

비밀번호없이 공장 초기화 아이폰 7
display.setCursor(57, 21);

이것으로:

int roll = TrueRandom.random(1, 21); // store the random number
if (roll <10) {
// single character number
display.setCursor(57, 21);
}
else {
// dual character number
display.setCursor(47, 21);
}

이제 다음과 같이 보입니다.

이제 남은 것은 치명타를 가하거나 놓쳤을 때의 이미지뿐입니다. 관련된 몇 가지 단계가 있지만 충분히 간단한 프로세스입니다.

사용하려는 적합한 이미지를 찾으십시오(디스플레이가 단색으로만 표시되므로 단순할수록 좋습니다). 내가 사용한 이미지는 다음과 같습니다.

이미지 크레디트: publicdomainvectors.org

사용하려는 이미지는 HEX 배열로 변환해야 합니다. 이것은 코드 형식의 이미지 표현입니다. 이를 수행하는 데 사용할 수 있는 도구가 많이 있으며 일부는 OLED 디스플레이용으로 특별히 작성되었습니다. 가장 쉬운 방법은 PicturetoC_Hex 온라인 도구. 필요한 설정은 다음과 같습니다.

Windows 10에서 원치 않는 프로그램을 제거하는 방법

이미지를 업로드하고 코드 형식을 16진수:0x . 세트 사용 에게 모든 그리기 이미지 기능에 대한 흑백 . 다른 모든 옵션은 기본값으로 두십시오. 필요한 경우 여기에서 이미지 크기를 조정할 수 있습니다. 누르다 C 문자열 가져오기 그러면 이미지 데이터가 표시되어야 합니다.

이 생성된 데이터는 1분 안에 필요합니다. 라는 두 개의 함수를 만듭니다. 무승부 그리고 드로스컬 (또는 버전에 적합한 이름). 코드는 다음과 같습니다.

void drawExplosion() {
// store image in EEPROM
static const unsigned char PROGMEM imExp[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x7f,0xff,0xc0,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xf0,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xfb,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x07,0xff,0xff,0xf9,0xff,0xd8,0x00,0x00,0x00,0x3f,0xff,0xf0,0x0f,0x00,0x00,0x00,0x00,0x1f,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x01,0xbf,0xff,0xff,0xff,0x30,0x00,0x00,0x00,0x13,0xf7,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imExp, 64, 62, 1); // draw mushroom cloud
}
void drawSkull() {
// store image in EEPROM
static const unsigned char PROGMEM imSku[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x78,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0xfc,0x00,0x07,0xf8,0x00,0x00,0x00,0x00,0xfe,0x00,0x07,0xf8,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfc,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfe,0x00,0x3f,0xc0,0x03,0xfe,0x00,0x01,0xff,0x81,0xff,0xfc,0x07,0xec,0x00,0x00,0x3f,0xc7,0xff,0xff,0x1f,0xc0,0x00,0x00,0x0f,0xcf,0xff,0xff,0xdf,0x00,0x00,0x00,0x07,0xbf,0xff,0xff,0xee,0x00,0x00,0x00,0x01,0x7f,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1e,0x3f,0xff,0x3f,0xc7,0x80,0x00,0x00,0x1e,0x0c,0x0f,0x00,0x07,0x80,0x00,0x00,0x1e,0x00,0x0f,0x00,0x0f,0x80,0x00,0x00,0x1e,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0f,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0d,0x00,0x30,0xc0,0x1f,0x00,0x00,0x00,0x05,0x80,0x70,0xc0,0x1e,0x00,0x00,0x00,0x05,0xf0,0xe0,0xe0,0x36,0x00,0x00,0x00,0x01,0xff,0xe0,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xc4,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0x9e,0x7f,0xf0,0x00,0x00,0x00,0x00,0xff,0xfe,0x7f,0xc0,0x00,0x00,0x00,0x00,0x01,0xff,0xf8,0x1c,0x00,0x00,0x00,0x03,0xe0,0x3f,0x01,0xbf,0x00,0x00,0x00,0x07,0xa6,0x40,0x09,0x9f,0x80,0x00,0x00,0x1f,0x27,0x5a,0x39,0x9f,0xf8,0x00,0x01,0xff,0x27,0xdb,0x39,0x0f,0xfc,0x00,0x03,0xfe,0x31,0x7f,0x39,0x07,0xfc,0x00,0x03,0xfc,0x10,0x1a,0x02,0x03,0xf8,0x00,0x03,0xf8,0x10,0x00,0x02,0x01,0xf0,0x00,0x01,0xf8,0x10,0x00,0x02,0x01,0xe0,0x00,0x00,0x78,0x10,0x00,0x02,0x00,0xe0,0x00,0x00,0x70,0x30,0x00,0x02,0x00,0x00,0x00,0x00,0x30,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,0x73,0x55,0x63,0x00,0x00,0x00,0x00,0x00,0xf9,0x55,0x4f,0x00,0x00,0x00,0x00,0x00,0x7f,0x14,0x1f,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0xfe,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imSku, 60, 64, 1); // draw skull cloud
}

내가 사용한 이미지를 사용하려면 코드를 복사하십시오. 이전에 생성한 자신의 이미지를 사용하려면 바이트 코드를 임스쿠 그리고 메신저 필요에 따라 어레이.

이러한 이미지가 디스플레이에 표시되는 방식은 다음과 같습니다.

해당 코드의 가장 중요한 부분은 다음 줄입니다.

static const unsigned char PROGMEM imSku[]

이것은 Arduino에게 EEPROM( EEPROM이란 무엇입니까? ) 대신 RAM( RAM에 대한 빠른 가이드 ). 그 이유는 간단합니다. Arduino에는 제한된 RAM이 있으며 이미지를 저장하는 데 모두 사용하면 코드가 실행될 수 있습니다.

메인 수정 만약 1 또는 20이 굴릴 때 이러한 새 그래픽을 표시하는 문. 이미지와 함께 롤링된 숫자도 표시하는 코드 줄에 유의하세요.

if(roll == 20) {
drawExplosion();
display.setCursor(80, 21);
display.println('20');
}
else if(roll == 1) {
display.setCursor(24, 21);
display.println('1');
drawSkull();
}
else if (roll <10) {
// single character number
display.setCursor(57, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}
else {
// dual character number
display.setCursor(47, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}

새로운 롤은 다음과 같습니다.

이것이 코드 측의 전부입니다(모든 것을 건너뛰었다면 GitHub에서 코드를 가져오세요). 이것을 D12, D8 등으로 쉽게 수정할 수 있습니다.

최종 조립

이제 다른 모든 작업이 완료되었으므로 모든 것을 상자에 넣을 차례입니다. 볼트를 과도하게 조이지 않도록 디스플레이를 볼트로 고정합니다. 이것은 아마도 가장 어려운 부분입니다. 디스플레이에 금이 갔으므로 플라스틱 와셔를 사용하는 것이 좋습니다. 나는 몇 개의 사각형을 잘라냈다. 플라스틱 :

작은 너트와 볼트는 연결하기가 까다로울 수 있습니다. 팁: 처음에 너트를 고정하려면 드라이버 끝에 작은 Blu-Tack 조각을 사용하십시오.

버튼을 조이고 배터리를 연결하고 뚜껑을 닫습니다. 전선을 끼우거나 너무 세게 묶으면 단락될 수 있으므로 주의하십시오. 후행 리드의 길이에 따라 일부 절연체로 노출된 연결을 보호해야 할 수도 있습니다(직렬 상자가 잘 작동함).

내부는 다음과 같습니다.

그리고 완성된 제품은 다음과 같습니다.

이제 전자 D20의 자랑스러운 소유자가 되실 것입니다!

어떤 수정을 했습니까? 이미지바꿨어? 의견에 알려주십시오. 우리는 당신이 한 일을보고 싶습니다!

공유하다 공유하다 트위터 이메일 음성 애니메이션에 대한 초보자 가이드

연설에 애니메이션을 적용하는 것은 어려울 수 있습니다. 프로젝트에 대화를 추가할 준비가 되었으면 프로세스를 분석해 드리겠습니다.

다음 읽기
관련 항목
  • DIY
  • 아두이노
  • 보드 게임
  • 전자제품
저자 소개 조 코번(136건의 출판물)

Joe는 영국 링컨 대학교에서 컴퓨터 공학을 전공했습니다. 그는 전문 소프트웨어 개발자이며 드론을 날리거나 작곡을 하지 않을 때 종종 사진을 찍거나 동영상을 제작하는 모습을 볼 수 있습니다.

조 코번이 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.