Máy Arcade In Được (Printable Arcade machine)
Mô hình Printable Arcade machine dạng Plinko: thả puck từ trên xuống, nảy qua các chốt và rơi vào ô tính điểm. Kết hợp cơ khí đơn giản với Arduino và linh kiện điện tử, kèm hướng dẫn lắp ráp từng bước.
Mô tả
- Giới thiệu
Máy arcade Plinko là một trò chơi vui, mang tính tương tác cao: người chơi thả một puck từ phía trên và xem nó nảy qua một bãi chốt (pegs) trước khi rơi vào ô tính điểm. Được thiết kế theo kiểu trải nghiệm arcade “tự tay làm”, máy này kết hợp cơ cấu cơ khí đơn giản với các linh kiện điện tử để theo dõi lượt chơi và tăng mức độ tương tác. Mô hình được lắp từ các bộ phận đã chia rõ ràng và có hướng dẫn từng bước cho quá trình lắp ráp, phù hợp để học tập, trình diễn hoặc giải trí.
- Linh kiện điện
-
Arduino R3 - hàng chính hãng hoặc bản sao (1 cái)
-
28BYJ-48 5V - motor kèm mạch điều khiển (1 cái)
-
Digital Distance Sensor - (1 cái)
-
LED diode 3mm - màu bất kỳ (3 cái)
-
Buzzer - tuỳ chọn (1 cái)
-
Jumper wires - dài 30cm hoặc hơn (M-M, M-F)
- Phần tuỳ chọn
- Plexiglas - dày 3mm
-
Code cho Arduino
#include "pitches.h" int melody[] = { NOTE_B4, NOTE_B5, NOTE_FS5, NOTE_DS5, NOTE_B5, NOTE_FS5, NOTE_DS5, NOTE_C5, NOTE_C6, NOTE_G6, NOTE_E6, NOTE_C6, NOTE_G6, NOTE_E6, }; int durations[] = { 16, 16, 16, 16, 32, 16, 8, 16, 16, 16, 16, 32, 16, 8, }; const int in1 = 3; const int in2 = 0; const int in3 = 1; const int in4 = 2; int LED1 = 13; int LED2 = 11; int LED3 = 12; int BUZZER = 10; const int sensor = 4; bool sensorstatement = false; int counter = 0; int speed = 1; // void setup() { // put your setup code here, to run once: pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(BUZZER, OUTPUT); } void loop() { // put your main code here, to run repeatedly: if (digitalRead(sensor) == false) { counter = counter + 1; delay(1000); } switch (counter){ case 0: digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); break; case 1: digitalWrite(LED1,HIGH); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); break; case 2: digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,LOW); break; case 3: digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); for(int i=0;i<512;i++){ Rotationinthedirection(); } int size = sizeof(durations) / sizeof(int); for (int note = 0; note < size; note++) { //to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int duration = 1000 / durations[note]; tone(BUZZER, melody[note], duration); //to distinguish the notes, set a minimum time between them. //the note's duration + 30% seems to work well: int pauseBetweenNotes = duration * 1.30; delay(pauseBetweenNotes); //stop the tone playing: noTone(BUZZER); } counter = 0; break; } } void Rotationinthedirection() { step1(); step2(); step3(); step4(); step5(); step6(); step7(); step8(); } void RotationAgainstDirection() { step8(); step7(); step6(); step5(); step4(); step3(); step2(); step1(); } // každý krok obsahuje výrobcem dané pořadí // pro správné spínání motoru a následnou // pauzu, kterou určujeme rychlost otáčení void step1(){ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(speed); } void step2(){ digitalWrite(in1, HIGH); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(speed); } void step3(){ digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(speed); } void step4(){ digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(speed); } void step5(){ digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(speed); } void step6(){ digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, HIGH); delay(speed); } void step7(){ digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(speed); } void step8(){ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(speed); }
Giấy phép
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!