黄工无刷电机学习
直播中

手托初梦

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);
  
  }

  }

}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分