#include <LiquidCrystal.h>
unsigned char hexdata[30]={0x04,0x01,0x09,0x00,0x0e,0x04,0x01,0x09,0x00,0x0e,0x04,0x01,0x09,0x00,0x0e,0x04,0x01,0x09,0x00,0x0e,0x04,0x01,0x09,0x00,0x0e,0x04,0x01,0x09,0x00,0x0e};//connect signal
int key=2;
int LED=5;
LiquidCrystal lcd(12,11,10,9,8,7,6); //4数据口模式连线声明
void setup()
{
lcd.begin(16,2);
Serial.begin(9600,SERIAL_8O1);//9600,8,1,odd
//Serial.flush();
pinMode(key,INPUT);
pinMode(LED,OUTPUT);
attachInterrupt(0,connect,FALLING);
}
void loop()
{
while(Serial.available()==0){}
if(Serial.available())
{
delay(100);
while(Serial.available()>0)
{
digitalWrite(5,HIGH);//whether have data input
int i=Serial.read();//receive data
delay(2);
lcd.print(i);//display data
delay(10);
digitalWrite(5,LOW);
}
}
}
void connect()
{
Serial.write(&hexdata[0],30);
delay(50);
while(Serial.available()==0){
Serial.write(&hexdata[0],30);}
if(Serial.available())
{
//delay(100);
digitalWrite(5,HIGH);
delay(500);
digitalWrite(5,LOW);
}
Serial.flush();
}
我想实现按下按钮的时候,能把数组输入进电脑串口助手,等电脑串口助手回传一个信号的时候,LED能闪烁一下,表示接收到了数据,然后清空缓存,再来执行loop中的操作。
可是我直接用下面的东西的时候,电脑串口可以显示数组
void connect()
{
Serial.write(&hexdata[0],30);
delay(50);
}
但加上后面的while(Serial.available()==0)和后面的一些东西的时候,电脑收不到发进去的数组了,然后从电脑传信号到arduino的是时候,灯也不亮了。
求大神教教是不是中断里面不能有Serial.available().
|