温湿度数据采集
目的本教程将教大家如何把AM2321传感器测到的温度和湿度数据以曲线图的方式在Processing中显示。 设备
原理图直接使用Microduino-Weatherstation上的AM2321温湿度传感器 程序TemperatureHumidityDataArduino 调试步骤一:按着原理图搭建硬件环境,像这样: 步骤二:解释一下代码: 本例需要两端的代码,Processing端和Microduino端 Microduino: //得到温湿度数据后输出到串口以便Processing显示 void loop()
{
am2321.read();
temperature=(float)am2321.temperature/10.0;
humidity=(float)am2321.humidity/10.0;
Serial.print(temperature);
Serial.print(",");
Serial.println(humidity);
delay(100);
}
Processing: //得到第一个串口的数据,并定义如果有换行就缓存 // is always my Arduino, so I open Serial.list()[0].
// Open whatever port is the one you're using.
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil('\n'); // Trigger a SerialEvent on new line
//把从Microduino接收到的数据取出来后以不同颜色的曲线图的形式显示在屏幕上,并标上标尺 void draw() {
background(255);
// Draw lines connecting all points
for (int i = 0; i < vals.length-1; i++) {
strokeWeight(1);
stroke(255,0,0);
line(i, vals[i], i+1, vals[i+1]);
stroke(0,0,255);
line(i, vals2[i], i+1, vals2[i+1]);
}
// Slide everything down in the array
for (int i = 0; i < vals.length-1; i++) {
vals[i] = vals[i+1];
vals2[i] = vals2[i+1];
}
String val = myPort.readStringUntil('\n');
if (val != null) {
val = trim(val);
println(val);
String tempAndHumidty[]=val.split(",");
temp=tempAndHumidty[0];
humidity=tempAndHumidty[1];
lux=Float.parseFloat(val);
}
vals[vals.length-1] = 200-temp;
vals2[vals.length-1] = 200-humidity;
//Display scale
fill(0, 0, 0);
text ( "200-", 370, 10);
text ( "--", 370, 50);
text ( "100-", 370, 100);
text ( "--", 370, 150);
text ( "0-", 370, 200);
//show current num
fill(255, 0, 0);
text ( "temp:"+temp+"'C", 0, 15);
fill(0, 0, 255);
text ( "humidity:"+humidity+"%", 0, 28);
}
步骤三:下载代码并编译通过。 步骤四:运行后,改变传感器周围的温湿度,看看曲线图是否变化。 结果屏幕上会显示温度和湿度的曲线图数据,温度为红色,湿度为蓝色,像这样:
视频 |

