Pcduino通过PWM信号控制motorshield
#include <core.h>
#define FORWARD 0
#define BACKWARD 1
//控制信号引脚定义
int pinInA1 = 8; //与最下排管脚的A1相连。
int pinInA2 = 11; //与最下排管脚的A2相连。
int pinEnA = 9; //与最下排管脚的EnA相连。
//此外,motorshield要与pcduino共地。
void motorSetDirection(int method)
{
switch(method)
{
case FORWARD:
digitalWrite(pinInA1, HIGH);
digitalWrite(pinInA2, LOW);
break; //记住不要忘了break,否则会继续执行BACKWORD设置。导致设置FORWARD失败。
case BACKWARD:
digitalWrite(pinInA1, LOW);
digitalWrite(pinInA2, HIGH);
break; //记住不要忘了break。
default:
break;
}
}
void motorSetSpeed(int speed)
{
analogWrite(pinEnA, speed);
}
void setup()
{
pinMode(pinInA1, OUTPUT);
pinMode(pinInA2, OUTPUT);
pinMode(pineEnA, OUTPUT);
}
void loop()
{
motorSetSpeed(120);
motorSetDirection(FORWARD);
delay(3000); //等待3秒
motorSetDirection(BACKWARD);
delay(3000); //这个延时不可少,否则设置完BACKWARD,循环过去,立马变为FORWARD。只能看到正转。
}
实验结果:
电机先正转,后反转,不断循环。