主要是关于蓝牙串口通信 接收 输出不同占空比的PWM波
下面是Arduino的程序
#include < WM.h>
#include <CDS5500.h>
#include "pins_arduino.h"
CDS5500 SERVO;
int32_t frequency=15000;
int leftpwm=12,leftb1=24,leftb2=25;
int rightpwm=11,righta1=22,righta2=23; //
char x=0,b=0;
int speed1=50,speed2=100,speed3=150,speedi,speedj;
void setup()
{ int i;
InitTimersSafe();
bool success=SetPinFrequencySafe(leftpwm,frequency);
bool success1=SetPinFrequencySafe(rightpwm,frequency);
pinMode(leftpwm, OUTPUT);
pinMode(rightpwm, OUTPUT);
pinMode(righta1, OUTPUT);
pinMode(righta2, OUTPUT);
pinMode(leftb1, OUTPUT);
pinMode(leftb2, OUTPUT);
Serial1.begin(9600);
Serial.begin (115200);
}
void motor(int j,int i,int rspeed,int lspeed) //
{
if(i==0)
{
digitalWrite(leftb1, 1);
digitalWrite(leftb2, 0);
}
else
{
digitalWrite(leftb1, 0);
digitalWrite(leftb2, 1);
}
if(j==0)
{
digitalWrite(righta1, 1);
digitalWrite(righta2, 0);
}
else
{
digitalWrite(righta1, 0);
digitalWrite(righta2, 1);
}
pwmWrite(rightpwm,rspeed);
pwmWrite(leftpwm,lspeed);
}
void loop()
{ //dipan
if(x=='0')
{motor(0,0,0,0);
speedi=speed1;
speedj=speed1;
}
if(x=='2')
{if(speedi<speed3)
speedi=speedi+1;
delay(3);
motor(0,1,speedi,speedi);
}
else if(x=='3')
{
if(speedj<speed3)
speedj=speedj+1;
delay(3);
motor(1,0,speedj,speedj);
}
else if(x=='4')
{motor(0,1,speed1,speed1);
speedi=speed1;
speedj=speed1;
}
else if(x=='5')
{
motor(1,0,speed1,speed1);
speedi=speed1;
speedj=speed1;
}
else if(x=='6')
{motor(0,1,speed2,speed1);
speedi=speed1;
speedj=speed1;}
else if(x=='7')
{motor(0,1,speed1,speed2);
speedi=speed1;
speedj=speed1;}
else if(x=='8')
{motor(0,0,speed3,speed3);
delay(210);
x='0';}
else if(x=='9')
{motor(1,1,speed3,speed3);
delay(210);
x='0';
}
//shangbanshen
if(x!=b)
{ if(x=='b')
{
SERVO.WritePos(1,512,1023);
delay(2);
SERVO.WritePos(2,418,1023);
delay(2);
SERVO.WritePos(3,488,1023);
delay(2);
SERVO.WritePos(4,512,1023);
delay(2);
SERVO.WritePos(5,524,1023);
delay(2);
SERVO.WritePos(6,450,1023);
delay(2);
}
else if(x=='1')
{
SERVO.WritePos(1,788,1023);
delay(2);
SERVO.WritePos(2,418,1023);
delay(2);
SERVO.WritePos(3,488,1023);
delay(2);
SERVO.WritePos(4,227,1023);
delay(2);
SERVO.WritePos(5,524,1023);
delay(2);
SERVO.WritePos(6,450,1023);
delay(2);
}
else if(x=='a')
{
SERVO.WritePos(1,208,1023);
delay(2);
SERVO.WritePos(2,418,1023);
delay(2);
SERVO.WritePos(3,488,1023);
delay(2);
SERVO.WritePos(4,838,1023);
delay(2);
SERVO.WritePos(5,524,1023);
delay(2);
SERVO.WritePos(6,450,1023);
delay(2);
}
}
b=x;
}
void serialEvent1()
{
x=Serial1.read();
}
|