arduino 的代码 类似 JAVA C++ 所以非常简单!
但是有两组很重要的函数 我要说下!
digitalWrite (数字输出)digitalRead (数字输入)
analogWrite(模拟输出)analogRead(模拟输入)
两者的差别就是 后者是可调节的!(很简单的描述)主要是用于 PWM(脉冲宽度调制) 。而第一个 就是 输出或读取状态! HIGH 或者 LOW (高低电位)!
这样小车这一端 就完成了! 是不是很简单呢? 接下来就是 对控制端的开发了! 我是采用的安卓环境! 但是,安卓的蓝牙开发 代码量比较大!而且 各种类跨的文件比较多。我就给张图算了!
当然 如果就这样完事了 文章就太水了! 主要是后面这个遥控端没有给出代码!
=================================
我这里各一个更方便的代码!C#版本的蓝牙通信!其实就是串口通信!但是需要确定你的电脑上有蓝牙(bluetooth)这的东西!当然笔者是在公司加班完成这文章的,所以呢 这破电脑还真没 蓝牙!
废话不说! C#里面对应串口通信 有这样一个类 SerialPort ! 但是VS IDE的环境里面为我们提供了一个SerialPort控件! 遗憾的是我不喜欢用这控件 太麻烦~!
托4个button 进窗体! 分别将TEXT属性改为 前后左右!
代码如下:
=============以上的代码是随手在发表文章编辑框写的。。所以不规范~~望见谅!
但是有两组很重要的函数 我要说下!
digitalWrite (数字输出)digitalRead (数字输入)
analogWrite(模拟输出)analogRead(模拟输入)
两者的差别就是 后者是可调节的!(很简单的描述)主要是用于 PWM(脉冲宽度调制) 。而第一个 就是 输出或读取状态! HIGH 或者 LOW (高低电位)!
01 |
void setup()
//初始化 |
02 |
{ |
03 |
Serial.begin(9600);
//Serial
通信 用于捕捉 蓝牙发送过来的值! |
04 |
} |
05 |
void loop()
//逻辑上
每秒钟执行1千6百万次 |
06 |
{ |
07 |
while (Serial.available()
> 0) { //判断是否有值传递进来! |
08 |
int inChar
= Serial.read(); |
09 |
inChar=inChar-0x30; |
10 |
if (inChar
== 1) // 当值为1的时候
向前 |
11 |
{ |
12 |
runfoward(250); |
13 |
delay(300); |
14 |
stop(); |
15 |
} |
16 |
else if (inChar
== 2) //2 向后 |
17 |
{ |
18 |
runback(250); |
19 |
delay(300); |
20 |
stop(); |
21 |
} |
22 |
else if (inChar
== 3) //3
向右 |
23 |
{ |
24 |
turnR(250); |
25 |
delay(300); |
26 |
stop(); |
27 |
} |
28 |
else if (inChar
== 4) //4
向左 |
29 |
{ |
30 |
turnL(250); |
31 |
delay(300); |
32 |
stop(); |
33 |
} |
34 |
else |
35 |
{ |
36 |
stop(); |
37 |
} |
38 |
inChar=0; |
39 |
} |
40 |
} |
41 |
//==========一下代码
驱动电机 。如果大家不了解的话,就不用看了! 这里使用了 脉冲宽度调制技术, 控制小车的速度!====== |
42 |
void motor( char pin, char pwmpin, char state, int val)
|
43 |
{ |
44 |
pinMode(pin,
OUTPUT); |
45 |
46 |
if (state==1) |
47 |
{ |
48 |
analogWrite(pwmpin,val); |
49 |
digitalWrite(pin,1); |
50 |
} |
51 |
else if (state==2) |
52 |
{ |
53 |
analogWrite(pwmpin,val); |
54 |
digitalWrite(pin,0); |
55 |
} |
56 |
else if (state==0) |
57 |
{ |
58 |
analogWrite(pwmpin,0); |
59 |
digitalWrite(pin,0); |
60 |
} |
61 |
} |
62 |
//===========一下代码对于最上面的
LOOP方法里面的值! |
63 |
void runfoward( int i) |
64 |
{ |
65 |
motor(4,5,1,i); |
66 |
motor(7,6,1,i); |
67 |
} |
68 |
void runback( int j) |
69 |
{ |
70 |
motor(4,5,2,j); |
71 |
motor(7,6,2,j); |
72 |
} |
73 |
void turnL( int m) |
74 |
{ |
75 |
motor(4,5,1,m); |
76 |
motor(7,6,2,m); |
77 |
} |
78 |
void turnR( int n) |
79 |
{ |
80 |
motor(4,5,2,n); |
81 |
motor(7,6,1,n); |
82 |
} |
83 |
void stop() |
84 |
{ |
85 |
motor(4,5,0,0); |
86 |
motor(7,6,1,0); |
87 |
} |

当然 如果就这样完事了 文章就太水了! 主要是后面这个遥控端没有给出代码!
=================================
我这里各一个更方便的代码!C#版本的蓝牙通信!其实就是串口通信!但是需要确定你的电脑上有蓝牙(bluetooth)这的东西!当然笔者是在公司加班完成这文章的,所以呢 这破电脑还真没 蓝牙!
废话不说! C#里面对应串口通信 有这样一个类 SerialPort ! 但是VS IDE的环境里面为我们提供了一个SerialPort控件! 遗憾的是我不喜欢用这控件 太麻烦~!
托4个button 进窗体! 分别将TEXT属性改为 前后左右!
代码如下:
01 |
namespace 蓝牙小车控制器 |
02 |
{ |
03 |
public partial class Form1
: Form |
04 |
05 |
{ |
06 |
private SerialPort
SP; |
07 |
|
08 |
public Form1() |
09 |
{ |
10 |
InitializeComponent(); |
11 |
|
12 |
|
13 |
} |
14 |
15 |
private void runfoward_Click( object sender,
EventArgs e) //向前button事件 |
16 |
{ |
17 |
//
this.serialPort1.Open(); |
18 |
|
19 |
ONOFF( "1" ); |
20 |
|
21 |
|
22 |
} |
23 |
24 |
private void runback_Click( object sender,
EventArgs e) //向后button事件 |
25 |
{ |
26 |
ONOFF( "2" ); |
27 |
|
28 |
} |
29 |
private void ONOFF( string str)
//
串口通信 最核心的方法。 |
30 |
{ |
31 |
|
32 |
SP
= new SerialPort( "COM7" ,
9600); //
这里的COM7 是你安装蓝牙 的输出串口号! 有些事COM3 有些事COM4、、这里的9600 是波特率!和单片机上的是对应的! |
33 |
SP.Open();
//打开 |
34 |
|
35 |
SP.Write(str);
//发送 |
36 |
SP.Close();
//
关闭 |
37 |
} |
38 |
39 |
private void turnL_Click( object sender,
EventArgs e) //向左button事件 |
40 |
{ |
41 |
ONOFF( "4" ); |
42 |
|
43 |
} |
44 |
45 |
private void turnR_Click( object sender,
EventArgs e) ////向右button事件 |
46 |
{ |
47 |
ONOFF( "3" ); |
48 |
|
49 |
} |
50 |
|
51 |
} |
52 |
} |