added analog sound and light
[GroveSensor] / GroveSensor.ino
1 #include <Arduino.h>
2 #include <U8x8lib.h>
3
4 #include "DHT.h"
5
6 #include <Adafruit_BMP280.h>
7
8 U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
9
10 // U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // OLEDs without Reset of the Display
11  
12
13 #define DHTPIN 3     // what pin we're connected to
14 #define DHTTYPE DHT11   // DHT 11 
15
16 DHT dht(DHTPIN, DHTTYPE);
17
18
19 Adafruit_BMP280 bmp; // I2C
20
21
22 #define BUTTON_PIN 6 
23
24 #define SOUND_PIN A2
25 #define LIGHT_PIN A6
26  
27 void setup(void) {
28   //u8x8.setBusClock(100000);  // If you breakout other modules, please enable this line
29   u8x8.begin();
30   u8x8.setPowerSave(0);
31   u8x8.setFlipMode(1);
32
33   Serial.begin(115200);
34
35   dht.begin();
36
37   if (!bmp.begin()) {
38     Serial.println(F("Could not find a valid BMP280 sensor!"));
39   }
40
41   /* Default settings from datasheet. */
42   bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
43                   Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
44                   Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
45                   Adafruit_BMP280::FILTER_X16,      /* Filtering. */
46                   Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
47
48   pinMode(BUTTON_PIN, OUTPUT);
49   pinMode(SOUND_PIN, INPUT);
50   pinMode(LIGHT_PIN, INPUT);
51
52 }
53
54 unsigned long button_timeout;
55  
56 void loop(void) {
57
58   int oled_active = ! digitalRead(BUTTON_PIN);
59   u8x8.setPowerSave( oled_active );
60
61   float temp, humi;
62   temp = dht.readTemperature();
63   humi = dht.readHumidity();
64
65   u8x8.setFont(u8x8_font_chroma48medium8_r);
66   u8x8.setCursor(0, 0);
67   //u8x8.print("Temp:");
68   u8x8.print(temp);
69   u8x8.print("C ");
70   Serial.print("dht_temp=");
71   Serial.print(temp);
72
73   temp = bmp.readTemperature();
74   u8x8.print( temp );
75   Serial.print(",bmp_temp=");
76   Serial.print(temp);
77
78   u8x8.print(" ");
79
80   u8x8.setCursor(0,1 * 9);
81   u8x8.print("Humidity:");
82   u8x8.print(humi);
83   u8x8.print("%");
84   Serial.print(",dht_humidity=");
85   Serial.print(humi);
86
87   float pressure;
88   pressure = bmp.readPressure();
89
90   u8x8.setCursor(0,2 * 9);
91   u8x8.print( pressure );
92   Serial.print(",bmp_pressure=");
93   Serial.print(pressure);
94
95   int sound = analogRead(SOUND_PIN);
96   u8x8.setCursor(0,3 * 9);
97   u8x8.print( sound );
98   Serial.print(",sound=");
99   Serial.print(sound);
100
101   int light = analogRead(LIGHT_PIN);
102   u8x8.setCursor(0,3 * 9);
103   u8x8.print( light );
104   Serial.print(",light=");
105   Serial.print(light);
106   Serial.println();
107
108   u8x8.refreshDisplay();
109   delay(1000);
110
111 }
112