通过三个开关控制直流电机的正反转以及停止。
当按下开关一,电机正转;按下开关二,电机反转;按下开关三,电机停止转动。
准备材料: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);
}
}
}