极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22424|回复: 7

LCD12864 翻页显示求助

[复制链接]
发表于 2017-4-8 20:05:43 | 显示全部楼层 |阅读模式
arduino mega 2560+攀藤 G1(pm2.5传感器)+DHT22+LCD12864

目前可以通过LCD实现单页显示(仅显示中标的pm2.5以及DHT22的温湿度),由于G1可传感数据比较多(中标,美标以及颗粒物数),想通过两个按键来实现LCD上下翻页来实现所有数据的显示。求代码或相关例程!

感谢万分!!!
回复

使用道具 举报

 楼主| 发表于 2017-4-8 20:06:09 | 显示全部楼层
自己顶一个,别沉了!
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:11:08 | 显示全部楼层
像這樣嗎?還在測試中,做得不是很好.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-10 13:44:56 | 显示全部楼层
能否看一下代码,学习学习!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-10 13:45:43 | 显示全部楼层
jasonwang1208 发表于 2017-4-8 21:11
像這樣嗎?還在測試中,做得不是很好.

能否看一下代码,学习学习!
回复 支持 反对

使用道具 举报

发表于 2017-4-10 14:07:10 | 显示全部楼层
wwwyyy317 发表于 2017-4-10 13:45
能否看一下代码,学习学习!

我的代碼很亂沒整理.


  1. ******************************************************************************/

  2. #include <SD.h>
  3. const int chipSelect = 4;
  4. int w=0;
  5. #include <Wire.h>
  6. #include "RTClib.h"
  7. RTC_DS1307 RTC;
  8. String thisMonth = "";
  9. String thisTime = "";
  10. String thisDay="";
  11. #include <dht.h>
  12. #define dht_dpin 3
  13. dht DHT;   
  14. #include "U8glib.h"
  15. #include <SPI.h>
  16. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
  17. #define DUSTpin A0
  18. #define DUSTLEDpin 2
  19. const int delayTime=280;
  20. const int delayTime2=40;
  21. const float offTime=9680;
  22. double dustVal=0;
  23. int count = 0;
  24. int led = 5;
  25. void setup(void) {
  26.   pinMode(led, OUTPUT);  
  27.   Wire.begin();
  28.   RTC.begin();
  29.   if (! RTC.isrunning()) {
  30.     Serial.println("RTC is NOT running!");
  31.     RTC.adjust(DateTime(__DATE__, __TIME__));
  32.   }
  33.   Serial.begin(9600);
  34. Serial.print("Initializing SD card...");
  35.   pinMode(10, OUTPUT);
  36. if (!SD.begin(chipSelect)) {
  37.    Serial.println("Card failed, or not present");
  38.    return;
  39. }
  40. }

  41. void loop(void) {
  42.   
  43.   u8g.firstPage();
  44.   do {
  45.      draw();
  46.      delay(500);
  47.     }
  48. while( u8g.nextPage() );
  49.   
  50.   int dustLevel = readPM();
  51.   double dustVolt = dustLevel*(5.0 / 1024.0);
  52.   dustVal = 0.172 * dustVolt - 0.00;
  53.   dustVal =dustVal*1000.0 ; //mg to ug
  54.   u8g.drawStr(100,47,"0");
  55. }

  56. int readPM(void){
  57. digitalWrite(DUSTLEDpin,LOW);
  58. delayMicroseconds(delayTime);
  59. int Val = analogRead(DUSTpin);
  60. delayMicroseconds(delayTime2);
  61. digitalWrite(DUSTLEDpin,HIGH);
  62. delayMicroseconds(offTime);
  63. return Val;
  64. }

  65. void draw(void) {
  66. digitalWrite(led, LOW);
  67. File dataFile = SD.open("datalog.txt", FILE_WRITE);
  68. if (SD.exists("datalog.txt")){
  69. Serial.println("datalog.txt exists.");
  70. if (dataFile) {
  71. u8g.setFontPosTop();  
  72. u8g.setFont(u8g_font_profont15);
  73. DateTime now = RTC.now();
  74. thisMonth="";
  75. thisDay= String(now.month(), DEC) + "/";
  76. thisDay=thisDay + String(now.day(), DEC) + "/";
  77. thisDay=thisDay + String(now.year() , DEC);
  78. const char* newDay = (const char*) thisDay.c_str();
  79. u8g.setPrintPos(1,14);
  80. u8g.print(newDay);
  81. thisTime="";
  82. thisTime=String(now.hour()) + ":";
  83. if (now.minute() < 10){ thisTime=thisTime + "0";}
  84. thisTime=thisTime + String(now.minute()) + ":";
  85. thisTime=thisTime + String(now.second());
  86. const char* newTime = (const char*) thisTime.c_str();
  87. u8g.setPrintPos(1,25);
  88. u8g.print(newTime);
  89. int chk = DHT.read11(dht_dpin);  
  90. int humi = DHT.humidity+35;
  91. String thishumi1 = String(humi);
  92. const char* thishumi = (const char*) thishumi1.c_str();
  93. u8g.setPrintPos(1,36);
  94. u8g.print(thishumi);
  95. u8g.setPrintPos(15,36);
  96. u8g.print("%/");
  97. int temp = DHT.temperature-2;  
  98. String thisTemp1 = String(temp) ;
  99. const char* thisTemp = (const char*) thisTemp1.c_str();
  100. u8g.setPrintPos(30,36);
  101. u8g.print(thisTemp);
  102. u8g.setPrintPos(45,36);
  103. u8g.print("\260C");
  104. u8g.setPrintPos(0,47);
  105. u8g.print(dustVal);
  106. u8g.setPrintPos(50,47);
  107. u8g.print("ug/m3");
  108.   if (now.second()==59){
  109.     digitalWrite(led, HIGH);
  110.     dataFile.print(newDay);
  111.     dataFile.print(",");
  112.     dataFile.print(newTime);
  113.     dataFile.print(",");
  114.     dataFile.print(thishumi);
  115.     dataFile.print(",");
  116.     dataFile.print(thisTemp);
  117.     dataFile.print(",");
  118.     dataFile.print(dustVal);
  119.     dataFile.println(",");
  120.     delay(500);
  121.     digitalWrite(led, LOW);
  122.   }
  123.        
  124.     dataFile.close();
  125.    
  126.   } else {
  127.         digitalWrite(led, HIGH);   
  128.     Serial.println("error opening datalog.txt");
  129.   }
  130.   
  131. }else {
  132.     Serial.println("datalog.txt doesn't exist.");
  133.   digitalWrite(led, HIGH);  
  134.   }
  135.   
  136. }



复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-10 15:41:38 | 显示全部楼层
jasonwang1208 发表于 2017-4-10 14:07
我的代碼很亂沒整理.

谢了!  你的pm2.5传感器是哪一款?
回复 支持 反对

使用道具 举报

发表于 2017-4-11 09:39:02 | 显示全部楼层
wwwyyy317 发表于 2017-4-10 15:41
谢了!  你的pm2.5传感器是哪一款?

GP2Y1010AU0F
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 04:48 , Processed in 0.067825 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表