This application shows an example of how to control the RGB LED over RPC. The app also contains an HTTP server and uses other components such as the LCD and Temperature Sensor to display additional information.

Dependencies:   C12832_lcd EthernetInterface HTTPServer LM75B MutexLocker mbed-rpc mbed-rtos mbed

Committer:
cabledev
Date:
Thu May 15 21:47:49 2014 +0000
Revision:
1:784afed9dbfe
Parent:
0:452a42421de4
Child:
2:1c34cfdbc18a
- added BSD 2-Clause License

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cabledev 0:452a42421de4 1 /**
cabledev 0:452a42421de4 2 * Notice:
cabledev 0:452a42421de4 3 *
cabledev 0:452a42421de4 4 * Neither CableLabs nor any member company is responsible to any party for any liability of any nature whatsoever
cabledev 0:452a42421de4 5 * resulting from or arising out of use or reliance upon this software. This software is furnished on an "AS IS" basis
cabledev 0:452a42421de4 6 * and neither CableLabs nor its members provides any representation or warranty, express or implied, regarding the
cabledev 0:452a42421de4 7 * accuracy, completeness, or fitness for a particular purpose of this software.
cabledev 0:452a42421de4 8 *
cabledev 0:452a42421de4 9 * (C)Copyright 2014 Cable Television Laboratories, Inc. All rights reserved.
cabledev 1:784afed9dbfe 10 *
cabledev 1:784afed9dbfe 11 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
cabledev 1:784afed9dbfe 12 * following conditions are met:
cabledev 1:784afed9dbfe 13 *
cabledev 1:784afed9dbfe 14 * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
cabledev 1:784afed9dbfe 15 *
cabledev 1:784afed9dbfe 16 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
cabledev 1:784afed9dbfe 17 * disclaimer in the documentation and/or other materials provided with the distribution.
cabledev 1:784afed9dbfe 18 *
cabledev 1:784afed9dbfe 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
cabledev 1:784afed9dbfe 20 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
cabledev 1:784afed9dbfe 21 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
cabledev 1:784afed9dbfe 22 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
cabledev 1:784afed9dbfe 23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
cabledev 1:784afed9dbfe 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
cabledev 1:784afed9dbfe 25 * POSSIBILITY OF SUCH DAMAGE.
cabledev 1:784afed9dbfe 26 *
cabledev 0:452a42421de4 27 * -----------------------------------------------------------------------------
cabledev 0:452a42421de4 28 *
cabledev 0:452a42421de4 29 * File: main.cpp
cabledev 0:452a42421de4 30 *
cabledev 0:452a42421de4 31 */
cabledev 0:452a42421de4 32
cabledev 0:452a42421de4 33 #include "mbed.h"
cabledev 0:452a42421de4 34
cabledev 0:452a42421de4 35 // LCD
cabledev 0:452a42421de4 36 #include "C12832_lcd.h"
cabledev 0:452a42421de4 37 #include "Small_7.h"
cabledev 0:452a42421de4 38
cabledev 0:452a42421de4 39 // HTTPServer
cabledev 0:452a42421de4 40 #include "HTTPServer.h"
cabledev 0:452a42421de4 41 #include "FsHandler.h"
cabledev 0:452a42421de4 42 #include "LocalFileSystem.h"
cabledev 0:452a42421de4 43 #include "RpcHandler.h"
cabledev 0:452a42421de4 44 #include "mbed_rpc.h"
cabledev 0:452a42421de4 45
cabledev 0:452a42421de4 46 // Temperature sensor
cabledev 0:452a42421de4 47 #include "mutexlocker.h"
cabledev 0:452a42421de4 48 #include "LM75B.h"
cabledev 0:452a42421de4 49
cabledev 0:452a42421de4 50 #define ON 1
cabledev 0:452a42421de4 51 #define OFF 0
cabledev 0:452a42421de4 52 #define DIM 0.3
cabledev 0:452a42421de4 53 #define SERIAL_BAUD 115200 // 9600
cabledev 0:452a42421de4 54 #define HTTP_LISTEN_PORT 80
cabledev 0:452a42421de4 55
cabledev 0:452a42421de4 56 // blinks LED1 when the HTTP server is listening for connections
cabledev 0:452a42421de4 57 //#define LISTENING_LED
cabledev 0:452a42421de4 58
cabledev 0:452a42421de4 59 // for some reason, getting the return code causes the HTTP server to be unresponsive
cabledev 0:452a42421de4 60 #define ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 61
cabledev 0:452a42421de4 62 // uncomment the following line for static IP address
cabledev 0:452a42421de4 63 //#define STATIC_IP
cabledev 0:452a42421de4 64 #define STATIC_IP_ADDRESS "192.168.1.177"
cabledev 0:452a42421de4 65 #define STATIC_IP_NETMASK "255.255.255.0"
cabledev 0:452a42421de4 66 #define STATIC_IP_GATEWAY "192.168.1.1"
cabledev 0:452a42421de4 67
cabledev 0:452a42421de4 68 #define TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 69
cabledev 0:452a42421de4 70 // LCD
cabledev 0:452a42421de4 71 // LCD object
cabledev 0:452a42421de4 72 C12832_LCD lcd;
cabledev 0:452a42421de4 73
cabledev 0:452a42421de4 74 // the led's are connected to vcc, so a PwmOut of 100% will shut off the led and 0% will let it shine!
cabledev 0:452a42421de4 75 PwmOut r(p23);
cabledev 0:452a42421de4 76 PwmOut g(p24);
cabledev 0:452a42421de4 77 PwmOut b(p25);
cabledev 0:452a42421de4 78 RpcPwmOut rpc_r(p23,"r");
cabledev 0:452a42421de4 79 RpcPwmOut rpc_g(p24,"g");
cabledev 0:452a42421de4 80 RpcPwmOut rpc_b(p25,"b");
cabledev 0:452a42421de4 81 // used to restore the rgb value after turning LED off and back on
cabledev 0:452a42421de4 82 bool powerOn = true;
cabledev 0:452a42421de4 83 float lastH = 0.0;
cabledev 0:452a42421de4 84 float lastS = 0.0;
cabledev 0:452a42421de4 85 float lastV = -1.0;
cabledev 0:452a42421de4 86
cabledev 0:452a42421de4 87 AnalogIn Pot1(p19);
cabledev 0:452a42421de4 88 AnalogIn Pot2(p20);
cabledev 0:452a42421de4 89
cabledev 0:452a42421de4 90 // Ethernet
cabledev 0:452a42421de4 91 EthernetInterface eth;
cabledev 0:452a42421de4 92 bool ethConnected;
cabledev 0:452a42421de4 93
cabledev 0:452a42421de4 94 // HTTPServer
cabledev 0:452a42421de4 95 #ifdef LISTENING_LED
cabledev 0:452a42421de4 96 // Use LED1 to indicate that the main loop is still executing
cabledev 0:452a42421de4 97 DigitalOut listeningLed(LED1);
cabledev 0:452a42421de4 98 #endif
cabledev 0:452a42421de4 99 // Use the serial connection 'pc' to dump debug information
cabledev 0:452a42421de4 100 Serial pc(USBTX, USBRX, "pc");
cabledev 0:452a42421de4 101 // Instantiate a HTTPServer to handle incoming requests
cabledev 0:452a42421de4 102 HTTPServer svr;
cabledev 0:452a42421de4 103 // Instantiate a local file system handler named 'local' which will be used later to access files on the mbed.
cabledev 0:452a42421de4 104 LocalFileSystem local("local");
cabledev 0:452a42421de4 105
cabledev 0:452a42421de4 106 // Temperature sensor
cabledev 0:452a42421de4 107 Mutex mutex;
cabledev 0:452a42421de4 108 LM75B temperatureSensor(p28,p27);
cabledev 0:452a42421de4 109
cabledev 0:452a42421de4 110 // RPC Variables
cabledev 0:452a42421de4 111 /*
cabledev 0:452a42421de4 112 //First create the variables you wish to use
cabledev 0:452a42421de4 113 float f;
cabledev 0:452a42421de4 114 int i;
cabledev 0:452a42421de4 115 char c;
cabledev 0:452a42421de4 116 //Then attach them to an RPCVariable Object
cabledev 0:452a42421de4 117 RPCVariable<float> rpc_f(&f, "f");
cabledev 0:452a42421de4 118 RPCVariable<int> rpc_i(&i, "i");
cabledev 0:452a42421de4 119 RPCVariable<char> rpc_c(&c, "c");
cabledev 0:452a42421de4 120 */
cabledev 0:452a42421de4 121
cabledev 0:452a42421de4 122 // RPC Functions
cabledev 0:452a42421de4 123 void setLight(Arguments* input, Reply* output);
cabledev 0:452a42421de4 124
cabledev 0:452a42421de4 125 // invoke with "http://<eth_ip>/RPC/setLightColor/run <H> <S> <V> <brightness> <powerOn>",
cabledev 0:452a42421de4 126 // where 0 <= H <= 360, 0 <= S <= 1, 0 <= V <= 1
cabledev 0:452a42421de4 127 RPCFunction rpc_setLight(&setLight, "setLight");
cabledev 0:452a42421de4 128
cabledev 0:452a42421de4 129 // function to convert hue , saturation and value to RGB
cabledev 0:452a42421de4 130 // see http://en.wikipedia.org/wiki/HSL_and_HSV
cabledev 0:452a42421de4 131 void hsv2rgb(float H,float S, float V)
cabledev 0:452a42421de4 132 {
cabledev 0:452a42421de4 133 float f,h,p,q,t;
cabledev 0:452a42421de4 134 int i;
cabledev 0:452a42421de4 135 if( S == 0.0) {
cabledev 0:452a42421de4 136 r = 1.0 - V; // invert pwm !
cabledev 0:452a42421de4 137 g = 1.0 - V;
cabledev 0:452a42421de4 138 b = 1.0 - V;
cabledev 0:452a42421de4 139 return;
cabledev 0:452a42421de4 140 }
cabledev 0:452a42421de4 141 if(H > 360.0) H = 0.0; // check values
cabledev 0:452a42421de4 142 if(S > 1.0) S = 1.0;
cabledev 0:452a42421de4 143 if(S < 0.0) S = 0.0;
cabledev 0:452a42421de4 144 if(V > 1.0) V = 1.0;
cabledev 0:452a42421de4 145 if(V < 0.0) V = 0.0;
cabledev 0:452a42421de4 146 h = H / 60.0;
cabledev 0:452a42421de4 147 i = (int) h;
cabledev 0:452a42421de4 148 f = h - i;
cabledev 0:452a42421de4 149 p = V * (1.0 - S);
cabledev 0:452a42421de4 150 q = V * (1.0 - (S * f));
cabledev 0:452a42421de4 151 t = V * (1.0 - (S * (1.0 - f)));
cabledev 0:452a42421de4 152
cabledev 0:452a42421de4 153 switch(i) {
cabledev 0:452a42421de4 154 case 0:
cabledev 0:452a42421de4 155 r = 1.0 - V; // invert pwm !
cabledev 0:452a42421de4 156 g = 1.0 - t;
cabledev 0:452a42421de4 157 b = 1.0 - p;
cabledev 0:452a42421de4 158 break;
cabledev 0:452a42421de4 159 case 1:
cabledev 0:452a42421de4 160 r = 1.0 - q;
cabledev 0:452a42421de4 161 g = 1.0 - V;
cabledev 0:452a42421de4 162 b = 1.0 - p;
cabledev 0:452a42421de4 163 break;
cabledev 0:452a42421de4 164 case 2:
cabledev 0:452a42421de4 165 r = 1.0 - p;
cabledev 0:452a42421de4 166 g = 1.0 - V;
cabledev 0:452a42421de4 167 b = 1.0 - t;
cabledev 0:452a42421de4 168 break;
cabledev 0:452a42421de4 169 case 3:
cabledev 0:452a42421de4 170 r = 1.0 - p;
cabledev 0:452a42421de4 171 g = 1.0 - q;
cabledev 0:452a42421de4 172 b = 1.0 - V;
cabledev 0:452a42421de4 173 break;
cabledev 0:452a42421de4 174 case 4:
cabledev 0:452a42421de4 175 r = 1.0 - t;
cabledev 0:452a42421de4 176 g = 1.0 - p;
cabledev 0:452a42421de4 177 b = 1.0 - V;
cabledev 0:452a42421de4 178 break;
cabledev 0:452a42421de4 179 case 5:
cabledev 0:452a42421de4 180 default:
cabledev 0:452a42421de4 181 r = 1.0 - V;
cabledev 0:452a42421de4 182 g = 1.0 - p;
cabledev 0:452a42421de4 183 b = 1.0 - q;
cabledev 0:452a42421de4 184 break;
cabledev 0:452a42421de4 185 }
cabledev 0:452a42421de4 186 }
cabledev 0:452a42421de4 187
cabledev 0:452a42421de4 188 void setLight(Arguments* input, Reply* output)
cabledev 0:452a42421de4 189 {
cabledev 0:452a42421de4 190 // Arguments are already parsed into argv array of char*
cabledev 0:452a42421de4 191 printf("Object name = %s\n\r",input->obj_name);
cabledev 0:452a42421de4 192 printf("Method name = %s\n\r",input->method_name);
cabledev 0:452a42421de4 193 for (int i=0; i < input->argc; i++)
cabledev 0:452a42421de4 194 {
cabledev 0:452a42421de4 195 printf("argv[%1d] = %s \n\r",i,input->argv[i]);
cabledev 0:452a42421de4 196 }
cabledev 0:452a42421de4 197
cabledev 0:452a42421de4 198 if (input->argc > 4)
cabledev 0:452a42421de4 199 {
cabledev 0:452a42421de4 200 char* strH = input->argv[0];
cabledev 0:452a42421de4 201 char* strS = input->argv[1];
cabledev 0:452a42421de4 202 char* strV = input->argv[2];
cabledev 0:452a42421de4 203 char* strBrightness = input->argv[3];
cabledev 0:452a42421de4 204 char* strPower = input->argv[4];
cabledev 0:452a42421de4 205
cabledev 0:452a42421de4 206 float h;
cabledev 0:452a42421de4 207 float s;
cabledev 0:452a42421de4 208 float v;
cabledev 0:452a42421de4 209 float brightness;
cabledev 0:452a42421de4 210 int power;
cabledev 0:452a42421de4 211
cabledev 0:452a42421de4 212 if ((strH != NULL) && (strlen(strH) > 0) && (strcmp(strH, "null") != 0))
cabledev 0:452a42421de4 213 {
cabledev 0:452a42421de4 214 // assume that if we got an H, we also got an S & V
cabledev 0:452a42421de4 215 sscanf(strH, "%f", &h);
cabledev 0:452a42421de4 216 sscanf(strS, "%f", &s);
cabledev 0:452a42421de4 217 sscanf(strV, "%f", &v);
cabledev 0:452a42421de4 218
cabledev 0:452a42421de4 219 lastH = h;
cabledev 0:452a42421de4 220 lastS = s;
cabledev 0:452a42421de4 221 lastV = v;
cabledev 0:452a42421de4 222 printf("*** set lastV from color to %f\n\r", lastV);
cabledev 0:452a42421de4 223 }
cabledev 0:452a42421de4 224
cabledev 0:452a42421de4 225 if ((strBrightness != NULL) && (strlen(strBrightness) > 0) && (strcmp(strBrightness, "null") != 0))
cabledev 0:452a42421de4 226 {
cabledev 0:452a42421de4 227 sscanf(strBrightness, "%f", &brightness);
cabledev 0:452a42421de4 228 brightness = brightness / 100.0;
cabledev 0:452a42421de4 229 brightness = brightness*brightness; // normalization, because in general, the LED is too bright
cabledev 0:452a42421de4 230 lastV = brightness;
cabledev 0:452a42421de4 231 printf("*** set lastV from brightness to %f\n\r", lastV);
cabledev 0:452a42421de4 232 }
cabledev 0:452a42421de4 233
cabledev 0:452a42421de4 234 if ((strPower != NULL) && (strlen(strPower) > 0) && (strcmp(strPower, "null") != 0))
cabledev 0:452a42421de4 235 {
cabledev 0:452a42421de4 236 sscanf(strPower, "%i", &power);
cabledev 0:452a42421de4 237
cabledev 0:452a42421de4 238 powerOn = (power == ON);
cabledev 0:452a42421de4 239 }
cabledev 0:452a42421de4 240
cabledev 0:452a42421de4 241 printf("setLight: HSV = '(%s, %s, %s)', Brightness = '%s', Power = '%s'\n\r", strH, strS, strV, strBrightness, strPower);
cabledev 0:452a42421de4 242
cabledev 0:452a42421de4 243 // recall that the power is inverted, so (0.0 == on) and (1.0 == off)
cabledev 0:452a42421de4 244 if (powerOn)
cabledev 0:452a42421de4 245 {
cabledev 0:452a42421de4 246 hsv2rgb(lastH, lastS, lastV);
cabledev 0:452a42421de4 247 }
cabledev 0:452a42421de4 248 else
cabledev 0:452a42421de4 249 {
cabledev 0:452a42421de4 250 r = 1.0;
cabledev 0:452a42421de4 251 g = 1.0;
cabledev 0:452a42421de4 252 b = 1.0;
cabledev 0:452a42421de4 253 }
cabledev 0:452a42421de4 254 }
cabledev 0:452a42421de4 255 }
cabledev 0:452a42421de4 256
cabledev 0:452a42421de4 257 void startHttpServer(void const* arg)
cabledev 0:452a42421de4 258 {
cabledev 0:452a42421de4 259 // Ethernet
cabledev 0:452a42421de4 260 #ifdef STATIC_IP
cabledev 0:452a42421de4 261 pc.printf("Configuring Ethernet with Static IP Address.\n\r");
cabledev 0:452a42421de4 262 //eth.init("192.168.1.177", "255.255.255.0", "192.168.1.1");
cabledev 0:452a42421de4 263 eth.init(STATIC_IP_ADDRESS, STATIC_IP_NETMASK, STATIC_IP_GATEWAY);
cabledev 0:452a42421de4 264 #else
cabledev 0:452a42421de4 265 pc.printf("Configuring Ethernet with DHCP IP Address.\n\r");
cabledev 0:452a42421de4 266 eth.init(); //Use DHCP
cabledev 0:452a42421de4 267 #endif
cabledev 0:452a42421de4 268
cabledev 0:452a42421de4 269 #ifdef ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 270 //pc.printf("*** eth.connect()!\n\r");
cabledev 0:452a42421de4 271 int connected = eth.connect(); // success == 0
cabledev 0:452a42421de4 272 //pc.printf("*** Eth.connect returned %i\n\r", connected);
cabledev 0:452a42421de4 273 if (connected != 0)
cabledev 0:452a42421de4 274 {
cabledev 0:452a42421de4 275 lcd.printf("Ethernet not connected");
cabledev 0:452a42421de4 276 }
cabledev 0:452a42421de4 277 else
cabledev 0:452a42421de4 278 {
cabledev 0:452a42421de4 279 #else
cabledev 0:452a42421de4 280 //pc.printf("*** eth.connect()!\n\r");
cabledev 0:452a42421de4 281 eth.connect();
cabledev 0:452a42421de4 282 #endif
cabledev 0:452a42421de4 283 char* ipAddr = eth.getIPAddress();
cabledev 0:452a42421de4 284 //pc.printf("*** ipAddr: %s\n\r", ipAddr);
cabledev 0:452a42421de4 285 ethConnected = ((ipAddr != NULL) && (strlen(ipAddr) > 0));
cabledev 0:452a42421de4 286
cabledev 0:452a42421de4 287 if (ethConnected)
cabledev 0:452a42421de4 288 {
cabledev 0:452a42421de4 289 mutex.lock();
cabledev 0:452a42421de4 290 lcd.locate(10,0);
cabledev 0:452a42421de4 291 lcd.printf("IP Address: %s", eth.getIPAddress());
cabledev 0:452a42421de4 292 mutex.unlock();
cabledev 0:452a42421de4 293
cabledev 0:452a42421de4 294 #ifndef TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 295 mutex.lock();
cabledev 0:452a42421de4 296 lcd.locate(10,10);
cabledev 0:452a42421de4 297 lcd.printf("WebServer started");
cabledev 0:452a42421de4 298 mutex.unlock();
cabledev 0:452a42421de4 299 #endif
cabledev 0:452a42421de4 300 }
cabledev 0:452a42421de4 301 else
cabledev 0:452a42421de4 302 {
cabledev 0:452a42421de4 303 lcd.printf("No IP Address");
cabledev 0:452a42421de4 304 }
cabledev 0:452a42421de4 305 #ifdef ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 306 }
cabledev 0:452a42421de4 307 #endif
cabledev 0:452a42421de4 308
cabledev 0:452a42421de4 309 svr.addHandler<HTTPFsRequestHandler>("/");
cabledev 0:452a42421de4 310 svr.addHandler<HTTPRpcRequestHandler>("/RPC");
cabledev 0:452a42421de4 311
cabledev 0:452a42421de4 312 svr.setPort(HTTP_LISTEN_PORT);
cabledev 0:452a42421de4 313 svr.setEthernetInterface(&eth);
cabledev 0:452a42421de4 314 svr.start();
cabledev 0:452a42421de4 315 }
cabledev 0:452a42421de4 316
cabledev 0:452a42421de4 317 void startTemperatureMonitor(void const* arg)
cabledev 0:452a42421de4 318 {
cabledev 0:452a42421de4 319 float tempC = 0;
cabledev 0:452a42421de4 320 float tempF = 0;
cabledev 0:452a42421de4 321 while(true)
cabledev 0:452a42421de4 322 {
cabledev 0:452a42421de4 323 tempC = temperatureSensor.read();
cabledev 0:452a42421de4 324 tempF = (tempC * 1.8f) + 32.0f;
cabledev 0:452a42421de4 325
cabledev 0:452a42421de4 326 mutex.lock();
cabledev 0:452a42421de4 327 lcd.locate(10,10);
cabledev 0:452a42421de4 328 lcd.printf("Temp: %.3f F\n", tempF);
cabledev 0:452a42421de4 329 mutex.unlock();
cabledev 0:452a42421de4 330 wait(1.0);
cabledev 0:452a42421de4 331 }
cabledev 0:452a42421de4 332 }
cabledev 0:452a42421de4 333
cabledev 0:452a42421de4 334 int main()
cabledev 0:452a42421de4 335 {
cabledev 0:452a42421de4 336 // LED
cabledev 0:452a42421de4 337 float h; // hue
cabledev 0:452a42421de4 338 float s,v; // saturation and value;
cabledev 0:452a42421de4 339 unsigned short temp;
cabledev 0:452a42421de4 340
cabledev 0:452a42421de4 341 lcd.cls();
cabledev 0:452a42421de4 342 lcd.set_font((unsigned char*) Small_7);
cabledev 0:452a42421de4 343
cabledev 0:452a42421de4 344 r.period(0.001); // set pwm period
cabledev 0:452a42421de4 345 s = 1.0;
cabledev 0:452a42421de4 346
cabledev 0:452a42421de4 347 // initialize the LED from the Pots
cabledev 0:452a42421de4 348 // get Poti 1 for color
cabledev 0:452a42421de4 349 temp = Pot1.read_u16();
cabledev 0:452a42421de4 350 temp = temp >> 6; // truncate to 10 Bit
cabledev 0:452a42421de4 351 h = temp * 0.3515625; // scale to 0 - 360;
cabledev 0:452a42421de4 352 //lcd.locate(0,13);
cabledev 0:452a42421de4 353 //lcd.printf("Colour = %3.2f degree",h);
cabledev 0:452a42421de4 354 // get Poti 2 fo value
cabledev 0:452a42421de4 355 temp = Pot2.read_u16();
cabledev 0:452a42421de4 356 temp = temp >> 6;
cabledev 0:452a42421de4 357 v = temp * 0.0009765624; // scale to 0 - 1;
cabledev 0:452a42421de4 358 //lcd.locate(0,23);
cabledev 0:452a42421de4 359 //lcd.printf("Val = %01.3f ",v);
cabledev 0:452a42421de4 360 hsv2rgb(h,s,v);
cabledev 0:452a42421de4 361
cabledev 0:452a42421de4 362 lastH = h;
cabledev 0:452a42421de4 363 lastS = s;
cabledev 0:452a42421de4 364 lastV = v;
cabledev 0:452a42421de4 365
cabledev 0:452a42421de4 366 //HTTPServer
cabledev 0:452a42421de4 367 pc.baud(SERIAL_BAUD);
cabledev 0:452a42421de4 368
cabledev 0:452a42421de4 369 // add the interfaces that can be created dynamically
cabledev 0:452a42421de4 370 RPC::add_rpc_class<RpcDigitalOut>();
cabledev 0:452a42421de4 371 RPC::add_rpc_class<RpcPwmOut>();
cabledev 0:452a42421de4 372
cabledev 0:452a42421de4 373 HTTPFsRequestHandler::mount("/local/", "/");
cabledev 0:452a42421de4 374
cabledev 0:452a42421de4 375 ethConnected = false;
cabledev 0:452a42421de4 376 Thread httpsvr( &startHttpServer );
cabledev 0:452a42421de4 377
cabledev 0:452a42421de4 378 #ifdef TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 379 Thread tempMonitor(&startTemperatureMonitor );
cabledev 0:452a42421de4 380 #endif
cabledev 0:452a42421de4 381
cabledev 0:452a42421de4 382 while (true)
cabledev 0:452a42421de4 383 {
cabledev 0:452a42421de4 384 #ifdef LISTENING_LED
cabledev 0:452a42421de4 385 if (ethConnected)
cabledev 0:452a42421de4 386 {
cabledev 0:452a42421de4 387 listeningLed = ON;
cabledev 0:452a42421de4 388 wait(0.2);
cabledev 0:452a42421de4 389 listeningLed = OFF;
cabledev 0:452a42421de4 390 wait(0.2);
cabledev 0:452a42421de4 391 }
cabledev 0:452a42421de4 392 #endif
cabledev 0:452a42421de4 393 }
cabledev 0:452a42421de4 394 }