按键按下电机一直转动,再按下电机停止转动用c语言怎么写?
时间: 2023-05-21 09:05:23 浏览: 54
这可以通过控制 GPIO 引脚的电平来实现,假设电机接在 GPIO1 引脚上,按键接在 GPIO2 引脚上,可以这样编写代码:
```c
#include <stdio.h>
#include <wiringPi.h>
#define MOTOR_PIN 1
#define BUTTON_PIN 2
int main(void) {
wiringPiSetup();
pinMode(MOTOR_PIN, OUTPUT); // 将 GPIO1 引脚设为输出模式
pinMode(BUTTON_PIN, INPUT); // 将 GPIO2 引脚设为输入模式
int prevButtonState = LOW; // 上一次按键状态,初始为未按下状态
int motorState = LOW; // 电机状态,初始为未转动状态
while (1) {
int buttonState = digitalRead(BUTTON_PIN); // 读取当前按键状态
if (buttonState == HIGH && prevButtonState == LOW) {
motorState = !motorState; // 切换电机状态
digitalWrite(MOTOR_PIN, motorState); // 控制 GPIO1 引脚输出电平
}
prevButtonState = buttonState; // 更新上一次按键状态
delay(50); // 延时 50 毫秒
}
return 0;
}
```
当按键按下时,会反转电机状态,即从未转动变为转动,或从转动变为未转动;同时,通过 `digitalWrite` 函数控制 GPIO1 引脚输出电平。每次循环时,都会进行按键状态的读取和更新,以及 50 毫秒的延时,可以避免电机转动太快导致效果不佳。