Example program using the sensors on the MAXWSNENV board.

Dependencies:   BMP180 Si7020 mbed

Fork of MAXWSNENV_sensors by Kevin Gillepsie

Committer:
kgills
Date:
Mon May 18 18:08:59 2015 +0000
Revision:
5:bacbb8852026
Parent:
4:67b2c47ef52d
Adding mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kgills 0:aa46c0e0e4a0 1 /* mbed Microcontroller Library
kgills 0:aa46c0e0e4a0 2 * Copyright (c) 2006-2013 ARM Limited
kgills 0:aa46c0e0e4a0 3 *
kgills 0:aa46c0e0e4a0 4 * Licensed under the Apache License, Version 2.0 (the "License");
kgills 0:aa46c0e0e4a0 5 * you may not use this file except in compliance with the License.
kgills 0:aa46c0e0e4a0 6 * You may obtain a copy of the License at
kgills 0:aa46c0e0e4a0 7 *
kgills 0:aa46c0e0e4a0 8 * http://www.apache.org/licenses/LICENSE-2.0
kgills 0:aa46c0e0e4a0 9 *
kgills 0:aa46c0e0e4a0 10 * Unless required by applicable law or agreed to in writing, software
kgills 0:aa46c0e0e4a0 11 * distributed under the License is distributed on an "AS IS" BASIS,
kgills 0:aa46c0e0e4a0 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kgills 0:aa46c0e0e4a0 13 * See the License for the specific language governing permissions and
kgills 0:aa46c0e0e4a0 14 * limitations under the License.
kgills 0:aa46c0e0e4a0 15 */
kgills 0:aa46c0e0e4a0 16
kgills 0:aa46c0e0e4a0 17 #include <string.h>
kgills 0:aa46c0e0e4a0 18 #include "mbed.h"
kgills 0:aa46c0e0e4a0 19 #include "BMP180.h"
kgills 0:aa46c0e0e4a0 20 #include "Si7020.h"
kgills 0:aa46c0e0e4a0 21
kgills 0:aa46c0e0e4a0 22 // User I/O objects
kgills 0:aa46c0e0e4a0 23 DigitalOut red(LED_RED, LED_OFF);
kgills 0:aa46c0e0e4a0 24
kgills 0:aa46c0e0e4a0 25 // Sensor objects
kgills 0:aa46c0e0e4a0 26 I2C i2c(I2C_SDA, I2C_SCL);
kgills 0:aa46c0e0e4a0 27 AnalogIn light_ain(AIN_0D);
kgills 0:aa46c0e0e4a0 28 DigitalOut light_en(P0_2, 1);
kgills 0:aa46c0e0e4a0 29
kgills 0:aa46c0e0e4a0 30 BMP180 bmp180(&i2c);
kgills 0:aa46c0e0e4a0 31 Si7020 si7020(&i2c);
kgills 0:aa46c0e0e4a0 32
kgills 0:aa46c0e0e4a0 33 int currentPressure;
kgills 0:aa46c0e0e4a0 34 float currentHumidity;
kgills 0:aa46c0e0e4a0 35 float currentTemperature;
kgills 0:aa46c0e0e4a0 36 float currentLight;
kgills 0:aa46c0e0e4a0 37
kgills 0:aa46c0e0e4a0 38 // *****************************************************************************
kgills 0:aa46c0e0e4a0 39 int main(void)
kgills 0:aa46c0e0e4a0 40 {
kgills 0:aa46c0e0e4a0 41 printf("\n\nEnvironmental sensor demo\n");
kgills 0:aa46c0e0e4a0 42
kgills 0:aa46c0e0e4a0 43 /* Setup BMP180 */
kgills 0:aa46c0e0e4a0 44 while(bmp180.init() != 0) {
kgills 0:aa46c0e0e4a0 45 printf("Failed to initialize barometer\n");
kgills 0:aa46c0e0e4a0 46 wait(1);
kgills 0:aa46c0e0e4a0 47 }
kgills 0:aa46c0e0e4a0 48
kgills 0:aa46c0e0e4a0 49 while (true) {
kgills 0:aa46c0e0e4a0 50
kgills 0:aa46c0e0e4a0 51 // Start non-blocking readings
kgills 0:aa46c0e0e4a0 52 bmp180.startPressure(BMP180::STANDARD);
kgills 0:aa46c0e0e4a0 53 si7020.startHumidity();
kgills 0:aa46c0e0e4a0 54
kgills 0:aa46c0e0e4a0 55 // Toggle LED and wait between readings
kgills 0:aa46c0e0e4a0 56 red = 1;
kgills 0:aa46c0e0e4a0 57 wait(1);
kgills 0:aa46c0e0e4a0 58 red = 0;
kgills 0:aa46c0e0e4a0 59
kgills 0:aa46c0e0e4a0 60 // Enable light sensor to charge capacitor
kgills 0:aa46c0e0e4a0 61 light_en = 0;
kgills 0:aa46c0e0e4a0 62
kgills 0:aa46c0e0e4a0 63 // Get Pressure
kgills 0:aa46c0e0e4a0 64 if(bmp180.getPressure(&currentPressure) != 0) {
kgills 0:aa46c0e0e4a0 65 printf("Error getting pressure\n");
kgills 0:aa46c0e0e4a0 66 }
kgills 0:aa46c0e0e4a0 67
kgills 0:aa46c0e0e4a0 68 // Get Humidity
kgills 0:aa46c0e0e4a0 69 if(si7020.checkHumidity(&currentHumidity) != 0) {
kgills 0:aa46c0e0e4a0 70 printf("Error getting humidity\n");
kgills 0:aa46c0e0e4a0 71 }
kgills 0:aa46c0e0e4a0 72
kgills 0:aa46c0e0e4a0 73 // Get temperature
kgills 0:aa46c0e0e4a0 74 if(si7020.getPrevTemperature(&currentTemperature) != 0) {
kgills 0:aa46c0e0e4a0 75 printf("Error getting temperature\n");
kgills 0:aa46c0e0e4a0 76 }
kgills 0:aa46c0e0e4a0 77
kgills 0:aa46c0e0e4a0 78 // Get light
kgills 0:aa46c0e0e4a0 79 currentLight = light_ain.read();
kgills 0:aa46c0e0e4a0 80
kgills 0:aa46c0e0e4a0 81 // Disable light sensor
kgills 0:aa46c0e0e4a0 82 light_en = 1;
kgills 0:aa46c0e0e4a0 83
kgills 4:67b2c47ef52d 84 printf("Press = %0.1f kPa\n", (float)(currentPressure/1000.0));
kgills 4:67b2c47ef52d 85 printf("Humid = %0.1f %%\n", currentHumidity);
kgills 4:67b2c47ef52d 86 printf("Temp = %0.1f C\n", currentTemperature);
kgills 4:67b2c47ef52d 87 printf("Light = %0.1f %% \n", currentLight*100.0f);
kgills 0:aa46c0e0e4a0 88 printf("\n");
kgills 0:aa46c0e0e4a0 89 }
kgills 0:aa46c0e0e4a0 90 }