screwdriver/Motor.py
2025-02-06 16:10:58 +08:00

97 lines
3.4 KiB
Python

import serial # 引用pySerial模組
from time import sleep
class Motor:
def __init__(self):
self.COM_PORT = 'COM3' # 指定通訊埠名稱
self.BAUD_RATES = 9600 # 設定傳輸速率
self.Motor_isOpen = False
self.Motor_isForwards = True
self.motor_idle_time = 0 # 設定馬達閒置平台移進去時間
try:
self.ser = serial.Serial(self.COM_PORT, self.BAUD_RATES) # 初始化序列通訊埠
self.Motor_isOpen = True
except Exception as e:
print(e)
print('馬達未連接')
def Move(self):
if self.Motor_isOpen:
self.motor_idle_time = 0
if self.Motor_isForwards:
self.ser.write(b'MF\n') # 訊息必須是位元組類型
self.Motor_isForwards = False
print('Motor Forward')
else:
self.ser.write(b'MB\n') # 訊息必須是位元組類型
self.Motor_isForwards = True
print('Motor Backward')
sleep(0.7)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('馬達未連接')
def MotorInit(self):
if self.Motor_isOpen:
self.ser.write(b'H\n') # 訊息必須是位元組類型
sleep(0.5)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode()
print('控制板回應:', mcu_feedback)
else:
print('馬達未連接')
def Green(self):
if self.Motor_isOpen:
self.ser.write(b'Green\n') # 訊息必須是位元組類型
sleep(0.7)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('Arduino未連接')
def Yellow(self):
if self.Motor_isOpen:
self.ser.write(b'Yellow\n') # 訊息必須是位元組類型
sleep(0.7)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('Arduino未連接')
def Red(self):
if self.Motor_isOpen:
self.ser.write(b'Red\n') # 訊息必須是位元組類型
sleep(0.7)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('Arduino未連接')
def Buzzer(self):
if self.Motor_isOpen:
self.ser.write(b'Buzzer\n') # 訊息必須是位元組類型
sleep(0.7)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('Arduino未連接')
def Off(self):
if self.Motor_isOpen:
self.ser.write(b'Off\n') # 訊息必須是位元組類型
sleep(0.5)
while self.ser.in_waiting:
mcu_feedback = self.ser.readline().decode() # 接收回應訊息並解碼
print('控制板回應:', mcu_feedback)
else:
print('Arduino未連接')