(Sản phẩm sáng tạo) – Nhằm để tăng thêm tính khiêu chiến cho hai người tham gia trong cờ tướng thì chiếc bàn cờ được thiết kế đặc biệt sau đây sẽ giúp cho họ có thêm động lực thi đấu. Đây là một bàn cờ có một ngăn kéo được điều khiển bởi mạch điện tử Arduino, trong ngăn kéo này có thể chứa một từ khóa bí mật hoặc một vật dụng hoặc một phần thưởng nào đó.
Về cách thức hoạt động là có một công tắc được điều khiển bởi nam châm dán bên dưới mỗi quân cờ. Khi quân cờ được đặt đúng vào vị trí có công tắc từ, công tắc sẽ được mở. Mạch Arduino được lập trình để điều khiển di chuyển của servo gắn với đòn bẩy bên trong hộp cờ và ngăn kéo được mở ra khi công tác mở.
Để khóa lại ngăn kéo, bạn bấm giữ nút bên cạnh hộp bàn cờ tướng rồi đẩy ngăn kéo vào.
Bây giờ, bạn hãy bắt tay vào thực hiện:
Bước 1: Các vật liệu cần chuẩn bị
(x1) Mạch Arduino uno
(x1) Standard Servo
(x6) Bộ chuyển đổi mạch từ Switch-Magnetic Reed Flange (chi tiết tại đây)
(x1) Nguồn Universal 1000mA AC Adapter (chi tiết tại đây)
(x1) M-type Adaptaplug (chi tiết tại đây)
(x1) Grid-Style PC board
(x1) SPST Normally Open Pushbutton (chi tiết tại đây)
(x1) 75dB Piezo Electric Buzzer
(x32) Round Ceramic Magnet
(x7) Điện trở 10kOhm
(x3) chân Header đực
(x2) 36″x24″x1/4″ gỗ plywood (ván ép)
(x1) 1.5″x1.5″x1/8″ gỗ plywood (ván ép)
(x1) 2″x2″x1/2″ gỗ plywood (ván ép)
(x1) quân cờ
Bước 2: Cắt gỗ
Sử dụng máy cắt laser để cắt các hình dạng tạo nên hộp gỗ. Có thể sử dụng giấy các tông cứng để thay thế trong trường hợp không có gỗ ván ép. Bạn có thể tải mô hình bàn cờ Chess Outer Box.eps, Chess Drawer.eps, mỗi tập tin dung lượng 5MB.
Bước 3: Dán keo các mặt hộp của bàn cờ
Bước 4: Gắn nút bấm Pushbutton vào mặt bên của hộp
Hàn sợi dây màu đỏ vào một nhánh của nút và sợi dây màu xanh vào nhánh còn lại.
Khoan một lỗ trên mặt bên của bàn cờ rồi chèn nút bấm vào, rồi vặn chặt ốc vít để cố định nút bấm.
Bước 5: Prep Servo
Bạn gắn chân header đực vào ba socket trên servo.
Bước 6: Gắn bộ chuyển mạch từ (Magnetic Switches)
Bạn lựa chọn một quy tắc cho cuộc chơi trên bàn cờ tướng, rồi xác định khoảng cách của các bộ chuyển mạch từ và vẽ các hình vuông ở mặt dưới của bàn cờ bằng bút chì. Khi xong, bạn bỏ lớp giấy bên dưới bộ chuyển mạch từ rồi dán vào mạch dưới của bàn cờ, nơi mà bạn đã đánh dấu.
Bước 7: Hàn các bộ phận
Hàn các chân của servo vào mạch Grid-Style PC. Hàn dây đến ba chân cắm để gắn vào mạch Arduino (dây màu đỏ 5V, dây màu đen cho ground, dây màu vàng cho pin 8).
Hàn bộ chuyển mạch từ đến mạch PC, một đầu kết nối với dây màu đỏ trên servo, đầu còn lại kết nối với một điện trở 10k, dây màu xanh gắn với chân digital trên mạch Arduino. Sáu công tắc được kết nối với các chân pin 2 đến pin 7 trên Arduino.
Hàn nút bấm Pushbutton đến mạch PC, dây màu đỏ nên hàn vào 5V, dây màu xanh lá cây hàn vào một điện trở rồi dẫn đến chân pin 10 trên mạch Arduino.
Bước 8: Khoan lỗ để lắp đòn bẩy
Bạn tiến hành khoan một lỗ bên trong mảnh gỗ dày khoảng 1/2 mũi khoan. Sử dụng các ốc bạc được cung cấp kèm theo servo để gắn bánh xe vào gỗ, giúp hỗ trợ cho hoạt động đóng hoặc mở ngăn.
Bước 9: Gắn servo với đòn bẩy
Bước 10: Viết chương trình điều khiển mạch Arduino
#include
Servo myservo; // create servo object to control a servo
int pos = 0;// variable to store the servo position
// Pins for magnetic switches
int switchPin1 = 2;
int switchPin2 = 3;
int switchPin3 = 4;
int switchPin4 = 5;
int switchPin5 = 6;
int switchPin6 = 7;int servoPin = 8; // Pin for servo
int buzzerPin = 9; // Pin for buzzer
int resetPin = 10; // Pin for reset buttonboolean closed; // keep track of whether the drawer is currently open
boolean switchOn; // keep track of whether all magnetic switches are open
boolean resetOn; // keep track of whether reset button is pressedvoid setup(){
Serial.begin(9600);
myservo.attach(8); // attaches the servo on pin 8 to the servo object
myservo.write(pos); // Close drawer on servo by lowering lever to position 0
pinMode(switchPin1,INPUT);
pinMode(switchPin2,INPUT);
pinMode(switchPin3,INPUT);
pinMode(switchPin4,INPUT);
pinMode(switchPin5,INPUT);
pinMode(switchPin6,INPUT);
pinMode(resetPin,INPUT);
pinMode(servoPin,OUTPUT);
pinMode(buzzerPin,OUTPUT);
closed = true; // drawer is closed initally
switchOn = false;
resetOn = false;
}void loop(){
switchCheck();
resetCheck();
// If drawer is closed and magnetic switches are open
// raise servo to open drawer
if(closed&&switchOn){
digitalWrite(buzzerPin,HIGH);
delay(200);
digitalWrite(buzzerPin,LOW);
for(pos = 0; pos < 90; pos += 1){ // moves servo lever from 0 degrees to 90 degrees
myservo.write(pos); // in steps of 1 degree
delay(15);
}
closed = false;
}
// If drawer is open and reset is pressed,
// lower servo to zero position to close drawer
if(!closed&&resetOn){
digitalWrite(buzzerPin,HIGH);
delay(200);
digitalWrite(buzzerPin,LOW);
for(pos = 90; pos>=-1; pos-=1){ // moves servo lever from 90 degrees to 0 degrees
myservo.write(pos); // in steps of 1 degree
delay(15);
}
closed = true;
switchOn = false;
}
delay(500);
}// Check if magnetic switches are open
void switchCheck(){
int switchVal1 = digitalRead(switchPin1);
int switchVal2 = digitalRead(switchPin2);
int switchVal3 = digitalRead(switchPin3);
int switchVal4 = digitalRead(switchPin4);
int switchVal5 = digitalRead(switchPin5);
int switchVal6 = digitalRead(switchPin6);// If all of the magnetic switch pins are high
if(switchVal1==HIGH&&switchVal2==HIGH&&switchVal3==HIGH&&
switchVal4==HIGH&&switchVal5==HIGH&&switchVal6==HIGH){
switchOn = true;
}// If all of the magnetic switch pins are low
if(switchVal1==LOW&&switchVal2==LOW&&switchVal3==LOW&&
switchVal4==LOW&&switchVal5==LOW&&switchVal6==LOW){
switchOn = false;
}
}// Check if reset button has been pressed
void resetCheck(){
int resetVal = digitalRead(resetPin);
Serial.println(resetVal);
if(resetVal==HIGH){
resetOn = true;
}
if(resetVal==LOW){
resetOn = false;
}
}
Bước 11: Gắn nam châm vào các quân cờ
Bạn tiến hành gắn các nam châm vào chân của các quân cờ.