yijin 发表于 2013-4-24 13:00:57

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上后很不稳定,怎样优化一下呢

gjfhahaha 发表于 2013-4-24 16:44:10

1.判断那里不要用太多if,可以用switch来代替
2.val的字符类型,可以把val转成int类型再判断,那么12345678910那里直接就可以用一句代替掉了

转类型方法有两种
要不就是int a = val - '0'
要不就用atoi()函数
页: [1]
查看完整版本: arduino编程问题