Created
May 9, 2018 13:29
-
-
Save volca/6f92fc3c1f9f45add241160b6946f931 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Arduino.h> | |
#define MY_DEBUG | |
#define MY_BAUD_RATE 9600 | |
// Mode Radio / Enable and select radio type attached | |
#define MY_RADIO_NRF5_ESB | |
#define MY_NRF5_ESB_PA_LEVEL NRF5_PA_MAX | |
#define MY_NODE_ID 6 | |
#include "MySensors.h" | |
#include <Wire.h> | |
#include <Adafruit_BMP085.h> | |
Adafruit_BMP085 bmp = Adafruit_BMP085(); | |
#define CHILD_ID_TEMP 0 | |
#define CHILD_ID_BARO 1 | |
#define CHILD_ID_ALS 2 | |
#define SLEEP_NODE true // True to activate Sleep Mode, but currently unsupported on esp8266 | |
unsigned long SLEEP_TIME = 120 * 1000; // Sleep time between reads (in milliseconds) | |
#define RED_PIN 17 | |
#define GREEN_PIN 18 | |
#define BLUE_PIN 19 | |
#define COLOR_OFF 0 | |
#define COLOR_RED 1 | |
#define COLOR_GREEN 2 | |
#define COLOR_BLUE 4 | |
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); | |
MyMessage msgBaro(CHILD_ID_BARO, V_PRESSURE); | |
MyMessage msgForecast(CHILD_ID_BARO, V_FORECAST); | |
MyMessage msgALS(CHILD_ID_ALS, V_LIGHT_LEVEL); | |
void setColor (uint8_t c) { | |
digitalWrite (RED_PIN, !(c & COLOR_RED)); | |
digitalWrite (GREEN_PIN, !(c & COLOR_GREEN)); | |
digitalWrite (BLUE_PIN, !(c & COLOR_BLUE)); | |
} | |
void setup() { | |
setColor (COLOR_RED); | |
setColor (COLOR_GREEN); | |
setColor (COLOR_BLUE); | |
Wire.begin(); | |
pinMode (RED_PIN, OUTPUT); | |
pinMode (GREEN_PIN, OUTPUT); | |
pinMode (BLUE_PIN, OUTPUT); | |
setColor (COLOR_RED); | |
delay(250); | |
setColor (COLOR_GREEN); | |
delay(250); | |
setColor (COLOR_BLUE); | |
delay(250); | |
setColor (COLOR_OFF); | |
/* BMP180. */ | |
if (!bmp.begin()) { | |
Serial.println("Could not find a valid BMP085 sensor, check wiring!"); | |
setColor (COLOR_RED); | |
while (1); | |
} | |
} | |
void presentation() { | |
sendSketchInfo("nrf Sensor TAG", "1.0.0"); | |
// Sensor presentation to the GW | |
present(CHILD_ID_TEMP, S_TEMP); | |
present(CHILD_ID_BARO, S_BARO); | |
present(CHILD_ID_ALS, S_LIGHT_LEVEL); | |
} | |
void AP3216_write(uint8_t regAddress, uint8_t value) { | |
Wire.beginTransmission(0x1E); // I2C Address of AP3216 sensor is 0x1E | |
Wire.write(regAddress); | |
Wire.write(value); | |
Wire.endTransmission(); | |
} | |
uint8_t AP3216_read(uint8_t regAddress) { | |
Wire.beginTransmission(0x1E); // I2C Address of AP3216 sensor is 0x1E | |
Wire.write(regAddress); | |
Wire.endTransmission(); | |
Wire.requestFrom(0x1E, 1, true); | |
return Wire.read() & 0xFF; | |
} | |
uint16_t readALS (void) | |
{ | |
/* System mode: ALS function once */ | |
AP3216_write (0x0, 0x5); | |
delay (250); | |
return ((uint16_t) AP3216_read (0xC) << 8) | AP3216_read (0xD); | |
} | |
void loop() { | |
send(msgTemp.set(bmp.readTemperature(), 1)); | |
send(msgBaro.set(bmp.readPressure(), 1)); | |
send(msgForecast.set(bmp.readSealevelPressure(834.0), 1)); /* Change altitude here ! */ | |
send(msgALS.set(readALS(), 1)); | |
setColor (COLOR_BLUE); | |
delay (250); | |
setColor (COLOR_OFF); | |
if (SLEEP_NODE) | |
sleep(SLEEP_TIME); | |
else | |
delay (SLEEP_TIME); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
see this link