3 Attachment(s)
Cách chế tạo Robot chơi đàn Piano bằng một ngón tay
Công nghệ chế tạo Robot hiện nay đã được nâng cấp lên một đỉnh cao hơn, tuy nhiên fpt telecom sẽ hướng dẫn bạn cách chế tạo Robot chơi đàn Piano bằng một ngón tay qua bài viết hướng dẫn như sau
Cách chế tạo Robot chơi đàn Piano bằng một ngón tay
Đầu tiên để chế tạo ta chỉ cần chuẩn bị các công cụ sau đây:
- Hai động cơ servo
- Mạch điều khiển Arduino Uno
- Một lá nhôm tản nhiệt và hai thanh gỗ.
Sau khi đã chuẩn bị đầy đủ các dụng cụ dành cho việc chế tạo ta làm những việc sau đây:
Bước 1: Cắt hai thanh gỗ hoặc ống nhựa PVC
Đầu tiên, bạn cần phải cắt hai thanh gỗ hình trụ tròn (hoặc có thể thay thế bằng ống nhựa PVC). Khi xong, bạn chuẩn bị hai bệ bằng miếng gỗ cao khoảng 1cm rồi dùng súng bắn keo để kết dính hai thanh gỗ lên bệ gỗ.
Sau đó, bạn cắt một tấm gỗ mỏng (gỗ ván ép) rồi khoan ốc vít cố định tấm nhôm lên tấm gỗ và gắn động cơ servo giống như trong hình.
Đính kèm 7881
Bước 2: Dùng đũa để làm “ngón tay” cho robot chơi đàn
Để làm ngón tay bấm các phím trên đàn piano, bạn sử dụng những chiếc đũa bếp rối cắt ngắn theo kích thước mong muốn, và khoan những lỗ trên đũa phù hợp để kết nối chúng lại với nhau, cũng như gắn chúng vào động cơ servo.
Đính kèm 7882
Bước 3: Kết nối servo với mạch Arduino
Đính kèm 7883
Bạn kết nối trực tiếp hai động cơ servo với mạch Arduino Uno 5vcc, gnd và chân 11, chân 13. Rồi chạy trên phần mềm điều khiển Arduino dòng lệnh sau đây:
#include servo.h
Servo servo1,servo2,servo3; //int potPin = 2; // select the input pin for the potentiometer int ledPin = 13; // select the pin for the LED
//Analog read pins const int buttonPin = 2;
void myServo(int curAngle,int newAngle,int angleInc,int incDelay,int servoNum) { if (curAngle < newAngle) { for(int angle=curAngle;angle < newAngle;angle += angleInc) { if (servoNum == 1) servo1.write(angle); if (servoNum == 2) servo2.write(angle); if (servoNum == 3) servo3.write(angle); delay(incDelay); } } else if (curAngle > newAngle) { for(int angle=curAngle;angle > newAngle;angle -= angleInc) { if (servoNum == 1) servo1.write(angle); if (servoNum == 2) servo2.write(angle); if (servoNum == 3) servo3.write(angle); delay(incDelay); } } }
void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT //pinMode(buttonPin,INPUT); servo1.attach(9); delay(10); servo1.write(110);
servo3.attach(11); delay(10); servo3.write(71); delay(5000); randomSeed(analogRead(0)); } void playKey(int slidePos) { servo3.write(slidePos); delay(300); servo1.write(85); delay(100); servo1.write(110); delay(300); } void loop() { //Serial.print(” delay val= “);Serial.print(val);Serial.print(” angle val= “);Serial.println(valPot2); digitalWrite(ledPin,HIGH); //myServo(90,5,1,1,3); /* playKey(165);//f delay(500); playKey(149);//g playKey(138);//a playKey(127);//b playKey(116);//c playKey(105);//d playKey(94);//e playKey(83);//f playKey(72);//g playKey(61);//a playKey(50);//b playKey(28);//c playKey(15);//d */ // cetk // playKey(71); playKey(60); playKey(83); playKey(170); delay(400); playKey(116); delay(2000); // avengers // playKey(72); playKey(94); playKey(83); playKey(50); playKey(15); playKey(28); playKey(72); playKey(94); playKey(83); delay(2000); //amazing grace playKey(160); playKey(116); playKey(94); playKey(94); playKey(105); playKey(116); playKey(138); playKey(149); delay(2000); //indiana jones playKey(138); playKey(127); playKey(116); playKey(83); delay(500); playKey(149); playKey(138); playKey(127); delay(500); playKey(116);//c playKey(105);//d playKey(94);//e playKey(50);//c playKey(105);//d playKey(94);//e playKey(83);//f playKey(72);//g playKey(61);//a delay(2000); //gilligan playKey(138);//f playKey(105);//g playKey(61);//a playKey(61);//f playKey(61);//g playKey(72);//a playKey(94);//f playKey(116);//g delay(500); playKey(138);//f playKey(105);//g playKey(61);//a playKey(61);//f playKey(61);//g playKey(72);//a delay(500); playKey(138);//f playKey(105);//g playKey(61);//a playKey(61);//f playKey(61);//g playKey(72);//a playKey(28);//a delay(500); playKey(72);//a playKey(83);//a delay(500); playKey(94);//a playKey(116);//a playKey(105);//a delay(2000); // somewhere over the rainbow
playKey(127); delay(300); playKey(50); delay(300); playKey(61);//f delay(300); playKey(83); playKey(72);//g playKey(61);//a playKey(50);//b delay(200); playKey(125);delay(300); playKey(72);delay(300); playKey(83); cli(); /*playKey(149);//g playKey(138);//a playKey(127);//b playKey(116);//c playKey(105);//d playKey(94);//e playKey(83);//f playKey(72);//g playKey(61);//a playKey(50);//b playKey(28);//c playKey(15);//d */ }
Khi bạn đã tiến hành chạy dòng lệnh xong, bạn có thể quan sát được hoạt động của con robot và chỉnh sửa những chiếc đũa sao cho phù hợp với yêu cầu thiết kế.