|
|
本帖最后由 magnet999999 于 2015-7-17 15:23 编辑
我用的TM1650LED数字模块,不能把计算出的数据直接显示,需要按照下面的格式才能行TM1650 displayString(char *aString);
但是计算出的数据是float类型的,我该怎么转换。
原程序如下
int dustPin=A0;
int dustVal=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
//pinMode(4, OUTPUT);
}
void loop(){
// ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(offTime);
delay(3000);
Serial.println(dustVal);
float dustVal2=dustVal;
dustVal2=(dustVal2*5/1024-0.0356)*120000;
Serial.println(dustVal2);//实际的颗粒数
if(dustVal2<76)
{
Serial.println("EXCELLENT");
}
else if(dustVal2<151)
{
Serial.println("VERY GOOD");
}
else if(dustVal2<301)
{
Serial.println("GOOD");
}
else if(dustVal2<1051)
{
Serial.println("FAIR");
}
else if(dustVal2<3001)
{
Serial.println("POOR");
}
else
{
Serial.println("VERY POOR");
}
if(dustVal>118)
//此拟合公式有效y=0.172*x-0.0999
{
float dustVal3=dustVal;
dustVal3=((dustVal3*5/1024)*0.172-0.0999)*1000;
Serial.println("PM2.5:");
Serial.println(dustVal3);//实际的颗粒数
}
else
{
Serial.println("PM2.5:");
Serial.println("----");
}
}
我修改的程序
- #include <Wire.h>
- #include <TM1650.h>
- char s[10];
- float dustVal3;
- int dustPin=A0;
- int dustVal=0;
- int ledPower=2;
- int delayTime=280;
- int delayTime2=40;
- float offTime=9680;
- void setup(){
- Serial.begin(9600);
- pinMode(ledPower,OUTPUT);
- //pinMode(4, OUTPUT);
- }
- void loop(){
- // ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
- digitalWrite(ledPower,LOW); // power on the LED
- delayMicroseconds(delayTime);
- dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
- delayMicroseconds(delayTime2);
- digitalWrite(ledPower,HIGH); // turn the LED off
- delayMicroseconds(offTime);
- delay(3000);
- Serial.println(dustVal);
- float dustVal2=dustVal;
- dustVal2=(dustVal2*5/1024-0.0356)*120000;
- Serial.println(dustVal2);//实际的颗粒数
- if(dustVal2<76)
- {
- Serial.println("EXCELLENT");
- }
- else if(dustVal2<151)
- {
- Serial.println("VERY GOOD");
- }
- else if(dustVal2<301)
- {
- Serial.println("GOOD");
- }
- else if(dustVal2<1051)
- {
- Serial.println("FAIR");
- }
- else if(dustVal2<3001)
- {
- Serial.println("POOR");
- }
- else
- {
- Serial.println("VERY POOR");
- }
- if(dustVal>118)
- //此拟合公式有效y=0.172*x-0.0999
- {
- dustVal3=((dustVal3*5/1024)*0.172-0.0999)*1000;
- Serial.println("PM2.5:");
- String dataString;
- dataString=dtostrf(dustVal3,3.0,s);
- TM1650 displayString(dataString);//实际的颗粒数
- }
- else
- {
- Serial.println("PM2.5:");
- Serial.println("----");
- }
- }
复制代码
|
|