arduino编程问题
#include <OneWire.h>#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 12
int jia=6; //设定控制LED的数字IO脚
int temPin=13;
int huan=7;//设置控制按键的数字IO脚
int shi=3;
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int i;//wen
int j;//guang
int t;
char val;
void setup( )
{
Serial.begin(9600);
sensors.begin();
pinMode(jia,OUTPUT);//设置数字IO引脚为输出模式
pinMode(huan,OUTPUT);//设定数字IO口的模式,OUTPUT 为输出
// start serial port
pinMode(temPin,OUTPUT);
}
void loop()
{
int t=26;
int i=0;
int j=0;
val=Serial.read();
if(val=='A')
{
digitalWrite(shi,HIGH);
delay(5000);
digitalWrite(shi,LOW);
}
else if(val=='B')
{
digitalWrite(huan,HIGH);
delay(60000);
digitalWrite(huan,LOW);
}
else if(val=='C')
{
digitalWrite(jia,HIGH);
delay(5000);
digitalWrite(jia,LOW);
}
else if(val=='D')
{
sensors.requestTemperatures();
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex(0));
}
else if(val=='T')
{
Serial.print("SET Temperatureis: ");
Serial.println("t");
}
else if(val=='1')
{
t=21;
}
else if(val=='2')
{
t=22;
}
else if(val=='3')
{
t=23;
}
else if(val=='4')
{
t=24;
}
else if(val=='5')
{
t=25;
}
else if(val=='6')
{
t=26;
}
else if(val=='7')
{
t=27;
}
else if(val=='8')
{
t=28;
}
else if(val=='9')
{
t=29;
}
else if(val=='10')
{
t=30;
}
if(i>100)
{
digitalWrite(jia,HIGH);
delay(5000);
digitalWrite(jia,LOW);
}
if(j>100)
{
digitalWrite(huan,HIGH);
delay(60000);
digitalWrite(huan,LOW);
}
if(analogRead(12)>150)
{i=i+1;}
sensors.requestTemperatures();
if(sensors.getTempCByIndex(0)<t)
j=j+1;
delay(5);
}
这是自己写的一个蓝牙控制程序,很粗糙,拷到arduino上后很不稳定,怎样优化一下呢
1.判断那里不要用太多if,可以用switch来代替
2.val的字符类型,可以把val转成int类型再判断,那么12345678910那里直接就可以用一句代替掉了
转类型方法有两种
要不就是int a = val - '0'
要不就用atoi()函数
页:
[1]