Đây là bài viết đầu tiên của mình nên có sai sót gì mong mọi người đóng góp
Bạn đang xem: Cách làm oto dieu khien
Trước tiên ngắm mạch nguyên lí nha (Máy cài fritzing bị lỗi nên dùng tạm phần mềm Paint :D):
Ráp bánh vào hộp số.
Gắn bánh vào khung xe
Thêm cái bánh đa hướng vào
Cho ông vua lên kiệu
Bà hoàng hậu cũng đu theo :D
Cậu hoàng tử của ta đây mà
"Mình sài con 1838 nha".
Cho lên kiệu luôn
Nối 2 motor với L298, nếu sử dụng 4 motor thì nối song song 2 motor của 1 luồng lại nha.
Nối 4 chân In1, In2, In3, In4 với earlsdaughter.com. (Mình nối in1 - D6, in2 - D7, in3 - D8, in4 - D9)
Nối con mắt thu hồng ngoại với earlsdaughter.com, (Mình nối chân OUT với D12). Các bạn lưu ý, các mắt thu hồng ngoại khác nhau có thể có sơ đồ chân khác nhau, nên để chắc chắn thì nên xem datasheet của nó.
Xem thêm: Chuẩn Mực Kế ToáN Số 14 Doanh Thu Và Thu Nhập Khác, Sự Khác Biệt Giữa Thu Nhập Và Doanh Thu 2021
Đây là sơ đồ chân của con 1838
Lắp nguồn cho L298.
Mình nối chân 12V vào cực dương nguồn công suất, chân GND vào cực âm nguồn công suất và cực âm earlsdaughter.com. Nếu sử dụng nguồn chung cho cả earlsdaughter.com và L298 thì nối chân 5V vào chân Vin earlsdaughter.com(Mình sài 2 nguồn riêng nên bỏ trống).
Cấp nguồn cho earlsdaughter.com, mình sài pin 9V.
+ 9V - Vin
- 9V - GND
Thêm cái remote tv nữa là xong phần cứng.
Infrare remote control ( Điều khiển bằng hồng ngoại) Với earlsdaughter.com
Một bài viết của anh NTP_PRO
Ok, sau khi tra mã nút và cài thư viện ta bắt đầu lập trình:
#define ir 12#define inA1 6#define inA2 7#define inB1 8#define inB2 9#include IRrecv irrecv(ir);decode_results results;void setup(){ irrecv.enableIRIn(); pinMode(inA1,OUTPUT); pinMode(inA2,OUTPUT); pinMode(inB1,OUTPUT); pinMode(inB2,OUTPUT);}void translateIR(){ switch(results.value) { case 0xC03E: robotMove(1); break; case 0xC05E: robotMove(0); break; case 0xC0DE: robotMove(2); break; case 0xC05A: robotMove(3); break; case 0xC0DA: robotMove(4); break; case 0xC01E: robotMove(6); break; case 0xC038: robotMove(5); break; }}void robotMove(int chedo){ switch(chedo) { case 0: //Dung motorMove(inA1,inA2,0); motorMove(inB1,inB2,0); break; case 1: //Di thang motorMove(inA1,inA2,1); motorMove(inB1,inB2,1); break; case 2: //Lui motorMove(inA1,inA2,2); motorMove(inB1,inB2,2); break; case 3: //Re phai motorMove(inA1,inA2,0); motorMove(inB1,inB2,1); break; case 4: //Re trai motorMove(inA1,inA2,1); motorMove(inB1,inB2,0); break; case 5: //Xoay phai motorMove(inA1,inA2,2); motorMove(inB1,inB2,1); break; case 6: //Xoay trai motorMove(inA1,inA2,1); motorMove(inB1,inB2,2); break; }}void motorMove(int in1,int in2, byte action){ switch(action) { case 0: //Dung digitalWrite(in1,0); digitalWrite(in2,0); break; case 1: //Chieu thu 1 digitalWrite(in1,1); digitalWrite(in2,0); break; case 2: //Chieu thu 2 digitalWrite(in1,0); digitalWrite(in2,1); break; }}void loop(){ if (irrecv.decode(&results)) { translateIR(); delay(200); irrecv.resume(); }}