Arduino开发版学习计划--直流电机

代码来源:http://www.cnblogs.com/starsnow/p/4579547.html

// ----------------------------------------------------------------------------
// hBridgeMotor.ino
// 
// Created 2015-06-11
// By seesea <seesea2517#gmail#com> // ----------------------------------------------------------------------------

const unsigned char pinMotorCW  = 5;   // 接控制电机顺时针转的 H 桥引脚
const unsigned char pinMotorCCW = 6;   // 接控制电机逆时针转的 H 桥引脚

// 电机停转
void motorStop()
{
    digitalWrite(pinMotorCW,  LOW);
    digitalWrite(pinMotorCCW, LOW);
}

// 电机顺时针转
void motorCW()
{
    digitalWrite(pinMotorCW,  HIGH);
    digitalWrite(pinMotorCCW, LOW);
}

// 电机逆时针转
void motorCCW()
{
    digitalWrite(pinMotorCW,  LOW);
    digitalWrite(pinMotorCCW, HIGH);
}

void setup()
{
    pinMode(pinMotorCW,  OUTPUT);
    pinMode(pinMotorCCW, OUTPUT);
}

void loop()
{
    motorCW();
    delay(2000);
    
    motorCCW();
    delay(1000);
    
    motorStop();
    delay(1000);
}

 控制电机转动速度:代码来源:http://www.arduino.cn/thread-1198-1-1.html

pwmpin表示输入的PWM波形的IO口,state指电机状态(正转或反转),val是调速值大小0-255

analogWrite()

将模拟值(PWM波)输出到管脚。可用于在不同的光线亮度调节发光二极管亮度或以不同的速度驱动马达。调用analogWrite()后,该引脚将产生一个指定占空比的稳定方波,直到下一次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。 PWM的信号频率约为490赫兹。

 
#define motor1pin 5
#define motor1pwm 6

 
void setup()
{}
void loop()
{
   motor(motor1pin,motor1pwm,1,180);      //电机1以180的速度正转,5、6口控制电机1
   delay(1000);
   motor(motor1pin,motor1pwm,2,180);      //电机1以180的速度反转
   delay(1000);
}
void motor(char pin,char pwmpin,char state,int val)//参数pin是输入的高低电平的IO口,pwmpin表示输入的PWM波形的IO口,state指电机状态(正转或反转),val是调速值大小0-255
{
    pinMode(pin, OUTPUT);    
  if(state==1)                             //当state为1时正转
  {  
    analogWrite(pwmpin,val);
    digitalWrite(pin,1);
   }
  else if(state==2)                     //当state为2时反转
{  
   analogWrite(pwmpin,val);
   digitalWrite(pin,0);
}
else if(state==0)                     //当state为0时停止
{
    analogWrite(pwmpin,0);
    digitalWrite(pin,0);
}
}
原文地址:https://www.cnblogs.com/taiguyiba/p/7260822.html