ignore 发表于 2016-11-7 13:39:05

关于用CLK输入控制电机启停的问题

在淘宝上买了带驱动的电机,需要用CLK输入控制,进行调速,用PWM时,总是调不了速,用上方波之后,发现控制不了电机运行一段时间,自己停下,不知得用什么语法,求教,附上两种程序1:CLK输入,2:PWM输入


#include <IRremote.h>

int motorPin1 = 9; //电机输出         
int RECV_PIN = 8;   //红外头   
int jdq=7;//通过继电器控制电机启停
int a=0;//标示位

IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(motorPin1,OUTPUT);
pinMode(jdq,OUTPUT);   
irrecv.enableIRIn();
   
}
void loop()
{
if (irrecv.decode(&results))
{
switch (results.value)
{
    case 0xFFA25D:a=1;      
                  digitalWrite(jdq,HIGH);                                 
                  break;                  
    case 0xFF629D:a=0;
                  digitalWrite(jdq,LOW);                           
                  break;   
}
irrecv.resume();
}
motor();
}

void motor()   //控制电机启停,速度
{
if (a !=0)
{
    digitalWrite(motorPin1, HIGH);
    delay(0.1);
    digitalWrite(motorPin1, LOW);
    delay(0.1);
}
}


#include <IRremote.h>

int motorPin1 = 9;      
int RECV_PIN = 8;      
int pwm=5;
int T=5000;
int jdq=7;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(motorPin1,OUTPUT);
pinMode(jdq,OUTPUT);   
irrecv.enableIRIn();
   
}
void loop()
{
if (irrecv.decode(&results))
{
switch (results.value)
{
   case 0xFFA25D :digitalWrite(jdq,HIGH);               
                  for(int i=255;i>=pwm;i--){analogWrite(motorPin1,i);delay(5);}            
                  analogWrite(motorPin1,pwm);
                  delay(T);
                  for(int j=pwm;j<=235;j++){analogWrite(motorPin1,j);delay(5);}
                  analogWrite(motorPin1,255);                                 
                  digitalWrite(jdq,LOW);
                  break;
}
irrecv.resume();
}
}
页: [1]
查看完整版本: 关于用CLK输入控制电机启停的问题