老板说的话:就是我发一个指令你,比方说示A10000你就帮我闪10秒后常亮,再发一个指令B0你就帮我关了他
为什么我发A1000led没有亮灭,好像是void serialEvent()函数没执行中断一样
程序:
volatile int comData = 0;
volatile boolean mark = true;
volatile int result = 0 ; //循环总毫秒数
int ledPin = 8;
String inputString = "";
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
if(comData >result and mark == true){ //当输入A时
int start1 = millis(); //millis();返回程序当前运行的毫秒数
digitalWrite(ledPin,HIGH); //设置led为高电平
delay(200);
digitalWrite(ledPin,LOW);
int end1 = millis();
int ms = end1-start1; //一次循环的毫秒数
result = result + ms; //总秒数
}else if(mark == false){ //当输入B时
digitalWrite(ledPin,LOW);
mark = true;
}else{
digitalWrite(ledPin,HIGH);
}
}
void serialEvent(){ //串口中断函数
char strchar = (char)Serial.peek(); //读串口缓存中下一个字节
result = 0; //初始化循环总毫秒数
if(strchar == 'A'){
comData = Serial.parseInt(); //从串口接收数据流中读取第一个有效整数
}else if(strchar == 'B'){
mark = false;
}
while(Serial.read()>= 0){} //清空缓存
}
//void serialEvent1(){//串口中断函数
// while(Serial.available() > 0){
// char inchar = (char)Serial.read(); //读串口中的下一个字节
// inputString = inputString + inchar; //拼成一个字符串
// }
}
|