在淘宝上买了带驱动的电机,需要用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();
}
} |