完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
制作前的准备 制作需要的材料 这个小的空气检测仪使用的材料分为4部分也就是主控、传感器还有显示器件,以及部分元器件:
硬件接线 屏幕 [tr]LCD12864引脚[/tr]
值得一提的是PSB是用来做串/并模式选择的,我们采用的SPI串行通信,所以这里PSB接低电平(GND),RS是串行片选信号。 温湿度气压传感器 [tr]传感器端口引脚[/tr]
这位作者的讲解比较详细,我就不作赘述。简单的说一下接线吧。 [tr]传感器端口引脚[/tr]
LCD12864 显示驱动 使用LCD12864RSPI的库,用来驱动。 #include void setup() { LCDA.Initialise(); // 屏幕初始化 } void LcdDisplay() { LCDA.CLEAR(); LCDA.DisplayString(0,0,show1,AR_SIZE(show1)); //0行0列开始显示 LCDA.DisplayString(0,3,AirQulity,strlen(AirQulity)); //0行3列开始显示 } 温湿度气压 GY-BME 280 简单一些的话,可以考虑使用Adafruit_BME280的库,这个库相当好用。但是,因为和中断有冲突,所以方法不可以直接写在中断定时器里,程序会直接跑飞。 #include #include void setup() { bme.begin(); } void get_BME_Value() { int tempratureValue = (int)(bme.readTemperature()*100); int humidityValue = (int)(bme.readHumidity()*100); int pressureValue = (int)(bme.readPressure()/100.0F); //TODO 写对这些数据的格式化 } GP2Y1014AU粉尘传感器模块(PM8) 这个需要使用Arduino NANO的AD(模数转换器)来采集数据,采集到数据后通过公式(公式需要进行一定的校准)。大体是基于官方的一张图。 V0产生有效电压的前提是,在第一个脉冲信号0.28ms后,待电平稳定后进行采集。 /**********************************************/ // SHARP 1014 空气传感器(0.8) //入口函数 无 //出口函 无 /***********************************************/ void get_AirQulity() { digitalWrite(ledPower, LOW); delayMicroseconds(delayTime); dustVal = analogRead(dustPin); delayMicroseconds(delayTime2); digitalWrite(ledPower, HIGH); delayMicroseconds(offTime); if (dustVal > 36.455) { result = (int)((float(dustVal / 1024) * 737.7) - 16.4); //个人总结 } memset(AirQulity, 0, sizeof(AirQulity)); sprintf(AirQulity,"%d",result); strcat(AirQulity," ug/m3"); strcat(AirQulity,' |