黄工无刷电机学习
登录
直播中
手托初梦
9年用户
852经验值
擅长:可编程逻辑 嵌入式技术
私信
关注
[问答]
怎样通过三个开关去控制直流电机的正反转以及停止呢
开启该帖子的消息推送
直流电机
正反转
控制
怎样通过三个开关去控制直流电机的正反转以及停止呢?有哪些操作流程?
回帖
(1)
吴立节
2021-10-15 10:09:07
通过三个开关控制直流电机的正反转以及停止。
当按下开关一,电机正转;按下开关二,电机反转;按下开关三,电机停止转动。
准备材料:Arduino nano开发板*1,L293D直插式电机驱动芯片*1,10KΩ电阻*3,直流电机*1,开关*3。
电路图如下:
代码如下:
#define M1 8 //定义端口
#define M2 9
#define BUTTON1 10
#define BUTTON2 11
#define BUTTON3 12
int val1 = 0; //变量val用来储存按钮状态
int val2 = 0;
int val3 = 0;
int state1 = 0; //0表示关闭,1表示打开
int state2 = 0;
void setup(){
pinMode(M1,OUTPUT); //设定引脚为输出状态
pinMode(M2,OUTPUT);
pinMode(BUTTON1,INPUT); //设定引脚为输入状态
pinMode(BUTTON2,INPUT);
pinMode(BUTTON3,INPUT);
}
void loop(){
val1 = digitalRead(BUTTON1||BUTTON2||BUTTON3); //读取按钮状态并储存
//检查按钮的变化情况
val2 = digitalRead(BUTTON2);
val3 = digitalRead(BUTTON3);
if(val1 == HIGH) //判断val,输出对应状态
{
state1 = 1 - state1;
if ((state1 == 1)&&(state2 == 0))
{
digitalWrite(M1,HIGH);
digitalWrite(M2,LOW);
}
}
if(val2 == HIGH)
{
state2 = 1 - state2;
if ((state1 == 0)&&(state2 == 1))
{
digitalWrite(M1,LOW);
digitalWrite(M2,HIGH);
}
}
if(val3 == HIGH)
{
state1 = 0;
state2 = 0;
if ((state1 == 0)&&(state2 == 0))
{
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
}
}
}
通过三个开关控制直流电机的正反转以及停止。
当按下开关一,电机正转;按下开关二,电机反转;按下开关三,电机停止转动。
准备材料:Arduino nano开发板*1,L293D直插式电机驱动芯片*1,10KΩ电阻*3,直流电机*1,开关*3。
电路图如下:
代码如下:
#define M1 8 //定义端口
#define M2 9
#define BUTTON1 10
#define BUTTON2 11
#define BUTTON3 12
int val1 = 0; //变量val用来储存按钮状态
int val2 = 0;
int val3 = 0;
int state1 = 0; //0表示关闭,1表示打开
int state2 = 0;
void setup(){
pinMode(M1,OUTPUT); //设定引脚为输出状态
pinMode(M2,OUTPUT);
pinMode(BUTTON1,INPUT); //设定引脚为输入状态
pinMode(BUTTON2,INPUT);
pinMode(BUTTON3,INPUT);
}
void loop(){
val1 = digitalRead(BUTTON1||BUTTON2||BUTTON3); //读取按钮状态并储存
//检查按钮的变化情况
val2 = digitalRead(BUTTON2);
val3 = digitalRead(BUTTON3);
if(val1 == HIGH) //判断val,输出对应状态
{
state1 = 1 - state1;
if ((state1 == 1)&&(state2 == 0))
{
digitalWrite(M1,HIGH);
digitalWrite(M2,LOW);
}
}
if(val2 == HIGH)
{
state2 = 1 - state2;
if ((state1 == 0)&&(state2 == 1))
{
digitalWrite(M1,LOW);
digitalWrite(M2,HIGH);
}
}
if(val3 == HIGH)
{
state1 = 0;
state2 = 0;
if ((state1 == 0)&&(state2 == 0))
{
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
}
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
直流电机
正反转
控制
怎样
使用
三个
开关
去
控制
电机
的
正反转
和停转
呢
?
2021-06-29
3996
怎样
去
设计一种基于STM32的
控制
直流电机
加减速及
正反转
系统
2021-09-14
1422
如何实现只用正极一
个
方向的电压大小变化来
控制
直流电机
的
正反转
?
2023-10-30
2223
怎样
去
控制
基于两路继电器
直流电机
的
正反转
和转速
呢
2021-09-16
1477
直流电机
正反转
带过流保护
控制
器有哪些功能
2021-10-15
3945
什么是
直流电机
正反转
带过流保护
控制
器?其有哪些功能?
2021-06-29
2358
51单片机如何用
三个
开关
控制
三个
直流电机
?
2023-10-26
230
请问WINAVR编译器是
怎样
控制
直流电机
正反转
的
2021-10-15
1355
实现通电正转,断电
反转
(12V
直流电机
正反转
)
2019-03-06
7560
关于
直流电机
正反转
的问题
2017-07-26
3114
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分