Arduino的源代碼如下所示:
#define LED_ON_COMMAND 0x10
//打開LED命令字
#define LED_OFF_COMMAND 0x20
//關閉LED命令字
unsigned int comdata[3];
//定義數組數據,存放串口命令數據
int
led = 13;
//定義LED連接的管腳
int
ON_mark=0;
//定義ON 的標志位
int
OFF_mark=0;
//定義OFF的標志位
void
receive_data(void);
//接受串口數據
void
test_data(void);
//測試串口數據是否正確,并更新數據
void
do_command(void);
//執行更新的數據
void
setup()
{
Serial.begin(9600);
pinMode(led,
OUTPUT);
}
void
loop()
{
while (Serial.available()
> 0) //不斷檢測串口是否有數據
{
receive_data();
//接受串口數據
test_data();
//測試數據是否正確并更新數據
do_command();
//執行更新的數據
}
}
void
receive_data(void)
{
int i
;
for(i=0;i<3;i++)
{
comdata[i] =(unsigned
char)(Serial.read());
//延時一會,讓串口緩存準備好下一個字節,不延時可能會導致數據丟失,
delay(2);
}
}
void
test_data(void) //驗證命令的正確性
{
if(comdata[0] == 0x55)
//0x55和0xAA均為判斷是否為有效命令
{
if(comdata[1] == 0xAA)
{
switch(comdata[2])
{
case
LED_ON_COMMAND:
{
ON_mark=1;
//ON數據更新位置位
}
case
LED_OFF_COMMAND:
{
OFF_mark=1;
//OFF數據更新位置位
}
}
}
}
}
void
do_command(void) //執行命令
{
if(OFF_mark==1)
{
OFF_mark=0;
//復位OFF更新位
digitalWrite(led, LOW);
//關閉LED燈
}
if(ON_mark==1)
{
ON_mark=0;
//復位ON 更新位
digitalWrite(led, HIGH);
//打開LED燈
}
}