刚入手anduino几天,跟着论坛里的大神们学做倒车雷达报警系统,基本上是做出来,但是呢,我还想更加完美点,就是在执行倒车程序时LCD1602显示的是倒车距离,但是在没有执行倒车系统的时候就是显示温度就好,这个想法能实现吗,下面是我的代码。好像有点复杂。
- #include<LiquidCrystal.h>
- LiquidCrystal lcd(11,10,9,8,7,6,5);
- const int TrigPin = 2;
- const int EchoPin = 3;
- int potPin = 4;
- float cm;
- float temperature = 0;
- long val=0;
- void setup()
- {
- Serial.begin(9600);
- pinMode(TrigPin, OUTPUT);
- pinMode(EchoPin, INPUT);
- pinMode(13,OUTPUT); //buzzer
- pinMode(12,OUTPUT); //led
- lcd.begin(16,2);
- lcd.setCursor(3,0) ;
- lcd.print("Welcome to");
- lcd.setCursor(4,1) ;
- lcd.print("ROB11070");
- delay(1000);
- }
- void loop()
- {
- digitalWrite(12, LOW);
- digitalWrite(13, LOW);
- digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
- delayMicroseconds(2);
- digitalWrite(TrigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(TrigPin, LOW);
- cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
- cm= (int(cm * 100.0)) / 100.0; //保留两位小数
- Serial.print(cm);
- Serial.print("cm");
- Serial.println();
- delay(500);
- val = analogRead(potPin); //val变量为从DHT11信号口读取到的数值
- temperature = (val*0.0048828125*100); //把读取到的val转换为温度数值
-
- lcd.clear();
- lcd.setCursor(0,0) ;//设置光标位置为第二行第十个位置
- lcd.print("Temp:");
- lcd.setCursor(5,0);
- lcd.print((long)temperature / 10); //显示温度整数位
- lcd.print("."); //显示小数点
- lcd.print( (long)temperature % 10); //显示温度小数点后一位
- lcd.print((char)223); //显示o符号
- lcd.setCursor(0,1);
- lcd.print("D:");
- lcd.setCursor(3, 1) ;
- lcd.print(cm);
- lcd.print("cm");
- if (cm<=5)
- {
- unsigned char i;
- {for(i=0;i<10;i++)
- {digitalWrite(13, HIGH);
- delay(1);
- digitalWrite(13, LOW);
- delay(1);
-
- digitalWrite(12, HIGH);
- delay(1);
- digitalWrite(12,LOW);
- delay(1);
- }
- }
- }
- else if (cm<=10)
- {
- unsigned char i;
- {for(i=0;i<70;i++)
- {digitalWrite(13, HIGH);
- delay(3);
- digitalWrite(13, LOW);
- delay(3);
-
- digitalWrite(12, HIGH);
- delay(3);
- digitalWrite(12,LOW);
- delay(3);
- }
- }
- }
- }
复制代码 |