Đồ án môn học 2 Thiết kế KEYBOARD GAME

65 13 0
Đồ án môn học 2 Thiết kế KEYBOARD GAME

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trên thị trường có nhiều tay cầm kết nối khơng dây chơi game, chúng thiết kế nhỏ gọn phù hợp với người chơi Tuy nhiên thường tay cầm có giá thành cao, kèm theo chơi số game định, game thường người chơi hay cấu hình game theo ý tay cầm khơng có tính thay đởi cấu hình để phù hợp cấu hình game mà người chơi cấu hình trước điều phần dẫn đến cảm giác khó chịu chơi game Vì lý này, nhóm thực chọn đề tài “ THIẾT KẾ KEY BOARD GAME"

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN – ĐIỆN TỬ BỘ MƠN KỸ THUẬT MÁY TÍNH – VIỄN THÔNG ===== ● ===== ĐỒ ÁN MÔN HỌC THIẾT KẾ KEYBOARD GAME GVHD : PGS.TS Phan Văn Ca SVTH : Đào Minh Thuấn 15119138 Nguyễn Văn Phú 15119118 Ngành : Cơng nghệ kỹ thuật máy tính Tp Hồ Chí Minh, tháng năm 2019 PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN Họ tên Sinh viên: Đào Minh Thuấn MSSV: 15119138 Nguyễn Văn Phú MSSV: 15119118 Ngành: Công nghệ kỹ thuật máy tính Tên đề tài: Thiết kế KeyBoard Game Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng Giảng viên phản biện năm 2019 MỤC LỤC DANH MỤC HÌNH i DANH MỤC BẢNG ii LỜI MỞ ĐẦU - iii LỜI CẢM ƠN - iv DANH SÁCH CÁC TỪ VIẾT TẮT v CHƯƠNG : TỔNG QUAN 1.1 Tình hình nghiên cứu 1.2 Lý chọn đề tài 1.3 Mục tiêu đề tài 1.4 Đối tượng nghiên cứu 1.5 Phương pháp nghiên cứu - 1.6 Bố cục đồ án - CHƯƠNG : CƠ SỞ LÝ THUYẾT - 2.1 Tổng quan chuẩn truyền I2C 2.2 Tổng quan chuẩn truyền UART 2.3 Tổng quan RTOS 2.4 Ngôn ngữ PYTHON 2.5 Tương tác với sở liệu 2.6 Chip ST32F103C8T6 - 10 2.7 Module Joystick - 11 2.8 Module MPU6050 12 2.9 Mạch sạc TP4056 - 13 2.10 Module Bluetooth HC05 - 14 2.11 IC nguồn LM1117T 3v3 - 16 CHƯƠNG : THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 17 3.1 Giới thiệu tóm tắt 17 3.1.1 Yêu cầu chung hệ thống 17 3.1.2 Đặc tả hệ thống 17 3.2 Sơ đồ khối - 17 3.3 Thiết kế phần cứng - 21 3.3.1 Khối cảm biến - 21 3.3.2 Khối giao tiếp 21 3.3.3 Khối nguồn - 22 3.3.4 Khối xử lý trung tâm 22 3.4 Thiết kế phần mềm - 23 3.4.1 Các thành phần 23 3.4.2 Lưu đồ giải thuật phần mềm 24 CHƯƠNG 4: KẾT QUẢ THỰC HIỆN 27 4.1 Phần cứng - 27 4.1.1 Các công cụ sử dụng 27 4.1.2 Schematic 27 4.1.3 Mạch PCB 28 4.2 Giao diện phần mềm máy tính - 28 4.3 Database - 29 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 30 5.1 Kết luận 30 5.2 Hướng phát triển 30 TÀI LIỆU THAM KHẢO - 31 PHỤ LỤC - 32 DANH MỤC HÌNH Hình 2.1 Giao tiếp I2C. Hình 2.2 Giao tiếp UART - Hình 2.3.1 CPU xử lý Task - Hình 2.3.2 Trạng thái Task - Hình 2.4 Logo Python - Hình 2.5 Ví dụ sở liệu - Hình 2.6 STM32F103C8T6 Pinout 10 Hình 2.7 Module Joystick - 12 Hình 2.8 Module MPU6050. 12 Hình 2.9 Mạch sạc TP4056 - 13 Hình 2.10 Module HC05 14 Hình 2.11 IC nguồnLM1117T - 16 Hình 3.1 Sơ đồ khối hệ thống 18 Hình 3.2 Lưu đồ 25 Hình 4.1.1 Schematic - 27 Hình 4.1.2 PCB 28 Hình 4.1.3 Mơ hình hồn thiện 28 Hình 4.2 Giao diện phần mềm 29 Hình 4.3 Giao diện database - 29 i DANH MỤC BẢNG Bảng 3.2.1 So sánh dòng vi xử lý - 19 Bảng 3.2.2 So sánh công nghệ không dây. 20 ii LỜI MỞ ĐẦU Trên thị trường có nhiều tay cầm kết nối khơng dây chơi game, chúng thiết kế nhỏ gọn phù hợp với người chơi Tuy nhiên thường tay cầm có giá thành cao, kèm theo chơi số game định, game thường người chơi hay cấu hình game theo ý tay cầm khơng có tính thay đởi cấu hình để phù hợp cấu hình game mà người chơi cấu hình trước điều phần dẫn đến cảm giác khó chịu chơi game Vì lý này, nhóm thực chọn đề tài “ THIẾT KẾ KEY BOARD GAME" trình thực đề tài này, khơng tránh khỏi sai sót kiến thức có giới hạn, tham khảo từ nhiều nguồn tài liệu từ internet, sách, báo,… Rất mong nhận đóng góp quý thầy cô bạn bè để đề tài thực thành công phát triển iii LỜI CẢM ƠN Đầu tiên, nhóm thực đề tài xin gửi lời cảm ơn sâu sắc chân thành đến thầy PHAN VĂN CA tận tình giúp đỡ, bảo, hướng dẫn nhóm thực suốt q trình thực đề tài Trong thời gian làm việc với thầy, nhóm khơng tiếp thu thêm nhiều kiến thức bở ích mà cịn học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc hiệu thầy Đây điều cần thiết cho nhóm q trình học tập cơng tác sau Nhóm thực xin chân thành cảm ơn bạn ngành cơng nghệ kỹ thuật máy tính lớp 151191A , ln đồng hành, giúp đỡ để nhóm thực đề tài thành cơng Q trình biên soạn báo cáo khó tránh hồn tồn sai phạm Kính mong nhận lời góp ý mang tính xây dựng từ người Người thực Đào Minh Thuấn Nguyễn Văn Phú iv DANH SÁCH CÁC TỪ VIẾT TẮT TỪ VIẾT TẮT I2C Ý NGHĨA TỪ TIẾNG ANH Inter-Integrated Circuit Giao tiếp thiết bị chủ với nhiều thiết bị tớ UART Universal Asynchronous Bộ truyền nhận nối tiếp bất đồng Receiver Transmitter ARM Acorn RISC Machine Là loại cấu trúc vi xử lý 32 bit kiểu RISC (thuộc kiến trúc Harvard, tập lệnh rút gọn) API Application Interface Programming Giao diện lập trình ứng dụng v ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA CHƯƠNG : TỔNG QUAN 1.1 Tình hình nghiên cứu Hiện nay, xã hội ngày phát triển khoa học kỹ thuật ngày tiên tiến nhu cầu kỹ thuật quan tâm phát triển Đặc biệt cơng trình nghiên cứu khoa học nhằm thiết kế sản phẩm ứng dụng có ý nghĩa thiết thực vào sống 1.2 Lý chọn đề tài Trong trình học tập chúng em học nhiều loại vi điều khiển như: avr, pic, 8051,…Và hết chip Arm cụ thể dịng arm cortex m3 đại diện chip STM32F103C8T6 Ngồi làm việc với nhiều module, cảm biến Và thông qua đồ án môn học này, nhóm thực muốn tạo sản phẩm sử dụng tính chip STM32F103C8T6 module, khả hàn chip dán Nên nhóm định chọn đề tài: “Thiết kế Keyboard Game” 1.3 Mục tiêu đề tài Đề tài triển khai nghiên cứu hướng tới mục tiêu sau:  Theo dõi giá trị góc nghiêng thơng qua cảm biến MPU6050, tử góc nghiêng bắt đầu gửi lệnh tương ứng  Điều khiển led RGB  Điều khiển module Joystick  Điều khiển nút nhấn  Gửi chuỗi điều khiển thông qua Bluetooth  Phần mềm máy tính sau nhận chuỗi tiến hành gửi lệnh điều khiển tương ứng để điều khiển game  Phần mềm thiết lập cấu hình game lưu thiết lập database ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA } } osDelay(1); } /* USER CODE END JOYSTICK */ } //MPU6050 void MPU6050(void const * argument) { /* USER CODE BEGIN MPU6050 */ /* Infinite loop */ for(;;) { osDelay(2); SD_MPU6050_ReadTemperature(&hi2c1,&mpu1); float temper = mpu1.Temperature; //ĐỌC GIÁ TRỊ GÓC QUAY VÀ LƯU VÀO BIẾN TƯƠNG ỨNG VỚI TRỤC SD_MPU6050_ReadGyroscope(&hi2c1,&mpu1); g_x = mpu1.Gyroscope_X; g_y = mpu1.Gyroscope_Y; g_z = mpu1.Gyroscope_Z; SD_MPU6050_ReadAccelerometer(&hi2c1,&mpu1); //ĐỌC GIÁ TRỊ GIA TỐC GÓC VÀ LƯU VÀO BIẾN TƯƠNG ỨNG VỚI TRỤC a_x = mpu1.Accelerometer_X; a_y = mpu1.Accelerometer_Y; a_z = mpu1.Accelerometer_Z; // TỪ GIÁ TRỊ NÀY TÍNH RA GĨC NGHIÊNG Acc_angle_x = (atan((a_y)/sqrt(pow((a_x),2) + pow((a_z),2)))*rad_to_deg); //KIỂM TRA NẾU GÓC NGHIÊNG LỚN HƠN 30 ĐỘ THÌ TRUYỀN CHUỖI ĐIỀU KHIỂN RP if (Acc_angle_x > 30) { len1 = sprintf((char *)Buffer, "RP|"); HAL_UART_Transmit(&huart2, (uint8_t*)Buffer, len1, 1000); sp = 1; } //KIỂM TRA NẾU GĨC NGHIÊNG NHỎ HƠN -30 ĐỘ THÌ TRUYỀN CHUỖI ĐIỀU KHIỂN LP else if (Acc_angle_x Instance == TIM4) { HAL_IncTick(); } } void _Error_Handler(char *file, int line) { while(1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line) { } #endif /* USE_FULL_ASSERT */ Chương trình phần mềm máy tính from tkinter import * import calendar import time from tkinter.ttk import Combobox import sqlite3 from threading import Thread 44 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA import pyautogui import serial bt1 = bt2 = bt3 = bt4 = bt5 = bt6 = bt_up = bt_down = bt_right = bt_left = up ='W' right ='D' down ='S' left='A' command = "" val_btn1 = 'U' val_btn2 = 'I' val_btn3 = 'O' val_btn4 = 'J' val_btn5 = 'K' val_btn6 = 'L' val_RP='right' val_LP='left' RP=0 LP=0 def doSomething(): global global global global global global global bt1,bt2,bt3,bt4,bt5,bt6,bt_down,bt_left bt_right,bt_up up,right,down,left val_btn1,val_btn2,val_btn3,val_btn4,val_btn5,val_btn6 val_LP,val_RP command LP,RP sr = serial.Serial('com8',baudrate=115200,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,timeout=0) time.sleep(3) while(True): #try: # a = sr.read().decode('utf-8') command = command + a if (a == '|'): print(command[0:len(command)-1]) command = command[0:len(command)-1] #Button1 nhấn if(command == "1U" ): if(bt1 == 0): pyautogui.keyDown(val_btn1) #Holds down the val_btn1 key bt1 = 1; 45 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA #Button1 nhả elif(command == "1D" ): if(bt1 == 1): pyautogui.keyUp(val_btn1) #Lets go of the val_btn1 key bt1 =0; #Button2 nhấn elif(command == "2U" ): if(bt2 == 0): pyautogui.keyDown(val_btn2) bt2 = 1; #Button2 nhả elif(command == "2D" ): if(bt2 == 1): pyautogui.keyUp(val_btn2) bt2 =0; #Button3 nhấn elif(command == "3U" ): if(bt3 == 0): pyautogui.keyDown(val_btn3) bt3 = 1; #Button3 nhả elif(command == "3D" ): if(bt3 == 1): pyautogui.keyUp(val_btn3) bt3 =0; #Button4 nhấn elif(command == "4U" ): if(bt4 == 0): pyautogui.keyDown(val_btn4) bt4 = 1; #Button4 nhả elif(command == "4D" ): if(bt4 == 1): pyautogui.keyUp(val_btn4) bt4 =0; #Button5 nhấn elif(command == "5U" ): if(bt5 == 0): pyautogui.keyDown(val_btn5) bt5 = 1; #Button5 nhả elif(command == "5D" ): if(bt5 == 1): pyautogui.keyUp(val_btn5) bt5 =0; #Button6 nhấn elif(command == "6U" ): if(bt6 == 0): pyautogui.keyDown(val_btn6) bt6 = 1; #Button6 nhả 46 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA elif(command == "6D" ): if(bt6 == 1): pyautogui.keyUp(val_btn6) bt6 =0; #Joystick UP elif(command == "UP"): if(bt_up == ): pyautogui.keyDown(up) bt_up = if(bt_left==1): pyautogui.keyUp(left) bt_left = if(bt_right == 1): pyautogui.keyUp(right) bt_right = if(bt_down == 1): pyautogui.keyUp(down) bt_down = #Joystick DOWN elif(command == "DW"): if(bt_down == ): pyautogui.keyDown(down) bt_down = if(bt_left==1): pyautogui.keyUp(left) bt_left = if(bt_right == 1): pyautogui.keyUp(right) bt_right = if(bt_up==1): pyautogui.keyUp(up) bt_up = #Joystick RIGHT elif(command == "RT"): if(bt_right == ): pyautogui.keyDown(right) bt_right = if(bt_up==1): pyautogui.keyUp(up) bt_up = if(bt_down == 1): pyautogui.keyUp(down) bt_down = if(bt_left==1): pyautogui.keyUp(left) bt_left = #Joystick LEFT elif(command == "LT"): if(bt_left == ): pyautogui.keyDown(left) bt_left = if(bt_up==1): pyautogui.keyUp(up) bt_up = if(bt_down == 1): pyautogui.keyUp(down) bt_down = 47 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA if(bt_right == 1): pyautogui.keyUp(right) bt_right = #Joystick DOWN + LEFT elif(command == "DL"): if(bt_left == ): pyautogui.keyDown(left) bt_left = if(bt_down == ): pyautogui.keyDown(down) bt_down = if(bt_up==1): pyautogui.keyUp(up) bt_up = if(bt_right == 1): pyautogui.keyUp(right) bt_right = #Joystick UP + LEFT elif(command == "UL"): if(bt_left == ): pyautogui.keyDown(left) bt_left = if(bt_up == ): pyautogui.keyDown(up) bt_up = if(bt_down==1): pyautogui.keyUp(down) bt_down = if(bt_right == 1): pyautogui.keyUp(right) bt_right = #Joystick UP + RIGHT elif(command == "UR"): if(bt_right == ): pyautogui.keyDown(right) bt_right = if(bt_up == ): pyautogui.keyDown(up) bt_up = if(bt_down==1): pyautogui.keyUp(down) bt_down = if(bt_left == 1): pyautogui.keyUp(left) bt_left = #Joystick DOWN + RIGHT elif(command == "DR"): if(bt_right == ): pyautogui.keyDown(right) bt_right = if(bt_down == ): pyautogui.keyDown(down) bt_down = if(bt_up==1): pyautogui.keyUp(up) bt_up = if(bt_left == 1): 48 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA pyautogui.keyUp(left) bt_left = #Joystick nothing elif(command == "ST"): if(bt_right == 1): pyautogui.keyUp(right) bt_right = if(bt_down==1): pyautogui.keyUp(down) bt_down = if(bt_up==1): pyautogui.keyUp(up) bt_up = if(bt_left == 1): pyautogui.keyUp(left) bt_left = #MPU sensor right elif(command == "RP"): if(RP == 0): pyautogui.keyDown(val_RP) RP = if(LP == 1): pyautogui.keyUp(val_LP) LP = #MPU sensor left elif(command == "LP"): if(LP == 0): pyautogui.keyDown(val_LP) LP = if(RP == 1): pyautogui.keyUp(val_RP) RP = #MPU sensor stop elif(command == "SP"): if(RP == 1): pyautogui.keyUp(val_RP) RP = if(LP == 1): pyautogui.keyUp(val_LP) LP = command = "" #except: # print("error") # time.sleep(1) def runThread(): myThread = Thread(target=doSomething) myThread.start() runThread() root = Tk() root.title("DRIVER GAME") root.resizable(height=True,width=True) chieu cao cua cua so root.minsize(height=545,width=880) root.update_idletasks() width = root.winfo_width() # Đat ten cho cua so # cho phep thay doi chieu rong va #xat chieu cao, chieu rong cua so 49 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA height = root.winfo_height() x = (root.winfo_screenwidth() // 2) - (width // 2) y = (root.winfo_screenheight() // 2) - (height // 2) root.geometry('{}x{}+{}+{}'.format(width, height, x, y)) Label(root,text="SAVE MY WORLD",bg="#009896",font="NONE 15").pack(fill=X) #lựa chọn game thiết lập hiển thị cài đặt( mặc đinh ban đầu lần cập nhật sau cùng) def customizeGame(): global game,var1 game = game + lable_blu_2 = Label(frame_mid, width="11", height="3", bg="#A1C1DA") lable_blu_2.grid(row=6, column=2, sticky="WE") if game == 1: lable_blu_2["text"] = "LOL" var1=IntVar(value=1) elif game == 2: lable_blu_2["text"] = "FIFA" var1 = IntVar(value=1) elif game == 3: lable_blu_2["text"] = "SAMURAI" var1 = IntVar(value=1) elif game == 4: lable_blu_2["text"] = "RACING" var1 = IntVar(value=0) elif game == 5: game = Checkbutton(frame_1, text="IS MPU ACTIVE ?", height="3", width="45", variable=var1, bg="#A1C1DA").place(x=0,y=320) if lable_blu_2["text"]== "LOL": conn = sqlite3.connect('tutorial_rac26_1.db') c = conn.cursor() c.execute( "SELECT GAME,TIME,LED,MPU,BUTTON1,BUTTON2,BUTTON3,BUTTON4,BUTTON5,BUTTON6" ",LEFT_UP,UP,UP_RIGHT,RIGHT,RIGHT_DOWN,DOWN,DOWN_LEFT,LEFT from stuffToPlot where GAME='LOL'") elif lable_blu_2["text"]== "FIFA": conn = sqlite3.connect('tutorial_rac26_1.db') c = conn.cursor() c.execute( "SELECT GAME,TIME,LED,MPU,BUTTON1,BUTTON2,BUTTON3,BUTTON4,BUTTON5,BUTTON6" ",LEFT_UP,UP,UP_RIGHT,RIGHT,RIGHT_DOWN,DOWN,DOWN_LEFT,LEFT from stuffToPlot where GAME='FIFA'") elif lable_blu_2["text"] == "SAMURAI": conn = sqlite3.connect('tutorial_rac26_1.db') c = conn.cursor() c.execute( "SELECT GAME,TIME,LED,MPU,BUTTON1,BUTTON2,BUTTON3,BUTTON4,BUTTON5,BUTTON6" ",LEFT_UP,UP,UP_RIGHT,RIGHT,RIGHT_DOWN,DOWN,DOWN_LEFT,LEFT from stuffToPlot where GAME='SAMURAI'") elif lable_blu_2["text"] == "RACING": conn = sqlite3.connect('tutorial_rac26_1.db') c = conn.cursor() c.execute( 50 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA "SELECT GAME,TIME,LED,MPU,BUTTON1,BUTTON2,BUTTON3,BUTTON4,BUTTON5,BUTTON6" ",LEFT_UP,UP,UP_RIGHT,RIGHT,RIGHT_DOWN,DOWN,DOWN_LEFT,LEFT from stuffToPlot where GAME='RACING'") for row in c: entry_btn1.delete(0, END) # xóa ki tự ô entry entry_btn1.insert(0,row[4]) #btn1 # chèn giá trị chứa row vào entry entry_btn2.delete(0, END) entry_btn2.insert(0,row[5]) #btn2 entry_btn3.delete(0, END) entry_btn3.insert(0,row[6]) ##btn3 entry_btn4.delete(0, END) entry_btn4.insert(0,row[7]) #btn4 entry_btn5.delete(0, END) entry_btn5.insert(0,row[8]) #btn5 entry_btn6.delete(0, END) entry_btn6.insert(0,row[9]) #btn6 entry_1.delete(0,END) entry_1.insert(0,row[10]) #lu entry_2.delete(0, END) entry_2.insert(0, row[11]) #up entry_3.delete(0, END) entry_3.insert(0, row[12]) #ur entry_4.delete(0, END) entry_4.insert(0, row[13]) #right entry_5.delete(0, END) entry_5.insert(0, row[14]) #rd entry_6.delete(0, END) entry_6.insert(0, row[15]) #down entry_7.delete(0, END) entry_7.insert(0, row[16]) #DL entry_8.delete(0, END) entry_8.insert(0, row[17]) #LEFT # hiệu ứng led tương ứng với biến def ledeffect(): global port,led port=combo.get() if port == "ĐỎ": led=1 elif port == "CAM": led=2 elif port == "VÀNG": led=3 elif port == "LỤC": led=4 elif port == "LAM": led=5 elif port == "CHÀM": led=6 elif port == "TÍM": led=7 elif port == "TRẮNG": led=8 elif port == "ĐỔI MÀU": led=9 51 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA elif port == "TẮT LED": led=10 # Hàm để tạo in #1 biến button , biến joystick, biến port giá trị port tùy thuộc vào chọn giao diện #2 tạo database, lưu liệu sqlite def fn2(): #xủ lý fram_mid global val_btn1, val_btn2, val_btn3, val_btn4, val_btn5, val_btn6,tmp,port,led localtime = time.asctime(time.localtime(time.time())) lable_blu_6["text"] = localtime #xử lý frame_2 val_btn1 = entry_btn1.get() val_btn2 = entry_btn2.get() val_btn3 = entry_btn3.get() val_btn4 = entry_btn4.get() val_btn5 = entry_btn5.get() val_btn6 = entry_btn6.get() print("BUTTON =",val_btn1) print("BUTTON =",val_btn2) print("BUTTON =",val_btn3) print("BUTTON =",val_btn4) print("BUTTON =",val_btn5) print("BUTTON =",val_btn6) #Xử lý frame_1 lu = entry_1.get() up = entry_2.get() ur = entry_3.get() right = entry_4.get() rd = entry_5.get() down = entry_6.get() dl = entry_7.get() left = entry_8.get() port= combo.get() ledeffect() print("LU = ", lu) print("UP = ", up) print("UR = ", ur) print("RIGHT = ", right) print("RD = ", rd) print("DOWN = ", down) print("DL = ", dl) print("LEFT = ", left) print("port, LED :" ,port,led) print("var1 = ",str(var1.get())) # database conn = sqlite3.connect('tutorial_rac26_1.db') c = conn.cursor() c.execute( "CREATE TABLE IF NOT EXISTS stuffToPlot(GAME TEXT,TIME TEXT,LED TEXT,MPU TEXT,BUTTON1 TEXT,BUTTON2 TEXT,BUTTON3 TEXT,BUTTON4 TEXT,BUTTON5 TEXT,BUTTON6 TEXT,LEFT_UP TEXT,UP TEXT,UP_RIGHT TEXT,RIGHT TEXT,RIGHT_DOWN TEXT,DOWN TEXT,DOWN_LEFT TEXT,LEFT TEXT)") # cập nhật giá trị cho bảng if (game == 1): 52 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA nameofgame = 'LOL' elif(game == 2): nameofgame = 'FIFA' elif (game == 3): nameofgame = 'SAMURAI' elif (game == 4): nameofgame = 'RACING' c.execute("UPDATE stuffToPlot set TIME='"+localtime+"',LED='"+port+"',MPU='"+str(var1.get())+"',BUTTON1 = '"+val_btn1+"',BUTTON2 = '"+val_btn2+"',BUTTON3 = '"+val_btn3+"',BUTTON4 = '"+val_btn4+"',BUTTON5 = '"+val_btn5+"',BUTTON6 = '"+val_btn6+"',LEFT_UP='"+lu+"',UP = '"+up+"',UP_RIGHT='"+ur+"',RIGHT = '"+right+"',RIGHT_DOWN = '"+rd+"',DOWN = '"+down+"',DOWN_LEFT = '"+dl+"',LEFT = '"+left+"' where GAME = '"+nameofgame+"'") conn.commit() # tạo frame frame_1 = Frame(root, width=400, height=100,bg="white") frame_1.pack(side=LEFT,fill=Y) frame_mid = Frame(root, width=200, height=20, bg="white") frame_mid.pack(side=LEFT, fill=Y) frame_2= Frame(root, width=200, height=20,bg="white") frame_2.pack(side=LEFT,fill=Y) #khai báo biến global val_btn1="" val_btn2="" val_btn3="" val_btn4="" val_btn5="" val_btn6="" game=1 port=StringVar() led=0 localtime = time.asctime( time.localtime(time.time())) #sử dung combobox de chon thể loai game #v = ["LOL","BUBG","FIFA","SAMURAI"] #combo = Combobox(frame_mid, values=v, width=12) #combo.set("select") #combo.grid(row=7, column=2, sticky="WESN") # tạo Label, Entry cho fram_2 label_btn =Label(frame_2,text=" ",bg="orange").grid(row=4,column=0) label_select = Label(frame_2, text=" column=1) lable_btn1 = Label(frame_2, text="BUTTON lable_btn2 = Label(frame_2, text="BUTTON lable_btn3 = Label(frame_2, text="BUTTON lable_btn4 = Label(frame_2, text="BUTTON lable_btn5 = Label(frame_2, text="BUTTON lable_btn6 = Label(frame_2, text="BUTTON entry_btn1 = Entry(frame_2,width=5) entry_btn1.grid(row=5, column=1) BUTTON CHARACTER ",bg="orange").grid(row=4, 1").grid(row=5,column=0) 2").grid(row=6, column=0) 3").grid(row=7, column=0) 4").grid(row=8, column=0) 5").grid(row=9, column=0) 6").grid(row=10, column=0) 53 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA entry_btn2 = Entry(frame_2,width=5) entry_btn2.grid(row=6, column=1) entry_btn3 = Entry(frame_2,width=5) entry_btn3.grid(row=7, column=1) entry_btn4 = Entry(frame_2,width=5) entry_btn4.grid(row=8, column=1) entry_btn5 = Entry(frame_2,width=5) entry_btn5.grid(row=9, column=1) entry_btn6 = Entry(frame_2,width=5) entry_btn6.grid(row=10, column=1) # nhấn nút để chọn thể loại game btn_SETUP = Button(frame_mid, text="UPDATE", width=45, height=25,bg="#64b8a1",padx=0, pady=0, command=fn2).place(x=0, y=50) #XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx #XỬ LÝ TRÊN frame_1 # tạo lable entry cho Joystic # lable hàng #lable_1=Label(frame_1,text="LU",width="10",height="3",bg="white",foreground= "#859751").grid(row=0, column=0) lable_2=Label(frame_1,text="UP",width="10",height="3",bg="white",foreground=" #00a4c7" ).grid(row=0, column=2) #lable_3=Label(frame_1,text="UR",width="10",height="3",bg="white",foreground= "orange" ).grid(row=0, column=4) #3 entry hàng entry_1=Entry(frame_1,width=5,bg="#fef2f6") #entry_1.grid(row=1, column=1) entry_2=Entry(frame_1,width=5,bg="#fef2f6") entry_2.grid(row=1, column=2) entry_3=Entry(frame_1,width=5,bg="#fef2f6") #entry_3.grid(row=1, column=3) # lable, entry hàng lable_4=Label(frame_1,text="LEFT",width="10",height="3",bg="white" ,foreground="red").grid(row=2, column=0) entry_8=Entry(frame_1,width=5,bg="#fef2f6") entry_8.grid(row=2, column=1) entry_4=Entry(frame_1,width=5,bg="#fef2f6") entry_4.grid(row=2, column=3) lable_5=Label(frame_1,text="RIGHT",width="10",height="3",bg="white",foregroun d="purple" ).grid(row=2, column=4) # entry hàng entry_7=Entry(frame_1,width=5,bg="#fef2f6") #entry_7.grid(row=3, column=1) entry_6=Entry(frame_1,width=5,bg="#fef2f6") entry_6.grid(row=3, column=2) entry_5=Entry(frame_1,width=5,bg="#fef2f6") #entry_5.grid(row=3, column=3) # lable hàng #lable_6=Label(frame_1,text="DL",width="10",height="3",bg="white" ,foreground="#c55805").grid(row=4, column=0) lable_7=Label(frame_1,text="DOWN",width="10",height="3",bg="white" ).grid(row=4, column=2) 54 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA #lable_8=Label(frame_1,text="RD",width="10",height="3",bg="white",foreground= "green").grid(row=4, column=4) # lable để chọn port serial Lable_9=Label(frame_1,text=" LED ).grid(row=8, columnspan=5) EFFECT",width="42",height="2",bg="#A1C1DA" # combobox để chọn port serial v = ["ĐỎ","CAM","VÀNG","LỤC","LAM","CHÀM","TÍM","TRẮNG","ĐỔI MÀU","TẮT LED"] combo = Combobox(frame_1, values=v, width=30) combo.set("select") combo.grid(row=9, columnspan=5) #XỬ LÝ TRÊN frame_2 #tạo button , Lable, entry #hàng button_1=Button(frame_2,text="BUTTON 1",width="10",height="3",bg="#FFE40F").grid(row=0,column=0) button_2=Button(frame_2,text="BUTTON 2",width="10",height="3",bg="#00a4c7").grid(row=0,column=1) #hàng button_3=Button(frame_2,text="BUTTON 3",width="10",bg="#00a4c7",height="3").grid(row=1,column=0) button_4=Button(frame_2,text="BUTTON 4",width="10",bg="#FFE40F",height="3").grid(row=1,column=1) #hàng button_5=Button(frame_2,text="BUTTON 5",width="10",bg="#FFE40F",height="3").grid(row=2,column=0) button_6=Button(frame_2,text="BUTTON 6",width="10",bg="#00a4c7",height="3").grid(row=2,column=1) #hang 3: click để chọn thể loại game Btn_CUSTOM=Button(frame_2,text="SELECT GAME", width=18,height=3,bg="#64b8a1",padx=10,pady=10,command=customizeGame).grid(co lumnspan=2) #Xử lý frame_mid lable_blu_1=Label(frame_mid,text="YOU ARE IN GAME :",width="30",height="3",bg="#A1C1DA").grid(row=6,sticky=W) lable_blu_2=Label(frame_mid,text="RACING",width="11",height="3",bg="#A1C1DA" ) lable_blu_2.grid(row=6, column=2) lable_blu_6 = Label(frame_mid, width="11", height="3", bg="#A1C1DA") lable_blu_6.grid(row=8, column=2,sticky="WESN") lable_blu_5=Label(frame_mid,text="DAY SETUP :",width="30",height="3",bg="#A1C1DA").grid(row=8,sticky=W) #1 Checkbox để kiểm tra cảm biến góc nghiêng có hoạt động hay không var1 = IntVar() Checkbutton(frame_1, text="IS MPU ACTIVE ?", height="3",width="45",variable=var1,bg="#A1C1DA").place(x=0, y=320) customizeGame() root.mainloop() 55 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA 56 ... game 3.4 .2 Lưu đồ giải thuật phần mềm 24 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA Hình 3 .2 Lưu đồ 25 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA Giải thích lưu đồ: ... } /* I2C2 init function */ static void MX_I2C2_Init(void) { hi2c2.Instance = I2C2; hi2c2.Init.ClockSpeed = 400000; hi2c2.Init.DutyCycle = I2C_DUTYCYCLE _2; hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode... phần mềm máy tính 28 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS PHAN VĂN CA Hình 4 .2 Giao diện phần mềm 4.3 Database Hình 4.3 Giao diện database 29 ĐỒ ÁN 2: THIẾT KẾ KEYBOARD GAME GVHD: PGS.TS

Ngày đăng: 18/12/2021, 22:57

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan