以下是一个可能的实现代码示例(使用 Arduino 语言): ```cpp #include <Servo.h> Servo myServo; // 创建舵机对象 int ledPin = 13; // LED 引脚 int keyPin = 2; // 按键引脚 int potPin = A0; // 电位器引脚 int motorPin = 9; // 电机引脚 bool isRunning = false; // 标志设备是否运行 void setup() { myServo.attach(7); // 连接舵机到引脚 7 pinMode(ledPin, OUTPUT); pinMode(keyPin, INPUT_PULLUP); pinMode(motorPin, OUTPUT); digitalWrite(ledPin, LOW); // 初始时 LED 熄灭 myServo.write(0); // 初始时舵机角度为 0 度 analogWrite(motorPin, 0); // 初始时电机不转 } void loop() { if (digitalRead(keyPin) == LOW) { // 检测按键按下 delay(50); // 消抖 if (digitalRead(keyPin) == LOW) { if (!isRunning) { // 如果设备未运行 isRunning = true; while (isRunning) { // 循环执行摆动和其他操作 for (int angle = 30; angle <= 150; angle += 1) { // 舵机角度增加 myServo.write(angle); delay(15); } for (int angle = 150; angle >= 30; angle -= 1) { // 舵机角度减小 myServo.write(angle); delay(15); } digitalWrite(ledPin, HIGH); // LED 点亮 int potValue = analogRead(potPin); // 读取电位器值 analogWrite(motorPin, map(potValue, 0, 1023, 0, 255)); // 根据电位器调节电机转速 } } else { // 如果设备正在运行 isRunning = false; digitalWrite(ledPin, LOW); // LED 熄灭 myServo.write(0); // 舵机角度归 0 analogWrite(motorPin, 0); // 电机停止 } } } } ``` 额外需要注意的逻辑点: 1. 注意电位器的取值范围和映射关系,确保电机转速调节合理。 2. 舵机的摆动速度和角度范围可根据实际效果进行调整。 3. 考虑添加适当的错误处理,例如电位器读取异常或按键抖动处理不当的情况。 [2025-03-14 16:48:12 | AI写代码神器 | 638点数解答]