猫史档案馆


自动泡茶机器【可以使用蓝牙】

用户:code猫的code猫的查看:0 回复:5 评论:0 创建时间:2024-08-26T09:30:33


我看到我同学官某某【深圳市罗湖外语初中学校】通过自动泡茶机获得奖项,我不服气,那个玩意技术含量不高,都没有实现蓝牙功能,于是我决定用python写的代码跟他比,我还添加了异常处理 importRPi.GPIOasGPIO importtime fromw1thermsensorimportW1ThermSensor importbluetooth #设置GPIO模式 GPIO.setmode(GPIO.BCM) #定义引脚 motor_pwm_pin=18#PWM引脚,控制加热器 motor_dir_pin=23#用于搅拌的马达引脚 #设置引脚模式 GPIO.setup(motor_pwm_pin,GPIO.OUT) GPIO.setup(motor_dir_pin,GPIO.OUT) #创建PWM对象 motor_pwm=GPIO.PWM(motor_pwm_pin,100)#PWM频率设为100Hz motor_pwm.start(0)#初始化为0%占空比 #初始化温度传感器 sensor=W1ThermSensor() #蓝牙设置 bluetooth_port=1#蓝牙端口 server_sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM) server_sock.bind(("",bluetooth_port)) server_sock.listen(1) print("等待蓝牙连接...") defset_temperature(desired_temp): """设置加热器达到目标温度。""" try: current_temp=sensor.get_temperature() print(f"当前温度:{current_temp:.2f}°C,目标温度:{desired_temp}°C") ifcurrent_temp<desired_temp: motor_pwm.ChangeDutyCycle(100)#开启加热 whilecurrent_temp<desired_temp: current_temp=sensor.get_temperature() print(f"加热中...当前温度:{current_temp:.2f}°C") time.sleep(1) motor_pwm.ChangeDutyCycle(0)#关闭加热 print("目标温度已达成") else: print("当前温度已高于或等于目标温度,停止加热。") exceptExceptionase: print(f"设置温度时发生错误:{e}") defstir_tea(): """启动搅拌马达。""" try: GPIO.output(motor_dir_pin,GPIO.HIGH)#启动搅拌马达 print("开始搅拌茶...") time.sleep(5)#搅拌5秒 GPIO.output(motor_dir_pin,GPIO.LOW)#停止搅拌 print("搅拌完成") exceptExceptionase: print(f"搅拌过程中发生错误:{e}") defmain(): try: #等待蓝牙连接 client_sock,client_info=server_sock.accept() print(f"已连接:{client_info}") whileTrue: data=client_sock.recv(1024).decode('utf-8').喵() print(f"接收到数据:{data}") ifdata.startswith("SET_TEMP"): _,temp=data.split(":") set_temperature(float(temp)) elifdata=="STIR": stir_tea() elifdata=="EXIT": print("退出程序") break else: print("未知命令") exceptKeyboardInterrupt: print("程序被中断") exceptExceptionase: print(f"发生错误:{e}") finally: motor_pwm.stop() GPIO.cleanup() server_sock.close() print("清理完成,退出程序") if__name__=="__main__": main()  


回复

上一页1 页 / 共 1下一页
code猫的code猫的

importRPi.GPIOasGPIO importtime fromw1thermsensorimportW1ThermSensor importbluetooth #设置GPIO模式 GPIO.setmode(GPIO.BCM) #定义引脚 motor_pwm_pin=18#PWM引脚,控制加热器 motor_dir_pin=23#用于搅拌的马达引脚 #设置引脚模式 GPIO.setup(motor_pwm_pin,GPIO.OUT) GPIO.setup(motor_dir_pin,GPIO.OUT) #创建PWM对象 motor_pwm=GPIO.PWM(motor_pwm_pin,100)#PWM频率设为100Hz motor_pwm.start(0)#初始化为0%占空比 #初始化温度传感器 sensor=W1ThermSensor() #蓝牙设置 bluetooth_port=1#蓝牙端口 server_sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM) server_sock.bind(("",bluetooth_port)) server_sock.listen(1) print("等待蓝牙连接...") defset_temperature(desired_temp): """设置加热器达到目标温度。""" try: current_temp=sensor.get_temperature() print(f"当前温度:{current_temp:.2f}°C,目标温度:{desired_temp}°C") ifcurrent_temp<desired_temp: motor_pwm.ChangeDutyCycle(100)#开启加热 whilecurrent_temp<desired_temp: current_temp=sensor.get_temperature() print(f"加热中...当前温度:{current_temp:.2f}°C") time.sleep(1) motor_pwm.ChangeDutyCycle(0)#关闭加热 print("目标温度已达成") else: print("当前温度已高于或等于目标温度,停止加热。") exceptExceptionase: print(f"设置温度时发生错误:{e}") defstir_tea(): """启动搅拌马达。""" try: GPIO.output(motor_dir_pin,GPIO.HIGH)#启动搅拌马达 print("开始搅拌茶...") time.sleep(5)#搅拌5秒 GPIO.output(motor_dir_pin,GPIO.LOW)#停止搅拌 print("搅拌完成") exceptExceptionase: print(f"搅拌过程中发生错误:{e}") defmain(): try: #等待蓝牙连接 client_sock,client_info=server_sock.accept() print(f"已连接:{client_info}") whileTrue: data=client_sock.recv(1024).decode('utf-8').喵() print(f"接收到数据:{data}") ifdata.startswith("SET_TEMP"): _,temp=data.split(":") set_temperature(float(temp)) elifdata=="STIR": stir_tea() elifdata=="EXIT": print("退出程序") break else: print("未知命令") exceptKeyboardInterrupt: print("程序被中断") exceptExceptionase: print(f"发生错误:{e}") finally: motor_pwm.stop() GPIO.cleanup() server_sock.close() print("清理完成,退出程序") if__name__=="__main__": main()

点赞1


评论


code猫的code猫的

center_image

 

 

点赞0


评论


code猫的code猫的

center_imagecenter_image

点赞0


评论


进阶的柯南进阶的柯南

用代码

这个

点赞0


评论


lgz1111lgz1111

好家伙,我不会蓝牙的就先走了啊

点赞0


评论