mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   ChaNFSSD EthernetNetIf I2CLEDDisp Agentbed ChaNFSUSB ILinterpreter mbed BMP085 WeatherMeters ConfigFile ChaNFS I2CLCD

Committer:
okini3939
Date:
Fri Mar 16 15:26:46 2012 +0000
Revision:
8:bed0b81794ba
Parent:
2:a3e5edf84f74

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 1:6c7141895545 1 /*
okini3939 1:6c7141895545 2 * Weather Station - mbed Weather Platform
okini3939 1:6c7141895545 3 * Copyright (c) 2011 Hiroshi Suga
okini3939 1:6c7141895545 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 1:6c7141895545 5 */
okini3939 1:6c7141895545 6
okini3939 1:6c7141895545 7 /** @file
okini3939 1:6c7141895545 8 * @brief Weather Station
okini3939 1:6c7141895545 9 */
okini3939 1:6c7141895545 10
okini3939 0:bdb53686c194 11 #include "mbed.h"
okini3939 0:bdb53686c194 12 #include "weather.h"
okini3939 0:bdb53686c194 13 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 14 #include "I2CLEDDisp.h"
okini3939 0:bdb53686c194 15 #include "I2CLCD.h"
okini3939 0:bdb53686c194 16
okini3939 0:bdb53686c194 17 static I2CLEDDisp *leddisp;
okini3939 0:bdb53686c194 18 static I2CLCD *lcd;
okini3939 0:bdb53686c194 19 static volatile int leddisp_freq = 0, leddisp_pos = -4;
okini3939 2:a3e5edf84f74 20 static char leddisp_buf[FORMAT_STR_SIZE];
okini3939 0:bdb53686c194 21 #endif
okini3939 0:bdb53686c194 22
okini3939 0:bdb53686c194 23 void update_display () {
okini3939 0:bdb53686c194 24 #ifdef USE_DISPLAY
okini3939 2:a3e5edf84f74 25 char buf[FORMAT_STR_SIZE];
okini3939 0:bdb53686c194 26
okini3939 2:a3e5edf84f74 27 if (conf.leddisp_mesg[0]) {
okini3939 2:a3e5edf84f74 28 format_str(conf.leddisp_mesg, leddisp_buf, sizeof_1(leddisp_buf));
okini3939 0:bdb53686c194 29 }
okini3939 0:bdb53686c194 30
okini3939 2:a3e5edf84f74 31 if (conf.lcd_mesg[0]) {
okini3939 2:a3e5edf84f74 32 format_str(conf.lcd_mesg, buf, sizeof_1(buf));
okini3939 0:bdb53686c194 33 lcd->cls();
okini3939 0:bdb53686c194 34 lcd->puts(buf);
okini3939 0:bdb53686c194 35 }
okini3939 0:bdb53686c194 36 #endif
okini3939 0:bdb53686c194 37 }
okini3939 0:bdb53686c194 38
okini3939 0:bdb53686c194 39 void pool_display () {
okini3939 0:bdb53686c194 40 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 41 int i, addr, len;
okini3939 0:bdb53686c194 42
okini3939 0:bdb53686c194 43 // LED Display scroll
okini3939 2:a3e5edf84f74 44 if (conf.leddisp_mesg[0]) {
okini3939 0:bdb53686c194 45 leddisp_freq ++;
okini3939 0:bdb53686c194 46 if (leddisp_freq > LED_FREQ) {
okini3939 0:bdb53686c194 47
okini3939 0:bdb53686c194 48 len = strlen(leddisp_buf);
okini3939 0:bdb53686c194 49 leddisp->locate(0, 0);
okini3939 0:bdb53686c194 50 for (i = 0; i < 4; i ++) {
okini3939 0:bdb53686c194 51 addr = leddisp_pos + i;
okini3939 0:bdb53686c194 52 if (addr >= 0 && addr < len) {
okini3939 0:bdb53686c194 53 leddisp->putc(leddisp_buf[addr]);
okini3939 0:bdb53686c194 54 } else {
okini3939 0:bdb53686c194 55 leddisp->putc(' ');
okini3939 0:bdb53686c194 56 }
okini3939 0:bdb53686c194 57 }
okini3939 0:bdb53686c194 58
okini3939 0:bdb53686c194 59 leddisp_pos ++;
okini3939 0:bdb53686c194 60 if (leddisp_pos >= len + 4) {
okini3939 0:bdb53686c194 61 leddisp_pos = -4;
okini3939 0:bdb53686c194 62 }
okini3939 0:bdb53686c194 63
okini3939 0:bdb53686c194 64 leddisp_freq = 0;
okini3939 0:bdb53686c194 65 }
okini3939 0:bdb53686c194 66 }
okini3939 0:bdb53686c194 67 #endif
okini3939 0:bdb53686c194 68 }
okini3939 0:bdb53686c194 69
okini3939 0:bdb53686c194 70 int init_display () {
okini3939 0:bdb53686c194 71 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 72
okini3939 2:a3e5edf84f74 73 if (conf.lcd_mesg[0]) {
okini3939 2:a3e5edf84f74 74 lcd = new I2CLCD(i2c, I2CLCD_ADDR, conf.lcdtype, conf.lcdconf);
okini3939 1:6c7141895545 75 #ifdef DEBUG
okini3939 2:a3e5edf84f74 76 printf("LCD: %s\r\n", conf.lcd_mesg);
okini3939 1:6c7141895545 77 #endif
okini3939 0:bdb53686c194 78 }
okini3939 0:bdb53686c194 79
okini3939 2:a3e5edf84f74 80 if (conf.leddisp_mesg[0]) {
okini3939 0:bdb53686c194 81 leddisp = new I2CLEDDisp(i2c);
okini3939 2:a3e5edf84f74 82 strncpy(leddisp_buf, VERSION, sizeof_1(leddisp_buf));
okini3939 1:6c7141895545 83 #ifdef DEBUG
okini3939 2:a3e5edf84f74 84 printf("LED disp: %s\r\n", conf.leddisp_mesg);
okini3939 1:6c7141895545 85 #endif
okini3939 0:bdb53686c194 86 }
okini3939 0:bdb53686c194 87
okini3939 0:bdb53686c194 88 #endif
okini3939 0:bdb53686c194 89 return 0;
okini3939 0:bdb53686c194 90 }