zoukankan      html  css  js  c++  java
  • 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);
    }
    }
  • 相关阅读:
    从跳频技术聊CDMA/WIFI之母海蒂·拉玛传奇的一生
    echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转
    kafka-connect-kudu-sink插件
    mysql8远程连接问题
    zookeeper-3.4.5修改存储1M大小限制
    Java并发之CompletionService详解
    傲视Kubernetes(六):Pod管理及控制器
    傲视Kubernetes(五):注解和命名空间
    Es使用kibana增删改查以及复杂查询
    测试Ik分词器以及增加自己的词汇
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/7260822.html
Copyright © 2011-2022 走看看