教程http://www.zg4o1577.cn/bbs/dpj-44598-1.html
void motor(char pin,char pwmpin,char state,int val) { pinMode(pin, OUTPUT);
if(state==1) { analogWrite(pwmpin,val); digitalWrite(pin,1); }
else if(state==2) { analogWrite(pwmpin,val); digitalWrite(pin,0); }
else if(state==0) { analogWrite(pwmpin,0); digitalWrite(pin,0); } }
void runfoward(int i) { motor(4,5,1,i); motor(7,6,1,i); }
void runback(int j) { motor(4,5,2,j); motor(7,6,2,j); }
void turnL(int m) { motor(4,5,1,m); motor(7,6,2,m); }
void turnR(int n) { motor(4,5,2,n); motor(7,6,1,n); }
void stop() { motor(4,5,0,0); motor(7,6,1,0); }
void setup() { Serial.begin(9600); }
void loop() { while (Serial.available() > 0)
{ int inChar = Serial.read(); inChar=inChar-0x30;
if(inChar == 1) //foward
{ runfoward(250); delay(300); stop(); }
else if(inChar == 2) //back
{ runback(250); delay(300); stop(); }
else if(inChar == 3) //R
{ turnR(250); delay(300); stop(); }
else if(inChar == 4) //L
{ turnL(250); delay(300); stop(); }
else { stop(); } inChar=0; } }
{
pinMode(pin, OUTPUT);
if(state==1)
{
analogWrite(pwmpin,val);
digitalWrite(pin,1);
}
else if(state==2)
{
analogWrite(pwmpin,val);
digitalWrite(pin,0);
}
else if(state==0)
{
analogWrite(pwmpin,0);
digitalWrite(pin,0);
}
}
void runfoward(int i)
{
motor(4,5,1,i);
motor(7,6,1,i);
}
void runback(int j)
{
motor(4,5,2,j);
motor(7,6,2,j);
}
void turnL(int m)
{
motor(4,5,1,m);
motor(7,6,2,m);
}
void turnR(int n)
{
motor(4,5,2,n);
motor(7,6,1,n);
}
void stop()
{
motor(4,5,0,0);
motor(7,6,1,0);
}
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0) {
int inChar = Serial.read();
inChar=inChar-0x30;
if(inChar == 1) //foward
{
runfoward(250);
delay(300);
stop();
}
else if(inChar == 2) //back
{
runback(250);
delay(300);
stop();
}
else if(inChar == 3) //R
{
turnR(250);
delay(300);
stop();
}
else if(inChar == 4) //L
{
turnL(250);
delay(300);
stop();
}
else
{
stop();
}
inChar=0;
}
}
|