#!/usr/bin/env python3 """ 太阳!- 双舵机舞动脚本 让舵机像太阳升起一样充满活力地挥动 """ import time import os import sys PWM0 = "/sys/class/pwm/pwmchip0/pwm0" PWM1 = "/sys/class/pwm/pwmchip0/pwm1" PERIOD = 20000000 # 20ms = 50Hz def init_pwm(): """初始化两个PWM通道""" for pwm in [PWM0, PWM1]: try: with open(os.path.join(pwm, "period"), "w") as f: f.write(str(PERIOD)) with open(os.path.join(pwm, "duty_cycle"), "w") as f: f.write("1500000") # 中心位置 90° with open(os.path.join(pwm, "enable"), "w") as f: f.write("1") except Exception as e: print(f"Error initializing {pwm}: {e}") sys.exit(1) def set_angle(pwm, angle): """设置舵机角度 (0-180°)""" duty = int(1000000 + (angle / 180.0) * 1000000) with open(os.path.join(pwm, "duty_cycle"), "w") as f: f.write(str(duty)) def wave_pattern(): """波浪模式:两舵机反向运动""" for a in range(0, 181, 30): set_angle(PWM0, a) set_angle(PWM1, 180 - a) time.sleep(0.2) for a in range(180, -1, -30): set_angle(PWM0, a) set_angle(PWM1, 180 - a) time.sleep(0.2) def sync_pattern(): """同步模式:两舵机同步运动""" for a in [0, 90, 180, 90]: set_angle(PWM0, a) set_angle(PWM1, a) time.sleep(0.3) def stop_pwm(): """停止PWM输出""" set_angle(PWM0, 90) set_angle(PWM1, 90) time.sleep(0.3) for pwm in [PWM0, PWM1]: with open(os.path.join(pwm, "enable"), "w") as f: f.write("0") def main(): print("🌞 太阳!- 舵机舞动开始") print("=" * 40) init_pwm() try: while True: print("🌊 波浪模式...") wave_pattern() print("🎯 同步模式...") sync_pattern() except KeyboardInterrupt: print("\n停止舞动...") stop_pwm() print("🌞 太阳落山了,再见!") if __name__ == "__main__": main()