Arduino显示PM2.5

这代码一般都是复制过来,在小改下就行了

代码如下:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>  

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);  

#define LOGO16_GLCD_HEIGHT 16 //定义显示高度
#define LOGO16_GLCD_WIDTH  16 //定义显示宽度 

int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2; //Connect 3 led driver pins of dust sensor to Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;

int dustVal=0;
int i=0;
float ppm=0;
char s[32];
float voltage=0;
float dustdensity=0;
float ppmpercf=0;

void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
 // by default, we‘ll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  // init done
  i=0;
  ppm=0;
  display.clearDisplay();
}
void loop(){
  i=i+1;
  digitalWrite(ledPower,LOW); // power on the LED
  delayMicroseconds(samplingTime);
  dustVal = analogRead(measurePin); // read the dust value
  ppm=ppm+dustVal;
  delayMicroseconds(deltaTime);
  digitalWrite(ledPower,HIGH); // turn the LED off
  delayMicroseconds(sleepTime);

  voltage=ppm/i*0.0049;
  dustdensity=0.17*voltage-0.1;
  ppmpercf=(voltage-0.0256)*120000;
  if(ppmpercf<0) ppmpercf=0; if(dustdensity<0) dustdensity=0; if(dustdensity>0.5)
  dustdensity=0.5;
  String dataString="";
  dataString+=dtostrf(voltage,9,4,s);
  dataString+="PM2.5 ---> ";
  dustdensity = dustdensity*1000;
  dataString+=dtostrf(dustdensity,5,2,s);
  dataString+="    -----> ";
  dataString+=dtostrf(ppmpercf,8,0,s);
  i=0;
  ppm=0;
   Serial.println(dustdensity);
  Serial.println(dataString);
  display.clearDisplay();
  display.setCursor(0,0);
  display.setTextSize(1);             //设置字体大小
  display.setTextColor(WHITE);        //设置字体白色
  display.print("dustDensity:");
  display.print(dataString);                //输出字符
  display.display();                  //显示以上 

delay(1000);
}

模块:

OLED12864显示屏:

模块针脚        Arduino针脚

VCC     ---->   3.3V

GND    ---->    GND

SCL     ---->    A5

SDA    ---->    A4

夏普灰尘传感器GP2Y10:

时间: 2024-08-08 13:57:59

Arduino显示PM2.5的相关文章

卡萨帝2017微生活艺术展邀您带着显微镜看生活

4月22日,2017年度卡萨帝"放大微观世界 还原艺术生活"微生活艺术展首站走进成都.这是继北京微生活艺术展之后,卡萨帝再度发起关于微生活的全民探讨,通过还原健康饮食.高端洗护.生态呼吸.恒温储酒四大真相,卡萨帝再次深入挖掘用户在微观层面的真实需求,邀请用户带着显微镜看生活,解用户之惑,予用户所需. 受困于自身的认知局限,人类对日常生活中的诸多现象始终存在难解的困惑.例如,冷藏在冰箱中的食材表面上依旧新鲜,但是口感却大打折扣:崭新的衣物未经外力作用,仅洗涤数次后就会松垮变形:室内空气检

吴裕雄 实战python编程(3)

import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com'html = requests.get(url)sp = BeautifulSoup(html.text, 'html.parser')print(sp) html_doc = """<html><head><title>页标题</title></head> <p

吴裕雄 实战PYTHON编程(8)

import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76,93,56], "黄美丽":[81,85,91,89,77], "熊小娟":[79,53,47,94,80] } )print(df) import pandas as pd datas = [[65,92,78,83,70], [90,72,76,93,56], [8

吴裕雄 python 爬虫(2)

import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com' html = requests.get(url) sp = BeautifulSoup(html.text, 'html.parser') print(sp) html_doc = """ <html><head><title>页标题</title></head> &l

arduino使用oled显示时间MQ_2温湿度

这代码一般都是复制过来,在小改下就行了 代码如下: double Fahrenheit(double celsius) { return 1.8 * celsius + 32; } //摄氏温度度转化为华氏温度 double Kelvin(double celsius) { return celsius + 273.15; } //摄氏温度转化为开氏温度 // 露点(点在此温度时,空气饱和并产生露珠) // 参考: http://wahiduddin.net/calc/density_algor

PMS5003ST+Arduino Nano OLED屏显示

整合OLED显示和PMS5003报数 #include <Arduino.h> #include <pms.h> ////////////////////////////////// #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> ////////////////////////////////////

Arduino 开源库 u8glib2 之 图标显示【原创】

Arduino 开源库 u8glib2 研究之 图标显示                -----------------关于drawXBM drawXBMP函数使用的研究 因为心血来潮,近来想做一个贪食蛇的游戏,手上有Arduino和我们自己开发的Newbit OLED Shield,硬件完全满足,所以在网上搜了下,发现好多人在用u8glib, 现在已经出了第二版 u8glib2, 第一版已经停止维护了, 不过两版的源码可以在 github.com下载,具体网址是 这个库很强大,显示文字(多种

图形化编程娱乐于教,Kittenblock arduino实例,液晶屏显示

跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知识.会陆续分享图形化编程的经验,希望能够做成一个专题.如果您觉得有用,就给点个赞吧.涉及的软件包括Kittenblock.arduino. 程序解读:数码管计时器,通过延迟时间为一秒,变量加1,完成记录时间 知识点:液晶屏显示,arduino,执行器,结构 重点:液晶屏显示 涉及的软件:Kitten

Arduino Uno 开发简介

Arduino是源于意大利的一套开源硬件开发平台,Arduino Uno是其推出的最为基础的开发板.配合外围器件(传感器,控制开关,LED屏等),任何稍有电子电路基础的人都可以基于这个平台快速搭建出具有各种有趣功能的实用电子电路.首先介绍一下Arduino Uno开发板的基本组成. 图1 ArduinoUno开发板 1.      微处理器:ATmega328,8位微处理器,片内包含32KB Flash(0.5KB由BootLoader使用),2KB SRAM,1KB EEPROM,运行时钟频率