test

Dependencies:   EthernetInterface Milkcocoa_EthernetIF mbed-rtos mbed

Fork of MilkcocoaSample_Eth by Junichi Katsu

Committer:
jksoft
Date:
Tue Oct 31 09:26:44 2017 +0000
Revision:
9:561182aac695
Parent:
7:25a9bc3ca875
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:92848fdd9379 1 #include "mbed.h"
jksoft 9:561182aac695 2 #include "LEDStrip.h"
jksoft 9:561182aac695 3 #include "ConfigFile.h"
jksoft 0:92848fdd9379 4 #include "MQTTEthernet.h"
jksoft 0:92848fdd9379 5 #include "MQTTClient.h"
jksoft 0:92848fdd9379 6 #include "Milkcocoa.h"
jksoft 0:92848fdd9379 7 #include "MClient.h"
jksoft 0:92848fdd9379 8
jksoft 9:561182aac695 9 #define LED_NUM 60
jksoft 9:561182aac695 10 #define LED_DATA_NUM 3
jksoft 9:561182aac695 11 #define PI 3.14159265359f
jksoft 9:561182aac695 12 #define MAX_COUNT 60
jksoft 9:561182aac695 13 #define STAR_LINE_MAX 60
jksoft 9:561182aac695 14
jksoft 9:561182aac695 15 #if 0
jksoft 9:561182aac695 16 #define DBG(x) x
jksoft 9:561182aac695 17 #else
jksoft 9:561182aac695 18 #define DBG(x)
jksoft 9:561182aac695 19 #endif
jksoft 0:92848fdd9379 20
jksoft 0:92848fdd9379 21 /************************* Your Milkcocoa Setup *********************************/
jksoft 9:561182aac695 22 #define MILKCOCOA_APP_ID "juicej2vchzis"
jksoft 9:561182aac695 23 #define MILKCOCOA_DATASTORE "halloween"
jksoft 9:561182aac695 24
jksoft 0:92848fdd9379 25 /************* Milkcocoa Setup (you don't need to change this!) ******************/
jksoft 9:561182aac695 26
jksoft 0:92848fdd9379 27 #define MILKCOCOA_SERVERPORT 1883
jksoft 7:25a9bc3ca875 28
jksoft 0:92848fdd9379 29 /************ Global State (you don't need to change this!) ******************/
jksoft 9:561182aac695 30
jksoft 0:92848fdd9379 31 const char MQTT_SERVER[] = MILKCOCOA_APP_ID ".mlkcca.com";
jksoft 0:92848fdd9379 32 const char MQTT_CLIENTID[] = __TIME__ MILKCOCOA_APP_ID;
jksoft 9:561182aac695 33
jksoft 0:92848fdd9379 34 extern void onpush(MQTT::MessageData& md);
jksoft 0:92848fdd9379 35
jksoft 9:561182aac695 36 Serial pc(USBTX, USBRX);
jksoft 9:561182aac695 37 LocalFileSystem local("local");
jksoft 9:561182aac695 38 Ticker flipper;
jksoft 9:561182aac695 39 ConfigFile cfg;
jksoft 9:561182aac695 40 DigitalIn SW1(p25);
jksoft 9:561182aac695 41 DigitalIn SW2(p26);
jksoft 9:561182aac695 42 DigitalOut stat_led1(LED1);
jksoft 9:561182aac695 43 DigitalOut stat_led2(LED2);
jksoft 9:561182aac695 44 DigitalOut stat_led3(LED3);
jksoft 9:561182aac695 45 DigitalOut stat_led4(LED4);
jksoft 9:561182aac695 46
jksoft 9:561182aac695 47
jksoft 9:561182aac695 48
jksoft 9:561182aac695 49 void flip();
jksoft 9:561182aac695 50
jksoft 9:561182aac695 51 bool completed = false;
jksoft 9:561182aac695 52 int t_timer = 0;
jksoft 9:561182aac695 53 int like_count = 0;
jksoft 9:561182aac695 54 int max_count = 0;
jksoft 9:561182aac695 55 int demo_count = 0;
jksoft 9:561182aac695 56
jksoft 9:561182aac695 57 const unsigned char _RED[3] = { 0xFF, 0 , 0 };
jksoft 9:561182aac695 58 const unsigned char _GREEN[3] = { 0 , 0xFF, 0 };
jksoft 9:561182aac695 59 const unsigned char _BLUE[3] = { 0 , 0 , 0xFF };
jksoft 9:561182aac695 60 const unsigned char _YELLOW[3] = { 0xFF, 0xFF, 0 };
jksoft 9:561182aac695 61 const unsigned char _PURPLE[3] = { 0xFF, 0 , 0xFF };
jksoft 9:561182aac695 62 const unsigned char _AQUA[3] = { 0 , 0xFF, 0xFF };
jksoft 9:561182aac695 63 const unsigned char _WHITE[3] = { 0xFF, 0xFF, 0xFF };
jksoft 9:561182aac695 64 const unsigned char _GLAY[3] = { 0x80, 0x80, 0x80 };
jksoft 9:561182aac695 65 const unsigned char _DARK_GLAY[3] = { 0x2, 0x2, 0x2 };
jksoft 9:561182aac695 66 const unsigned char _OFF[3] = { 0, 0, 0 };
jksoft 9:561182aac695 67
jksoft 9:561182aac695 68 unsigned char led_data[60][3];
jksoft 9:561182aac695 69
jksoft 9:561182aac695 70 unsigned char base_led_data[60][3];
jksoft 9:561182aac695 71
jksoft 9:561182aac695 72 unsigned char star_line[STAR_LINE_MAX] = {
jksoft 9:561182aac695 73 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
jksoft 9:561182aac695 74 10,11,12,13,14,15,16,17,18,19,
jksoft 9:561182aac695 75 20,21,22,23,24,25,26,27,28,29,
jksoft 9:561182aac695 76 30,31,32,33,34,35,36,37,38,39,
jksoft 9:561182aac695 77 40,41,42,43,44,45,46,47,48,49,
jksoft 9:561182aac695 78 50,51,52,53,54,55,56,57,58,59
jksoft 9:561182aac695 79 };
jksoft 9:561182aac695 80
jksoft 9:561182aac695 81 unsigned char color_line[STAR_LINE_MAX][3] =
jksoft 9:561182aac695 82 {
jksoft 9:561182aac695 83 { 0xFF, 0x00, 0x00 },{ 0xFF, 0x80, 0x00 },{ 0xFF, 0xFF, 0x00 },{ 0x80, 0xFF, 0x00 },
jksoft 9:561182aac695 84 { 0x00, 0xFF, 0x00 },{ 0x00, 0xFF, 0x80 },{ 0x00, 0xFF, 0xFF },{ 0x00, 0x80, 0xFF },
jksoft 9:561182aac695 85 { 0x00, 0x00, 0xFF },{ 0x80, 0x00, 0xFF },{ 0xFF, 0x00, 0xFF },{ 0xFF, 0x00, 0x80 },
jksoft 9:561182aac695 86 { 0xFF, 0x00, 0x00 },{ 0xFF, 0x80, 0x00 },{ 0xFF, 0xFF, 0x00 },{ 0x80, 0xFF, 0x00 },
jksoft 9:561182aac695 87 { 0x00, 0xFF, 0x00 },{ 0x00, 0xFF, 0x80 },{ 0x00, 0xFF, 0xFF },{ 0x00, 0x80, 0xFF },
jksoft 9:561182aac695 88 { 0x00, 0x00, 0xFF },{ 0x80, 0x00, 0xFF },{ 0xFF, 0x00, 0xFF },{ 0xFF, 0x00, 0x80 },
jksoft 9:561182aac695 89 { 0xFF, 0x00, 0x00 },{ 0xFF, 0x80, 0x00 },{ 0xFF, 0xFF, 0x00 },{ 0x80, 0xFF, 0x00 },
jksoft 9:561182aac695 90 { 0x00, 0xFF, 0x00 },{ 0x00, 0xFF, 0x80 },{ 0x00, 0xFF, 0xFF },{ 0x00, 0x80, 0xFF },
jksoft 9:561182aac695 91 { 0x00, 0x00, 0xFF },{ 0x80, 0x00, 0xFF },{ 0xFF, 0x00, 0xFF },{ 0xFF, 0x00, 0x80 },
jksoft 9:561182aac695 92 { 0xFF, 0x00, 0x00 },{ 0xFF, 0x80, 0x00 },{ 0xFF, 0xFF, 0x00 },{ 0x80, 0xFF, 0x00 },
jksoft 9:561182aac695 93 { 0x00, 0xFF, 0x00 },{ 0x00, 0xFF, 0x80 },{ 0x00, 0xFF, 0xFF },{ 0x00, 0x80, 0xFF },
jksoft 9:561182aac695 94 { 0x00, 0x00, 0xFF },{ 0x80, 0x00, 0xFF },{ 0xFF, 0x00, 0xFF },{ 0xFF, 0x00, 0x80 },
jksoft 9:561182aac695 95 { 0xFF, 0x00, 0x00 },{ 0xFF, 0x80, 0x00 },{ 0xFF, 0xFF, 0x00 },{ 0x80, 0xFF, 0x00 },
jksoft 9:561182aac695 96 { 0x00, 0xFF, 0x00 },{ 0x00, 0xFF, 0x80 },{ 0x00, 0xFF, 0xFF },{ 0x00, 0x80, 0xFF },
jksoft 9:561182aac695 97 { 0x00, 0x00, 0xFF },{ 0x80, 0x00, 0xFF },{ 0xFF, 0x00, 0xFF },{ 0xFF, 0x00, 0x80 }
jksoft 9:561182aac695 98
jksoft 9:561182aac695 99 };
jksoft 9:561182aac695 100
jksoft 9:561182aac695 101 extern void send_led();
jksoft 9:561182aac695 102
jksoft 9:561182aac695 103 int DownLight(unsigned char *dat,int value)
jksoft 9:561182aac695 104 {
jksoft 9:561182aac695 105 for(int i=0;i<LED_DATA_NUM;i++)
jksoft 9:561182aac695 106 {
jksoft 9:561182aac695 107 if( dat[i] > value )
jksoft 9:561182aac695 108 {
jksoft 9:561182aac695 109 dat[i] = dat[i] - value;
jksoft 9:561182aac695 110 }
jksoft 9:561182aac695 111 }
jksoft 9:561182aac695 112 return(0);
jksoft 9:561182aac695 113 }
jksoft 9:561182aac695 114
jksoft 9:561182aac695 115 int near(unsigned char *from_dat,const unsigned char *to_dat,int wide)
jksoft 9:561182aac695 116 {
jksoft 9:561182aac695 117 int ret_code_l = 1;
jksoft 9:561182aac695 118
jksoft 9:561182aac695 119 for( int i=0;i<LED_DATA_NUM;i++)
jksoft 9:561182aac695 120 {
jksoft 9:561182aac695 121 if( from_dat[i] < to_dat[i] )
jksoft 9:561182aac695 122 {
jksoft 9:561182aac695 123 if( (from_dat[i]+wide) < to_dat[i] )
jksoft 9:561182aac695 124 {
jksoft 9:561182aac695 125 from_dat[i] = from_dat[i] + wide;
jksoft 9:561182aac695 126 ret_code_l = 0;
jksoft 9:561182aac695 127 }
jksoft 9:561182aac695 128 else
jksoft 9:561182aac695 129 {
jksoft 9:561182aac695 130 from_dat[i] = to_dat[i];
jksoft 9:561182aac695 131
jksoft 9:561182aac695 132 }
jksoft 9:561182aac695 133 }
jksoft 9:561182aac695 134 else if( from_dat[i] > to_dat[i] )
jksoft 9:561182aac695 135 {
jksoft 9:561182aac695 136 if( (from_dat[i]-wide) > to_dat[i])
jksoft 9:561182aac695 137 {
jksoft 9:561182aac695 138 from_dat[i] -= wide;
jksoft 9:561182aac695 139 ret_code_l = 0;
jksoft 9:561182aac695 140 }
jksoft 9:561182aac695 141 else
jksoft 9:561182aac695 142 {
jksoft 9:561182aac695 143 from_dat[i] = to_dat[i];
jksoft 9:561182aac695 144 }
jksoft 9:561182aac695 145 }
jksoft 9:561182aac695 146 }
jksoft 9:561182aac695 147
jksoft 9:561182aac695 148 return(ret_code_l);
jksoft 9:561182aac695 149 }
jksoft 9:561182aac695 150
jksoft 9:561182aac695 151 int flow_star(int from,int to,const unsigned char *dat,const unsigned char *base_dat,int speed)
jksoft 9:561182aac695 152 {
jksoft 9:561182aac695 153 int i,j;
jksoft 9:561182aac695 154
jksoft 9:561182aac695 155 if( from < to )
jksoft 9:561182aac695 156 {
jksoft 9:561182aac695 157 for(i=from;i<to;i++)
jksoft 9:561182aac695 158 {
jksoft 9:561182aac695 159 memcpy( led_data[star_line[i]] , base_dat , 3 );
jksoft 9:561182aac695 160 }
jksoft 9:561182aac695 161
jksoft 9:561182aac695 162 send_led();
jksoft 9:561182aac695 163 wait_ms(speed);
jksoft 9:561182aac695 164
jksoft 9:561182aac695 165 for(i=from;i<to;i++)
jksoft 9:561182aac695 166 {
jksoft 9:561182aac695 167 for(j=from;j<to;j++)
jksoft 9:561182aac695 168 {
jksoft 9:561182aac695 169 if(j==i)
jksoft 9:561182aac695 170 {
jksoft 9:561182aac695 171 memcpy( led_data[star_line[j]] , dat , 3 );
jksoft 9:561182aac695 172 }
jksoft 9:561182aac695 173 else
jksoft 9:561182aac695 174 {
jksoft 9:561182aac695 175 near( led_data[star_line[j]] , base_dat , 5 );
jksoft 9:561182aac695 176 }
jksoft 9:561182aac695 177 }
jksoft 9:561182aac695 178 send_led();
jksoft 9:561182aac695 179 wait_ms(speed);
jksoft 9:561182aac695 180
jksoft 9:561182aac695 181 }
jksoft 9:561182aac695 182
jksoft 9:561182aac695 183 i = 0;
jksoft 9:561182aac695 184 j = 1;
jksoft 9:561182aac695 185 while(i!=(abs(from-to)))
jksoft 9:561182aac695 186 {
jksoft 9:561182aac695 187 i = 0;
jksoft 9:561182aac695 188 for(j=from;j<to;j++)
jksoft 9:561182aac695 189 {
jksoft 9:561182aac695 190 i += near( led_data[star_line[j]] , base_dat , 10 );
jksoft 9:561182aac695 191 }
jksoft 9:561182aac695 192 send_led();
jksoft 9:561182aac695 193 wait_ms(speed);
jksoft 9:561182aac695 194 }
jksoft 9:561182aac695 195 }
jksoft 9:561182aac695 196 else
jksoft 9:561182aac695 197 {
jksoft 9:561182aac695 198 for(i=from;i>to;i--)
jksoft 9:561182aac695 199 {
jksoft 9:561182aac695 200 memcpy( led_data[star_line[i]] , base_dat , 3 );
jksoft 9:561182aac695 201 }
jksoft 9:561182aac695 202
jksoft 9:561182aac695 203 send_led();
jksoft 9:561182aac695 204 wait_ms(speed);
jksoft 9:561182aac695 205
jksoft 9:561182aac695 206 for(i=from;i>to;i--)
jksoft 9:561182aac695 207 {
jksoft 9:561182aac695 208 for(j=from;j>to;j--)
jksoft 9:561182aac695 209 {
jksoft 9:561182aac695 210 if(j==i)
jksoft 9:561182aac695 211 {
jksoft 9:561182aac695 212 memcpy( led_data[star_line[j]] , dat , 3 );
jksoft 9:561182aac695 213 }
jksoft 9:561182aac695 214 else
jksoft 9:561182aac695 215 {
jksoft 9:561182aac695 216 near( led_data[star_line[j]] , base_dat , 5 );
jksoft 9:561182aac695 217 }
jksoft 9:561182aac695 218 }
jksoft 9:561182aac695 219 send_led();
jksoft 9:561182aac695 220 wait_ms(speed);
jksoft 9:561182aac695 221 }
jksoft 9:561182aac695 222
jksoft 9:561182aac695 223 i = 0;
jksoft 9:561182aac695 224 j = 1;
jksoft 9:561182aac695 225 while(i!=(abs(from-to)))
jksoft 9:561182aac695 226 {
jksoft 9:561182aac695 227 i = 0;
jksoft 9:561182aac695 228 for(j=from;j>to;j--)
jksoft 9:561182aac695 229 {
jksoft 9:561182aac695 230 i += near( led_data[star_line[j]] , base_dat , 5 );
jksoft 9:561182aac695 231 }
jksoft 9:561182aac695 232 send_led();
jksoft 9:561182aac695 233 wait_ms(speed);
jksoft 9:561182aac695 234 }
jksoft 9:561182aac695 235 }
jksoft 9:561182aac695 236
jksoft 9:561182aac695 237 return(0);
jksoft 9:561182aac695 238 }
jksoft 9:561182aac695 239
jksoft 9:561182aac695 240 int flow_star(int from,int to,const unsigned char *dat,int speed)
jksoft 9:561182aac695 241 {
jksoft 9:561182aac695 242 int i,j;
jksoft 9:561182aac695 243
jksoft 9:561182aac695 244 if( from < to )
jksoft 9:561182aac695 245 {
jksoft 9:561182aac695 246 for(i=from;i<to;i++)
jksoft 9:561182aac695 247 {
jksoft 9:561182aac695 248 memcpy( led_data[star_line[i]] , base_led_data[star_line[i]] , 3 );
jksoft 9:561182aac695 249 }
jksoft 9:561182aac695 250
jksoft 9:561182aac695 251 send_led();
jksoft 9:561182aac695 252 wait_ms(speed);
jksoft 9:561182aac695 253
jksoft 9:561182aac695 254 for(i=from;i<to;i++)
jksoft 9:561182aac695 255 {
jksoft 9:561182aac695 256 for(j=from;j<to;j++)
jksoft 9:561182aac695 257 {
jksoft 9:561182aac695 258 if(j==i)
jksoft 9:561182aac695 259 {
jksoft 9:561182aac695 260 memcpy( led_data[star_line[j]] , dat , 3 );
jksoft 9:561182aac695 261 }
jksoft 9:561182aac695 262 else
jksoft 9:561182aac695 263 {
jksoft 9:561182aac695 264 near( led_data[star_line[j]] , base_led_data[star_line[j]] , 5 );
jksoft 9:561182aac695 265 }
jksoft 9:561182aac695 266 }
jksoft 9:561182aac695 267 send_led();
jksoft 9:561182aac695 268 wait_ms(speed);
jksoft 9:561182aac695 269
jksoft 9:561182aac695 270 }
jksoft 9:561182aac695 271
jksoft 9:561182aac695 272 i = 0;
jksoft 9:561182aac695 273 j = 1;
jksoft 9:561182aac695 274 while(i!=(abs(from-to)))
jksoft 9:561182aac695 275 {
jksoft 9:561182aac695 276 i = 0;
jksoft 9:561182aac695 277 for(j=from;j<to;j++)
jksoft 9:561182aac695 278 {
jksoft 9:561182aac695 279 i += near( led_data[star_line[j]] , base_led_data[star_line[j]] , 10 );
jksoft 9:561182aac695 280 }
jksoft 9:561182aac695 281 send_led();
jksoft 9:561182aac695 282 wait_ms(speed);
jksoft 9:561182aac695 283 }
jksoft 9:561182aac695 284 }
jksoft 9:561182aac695 285 else
jksoft 9:561182aac695 286 {
jksoft 9:561182aac695 287 for(i=from;i>to;i--)
jksoft 9:561182aac695 288 {
jksoft 9:561182aac695 289 memcpy( led_data[star_line[i]] , base_led_data[star_line[i]] , 3 );
jksoft 9:561182aac695 290 }
jksoft 9:561182aac695 291
jksoft 9:561182aac695 292 send_led();
jksoft 9:561182aac695 293 wait_ms(speed);
jksoft 9:561182aac695 294
jksoft 9:561182aac695 295 for(i=from;i>to;i--)
jksoft 9:561182aac695 296 {
jksoft 9:561182aac695 297 for(j=from;j>to;j--)
jksoft 9:561182aac695 298 {
jksoft 9:561182aac695 299 if(j==i)
jksoft 9:561182aac695 300 {
jksoft 9:561182aac695 301 memcpy( led_data[star_line[j]] , dat , 3 );
jksoft 9:561182aac695 302 }
jksoft 9:561182aac695 303 else
jksoft 9:561182aac695 304 {
jksoft 9:561182aac695 305 near( led_data[star_line[j]] , base_led_data[star_line[j]] , 5 );
jksoft 9:561182aac695 306 }
jksoft 9:561182aac695 307 }
jksoft 9:561182aac695 308 send_led();
jksoft 9:561182aac695 309 wait_ms(speed);
jksoft 9:561182aac695 310 }
jksoft 9:561182aac695 311
jksoft 9:561182aac695 312 i = 0;
jksoft 9:561182aac695 313 j = 1;
jksoft 9:561182aac695 314 #if 0
jksoft 9:561182aac695 315 while(i!=(abs(from-to)))
jksoft 9:561182aac695 316 {
jksoft 9:561182aac695 317 i = 0;
jksoft 9:561182aac695 318 for(j=from;j>to;j--)
jksoft 9:561182aac695 319 {
jksoft 9:561182aac695 320 i += near( led_data[star_line[j]] , base_led_data[star_line[j]] , 5 );
jksoft 9:561182aac695 321 }
jksoft 9:561182aac695 322 send_led();
jksoft 9:561182aac695 323 wait_ms(speed);
jksoft 9:561182aac695 324 }
jksoft 9:561182aac695 325 #endif
jksoft 9:561182aac695 326 }
jksoft 9:561182aac695 327
jksoft 9:561182aac695 328 return(0);
jksoft 9:561182aac695 329 }
jksoft 9:561182aac695 330
jksoft 9:561182aac695 331 void slow_light_all(const unsigned char *base_dat,int speed)
jksoft 9:561182aac695 332 {
jksoft 9:561182aac695 333 int i,j;
jksoft 9:561182aac695 334 while(i!=LED_NUM)
jksoft 9:561182aac695 335 {
jksoft 9:561182aac695 336 i = 0;
jksoft 9:561182aac695 337 for(j=0;j<LED_NUM;j++)
jksoft 9:561182aac695 338 {
jksoft 9:561182aac695 339 i += near( led_data[j] , base_dat , 5 );
jksoft 9:561182aac695 340 }
jksoft 9:561182aac695 341 send_led();
jksoft 9:561182aac695 342 wait_ms(speed);
jksoft 9:561182aac695 343 }
jksoft 9:561182aac695 344 }
jksoft 9:561182aac695 345
jksoft 9:561182aac695 346 void back_base(void)
jksoft 9:561182aac695 347 {
jksoft 9:561182aac695 348 for(int i=0;i<LED_NUM;i++)
jksoft 9:561182aac695 349 {
jksoft 9:561182aac695 350 near( led_data[i] , base_led_data[i] , 5 );
jksoft 9:561182aac695 351 send_led();
jksoft 9:561182aac695 352 }
jksoft 9:561182aac695 353 }
jksoft 9:561182aac695 354
jksoft 9:561182aac695 355 int glad(int i,unsigned char *dat)
jksoft 9:561182aac695 356 {
jksoft 9:561182aac695 357 i = i % 0x2FE;
jksoft 9:561182aac695 358
jksoft 9:561182aac695 359 if( i < 0xFF )
jksoft 9:561182aac695 360 {
jksoft 9:561182aac695 361 dat[0] = 0xFF * cos(PI/(510.0f/(double)i));
jksoft 9:561182aac695 362 dat[1] = 0xFF * sin(PI/(510.0f/(double)i));
jksoft 9:561182aac695 363 dat[2] = 0;
jksoft 9:561182aac695 364 }
jksoft 9:561182aac695 365 else if((i >= 0xFF)&&( i < 0x1FE ))
jksoft 9:561182aac695 366 {
jksoft 9:561182aac695 367 i -= 0xFF;
jksoft 9:561182aac695 368 dat[0] = 0;
jksoft 9:561182aac695 369 dat[1] = 0xFF * cos(PI/(510.0f/(double)i));
jksoft 9:561182aac695 370 dat[2] = 0xFF * sin(PI/(510.0f/(double)i));
jksoft 9:561182aac695 371 }
jksoft 9:561182aac695 372 else if((i >= 0x1FE )&&( i < 0x2FD ))
jksoft 9:561182aac695 373 {
jksoft 9:561182aac695 374 i -= 0x1FE;
jksoft 9:561182aac695 375 dat[0] = 0xFF * sin(PI/(510.0f/(double)i));
jksoft 9:561182aac695 376 dat[1] = 0;
jksoft 9:561182aac695 377 dat[2] = 0xFF * cos(PI/(510.0f/(double)i));
jksoft 9:561182aac695 378 }
jksoft 9:561182aac695 379 return(0);
jksoft 9:561182aac695 380
jksoft 9:561182aac695 381 }
jksoft 9:561182aac695 382
jksoft 9:561182aac695 383 void idle_cycle(int like) {
jksoft 9:561182aac695 384 static int old_like_count_i = 0;
jksoft 9:561182aac695 385 static int cycle = 0;
jksoft 9:561182aac695 386 static int gorl_flag = 0;
jksoft 9:561182aac695 387 static int gol_count = 0;
jksoft 9:561182aac695 388 int point = STAR_LINE_MAX - like; //STAR_LINE_MAX - (int)((float)like / ((float)max_count / (float)STAR_LINE_MAX));
jksoft 9:561182aac695 389
jksoft 9:561182aac695 390 cycle++;
jksoft 9:561182aac695 391
jksoft 9:561182aac695 392 if( old_like_count_i != like ) {
jksoft 9:561182aac695 393
jksoft 9:561182aac695 394 flipper.detach();
jksoft 9:561182aac695 395
jksoft 9:561182aac695 396 if( like < max_count ) {
jksoft 9:561182aac695 397 for(int j=0;j<60;j++) {
jksoft 9:561182aac695 398 memcpy( led_data[j] , base_led_data[j] , 3 );
jksoft 9:561182aac695 399 }
jksoft 9:561182aac695 400 printf("COUNT!! %d\r\n",point);
jksoft 9:561182aac695 401 flow_star(0,point+1,_YELLOW,20);
jksoft 9:561182aac695 402 flow_star(point,point+1,color_line[point],_WHITE,50);
jksoft 9:561182aac695 403 flow_star(point,point+1,color_line[point],_WHITE,50);
jksoft 9:561182aac695 404 flow_star(point,point+1,_WHITE,color_line[point],50);
jksoft 9:561182aac695 405 memcpy(base_led_data[star_line[point]] , color_line[point] , 3 );
jksoft 9:561182aac695 406 }
jksoft 9:561182aac695 407 else if(gorl_flag == 0) {
jksoft 9:561182aac695 408 gorl_flag = 1;
jksoft 9:561182aac695 409 flow_star(0,STAR_LINE_MAX,_RED,10);
jksoft 9:561182aac695 410 flow_star(0,STAR_LINE_MAX,_PURPLE,10);
jksoft 9:561182aac695 411 flow_star(0,STAR_LINE_MAX,_BLUE,10);
jksoft 9:561182aac695 412 flow_star(0,STAR_LINE_MAX,_AQUA,10);
jksoft 9:561182aac695 413 flow_star(0,STAR_LINE_MAX,_RED,10);
jksoft 9:561182aac695 414 flow_star(0,STAR_LINE_MAX,_GREEN,10);
jksoft 9:561182aac695 415 flow_star(0,STAR_LINE_MAX,_YELLOW,_OFF,30);
jksoft 9:561182aac695 416 }
jksoft 9:561182aac695 417 else {
jksoft 9:561182aac695 418 flow_star(0,STAR_LINE_MAX,_YELLOW,30);
jksoft 9:561182aac695 419 }
jksoft 9:561182aac695 420
jksoft 9:561182aac695 421 flipper.attach(&flip, 2.0);
jksoft 9:561182aac695 422 }
jksoft 9:561182aac695 423 old_like_count_i = like;
jksoft 9:561182aac695 424
jksoft 9:561182aac695 425 if(gorl_flag == 1) {
jksoft 9:561182aac695 426 for(int j=0;j<60;j++) {
jksoft 9:561182aac695 427 glad(gol_count+(j*80),base_led_data[j]);
jksoft 9:561182aac695 428 memcpy( led_data[j] , base_led_data[j] , 3 );
jksoft 9:561182aac695 429 }
jksoft 9:561182aac695 430 }
jksoft 9:561182aac695 431 else {
jksoft 9:561182aac695 432 for(int i=0;i<STAR_LINE_MAX;i++) {
jksoft 9:561182aac695 433 if( i >= point ) {
jksoft 9:561182aac695 434 memcpy(base_led_data[star_line[i]] , color_line[i] , 3 );
jksoft 9:561182aac695 435 }
jksoft 9:561182aac695 436 }
jksoft 9:561182aac695 437 }
jksoft 9:561182aac695 438
jksoft 9:561182aac695 439 back_base();
jksoft 9:561182aac695 440
jksoft 9:561182aac695 441 gol_count += 30 ;
jksoft 9:561182aac695 442 if( gol_count >= 0x2FD ) {
jksoft 9:561182aac695 443 gol_count = 0;
jksoft 9:561182aac695 444 }
jksoft 9:561182aac695 445
jksoft 9:561182aac695 446 }
jksoft 9:561182aac695 447
jksoft 9:561182aac695 448 void like_change(int like)
jksoft 9:561182aac695 449 {
jksoft 9:561182aac695 450
jksoft 9:561182aac695 451 }
jksoft 9:561182aac695 452
jksoft 9:561182aac695 453 void send_led()
jksoft 9:561182aac695 454 {
jksoft 9:561182aac695 455 for(int i=0;i<LED_NUM;i++)
jksoft 9:561182aac695 456 {
jksoft 9:561182aac695 457 tapeSet(i,led_data[i][0] << 16 | led_data[i][1] << 8 | led_data[i][2]);
jksoft 9:561182aac695 458 }
jksoft 9:561182aac695 459 tapeSend();
jksoft 9:561182aac695 460 }
jksoft 9:561182aac695 461
jksoft 9:561182aac695 462
jksoft 9:561182aac695 463 void flip() {
jksoft 9:561182aac695 464 // like_count += 1;
jksoft 9:561182aac695 465 led_data[star_line[demo_count]][0] /= 2;
jksoft 9:561182aac695 466 led_data[star_line[demo_count]][1] /= 2;
jksoft 9:561182aac695 467 led_data[star_line[demo_count]][2] /= 2;
jksoft 9:561182aac695 468
jksoft 9:561182aac695 469 demo_count += 1;
jksoft 9:561182aac695 470
jksoft 9:561182aac695 471 if( demo_count >= STAR_LINE_MAX )
jksoft 9:561182aac695 472 {
jksoft 9:561182aac695 473 demo_count = 0;
jksoft 9:561182aac695 474 }
jksoft 9:561182aac695 475 }
jksoft 9:561182aac695 476
jksoft 0:92848fdd9379 477 int main() {
jksoft 9:561182aac695 478 int old_like_count = 1;
jksoft 9:561182aac695 479 char tag[64];
jksoft 9:561182aac695 480 char tmp[5];
jksoft 9:561182aac695 481 char tmp2[5];
jksoft 9:561182aac695 482
jksoft 9:561182aac695 483 SW1.mode(PullUp);
jksoft 9:561182aac695 484 SW2.mode(PullUp);
jksoft 9:561182aac695 485
jksoft 9:561182aac695 486 if( SW1 == 0 ) { // DEMO MODE
jksoft 9:561182aac695 487 tapeInit(0, LED_NUM+2);
jksoft 9:561182aac695 488
jksoft 9:561182aac695 489 while(1) {
jksoft 9:561182aac695 490 flow_star(0,STAR_LINE_MAX,_RED ,_OFF,30);
jksoft 9:561182aac695 491 wait(0.5);
jksoft 9:561182aac695 492 flow_star(0,STAR_LINE_MAX,_PURPLE,_OFF,30);
jksoft 9:561182aac695 493 wait(0.5);
jksoft 9:561182aac695 494 flow_star(0,STAR_LINE_MAX,_BLUE ,_OFF,30);
jksoft 9:561182aac695 495 wait(0.5);
jksoft 9:561182aac695 496 flow_star(0,STAR_LINE_MAX,_AQUA ,_OFF,30);
jksoft 9:561182aac695 497 wait(0.5);
jksoft 9:561182aac695 498 flow_star(0,STAR_LINE_MAX,_GREEN ,_OFF,30);
jksoft 9:561182aac695 499 wait(0.5);
jksoft 9:561182aac695 500 flow_star(0,STAR_LINE_MAX,_YELLOW,_OFF,30);
jksoft 9:561182aac695 501 wait(0.5);
jksoft 9:561182aac695 502 }
jksoft 9:561182aac695 503 }
jksoft 9:561182aac695 504 #if 0
jksoft 9:561182aac695 505 cfg.read("/local/env.ini");
jksoft 9:561182aac695 506
jksoft 9:561182aac695 507 if (cfg.getValue("TAG", &tag[0], sizeof(tag))) {
jksoft 9:561182aac695 508 printf("'%s'='%s'\n\r", "TAG", tag);
jksoft 9:561182aac695 509 }
jksoft 9:561182aac695 510 else
jksoft 9:561182aac695 511 {
jksoft 9:561182aac695 512 sprintf(tag,"ma9");
jksoft 9:561182aac695 513 }
jksoft 9:561182aac695 514 if (cfg.getValue("COUNT", &tmp[0], sizeof(tmp))) {
jksoft 9:561182aac695 515 printf("'%s'='%s'\n\r", "COUNT", tmp);
jksoft 9:561182aac695 516 like_count = atoi(tmp);
jksoft 9:561182aac695 517 }
jksoft 9:561182aac695 518 else
jksoft 9:561182aac695 519 {
jksoft 9:561182aac695 520 like_count = 0;
jksoft 9:561182aac695 521 }
jksoft 9:561182aac695 522 if (cfg.getValue("MAX", &tmp2[0], sizeof(tmp2))) {
jksoft 9:561182aac695 523 printf("'%s'='%s'\n\r", "MAX", tmp2);
jksoft 9:561182aac695 524 max_count = atoi(tmp2);
jksoft 9:561182aac695 525 }
jksoft 9:561182aac695 526 else
jksoft 9:561182aac695 527 {
jksoft 9:561182aac695 528 max_count = 0;
jksoft 9:561182aac695 529 }
jksoft 9:561182aac695 530 #endif
jksoft 9:561182aac695 531 like_count = 0;
jksoft 9:561182aac695 532 max_count = 60;
jksoft 9:561182aac695 533
jksoft 9:561182aac695 534 printf("ini file read\r\n");
jksoft 9:561182aac695 535 printf("HashTag:%s\r\n",tag);
jksoft 9:561182aac695 536 printf("Now Count:%d\r\n",like_count);
jksoft 9:561182aac695 537 printf("Max Count:%d\r\n",max_count);
jksoft 9:561182aac695 538
jksoft 9:561182aac695 539 stat_led1 = 1;
jksoft 9:561182aac695 540
jksoft 9:561182aac695 541 for(int i=0;i<LED_NUM;i++) {
jksoft 9:561182aac695 542 memcpy( led_data[i] , _OFF , 3 );
jksoft 9:561182aac695 543 memcpy( base_led_data[i] , _DARK_GLAY , 3 );
jksoft 9:561182aac695 544 }
jksoft 9:561182aac695 545
jksoft 9:561182aac695 546 tapeInit(0, LED_NUM+2);
jksoft 9:561182aac695 547
jksoft 9:561182aac695 548 send_led();
jksoft 9:561182aac695 549
jksoft 9:561182aac695 550 slow_light_all(_DARK_GLAY , 50);
jksoft 9:561182aac695 551
jksoft 0:92848fdd9379 552
jksoft 0:92848fdd9379 553 MQTTEthernet *ipstack = new MQTTEthernet();
jksoft 0:92848fdd9379 554 MClient *client = new MClient(ipstack);
jksoft 0:92848fdd9379 555 Milkcocoa *milkcocoa = new Milkcocoa(client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
jksoft 0:92848fdd9379 556
jksoft 0:92848fdd9379 557 pc.printf("Milkcocoa mbed ver demo\n\r\n\r\n\r");
jksoft 9:561182aac695 558
jksoft 9:561182aac695 559
jksoft 9:561182aac695 560 wait(2);
jksoft 0:92848fdd9379 561
jksoft 0:92848fdd9379 562 milkcocoa->connect();
jksoft 9:561182aac695 563 while(milkcocoa->getConnectStatus()!=1) {
jksoft 9:561182aac695 564 pc.printf("\n\rEther connected error\n\r");
jksoft 9:561182aac695 565 pc.printf("\n\rEther re connect\n\r");
jksoft 9:561182aac695 566 ipstack->reconnect();
jksoft 9:561182aac695 567 wait(2);
jksoft 9:561182aac695 568 milkcocoa->connect();
jksoft 9:561182aac695 569 }
jksoft 9:561182aac695 570
jksoft 9:561182aac695 571 stat_led2 = 1;
jksoft 0:92848fdd9379 572
jksoft 9:561182aac695 573 int ret = milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush);
jksoft 9:561182aac695 574 pc.printf("%d\n\r",ret);
jksoft 9:561182aac695 575 while(ret != 1){
jksoft 9:561182aac695 576 wait(1);
jksoft 9:561182aac695 577 pc.printf("%d\n\r",ret);
jksoft 9:561182aac695 578 ret = milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush);
jksoft 9:561182aac695 579 }
jksoft 9:561182aac695 580
jksoft 9:561182aac695 581 stat_led3 = 1;
jksoft 0:92848fdd9379 582
jksoft 9:561182aac695 583 while(1)
jksoft 9:561182aac695 584 {
jksoft 9:561182aac695 585 milkcocoa->loop();
jksoft 9:561182aac695 586
jksoft 9:561182aac695 587 if(like_count != old_like_count)
jksoft 9:561182aac695 588 {
jksoft 9:561182aac695 589 printf("%04d\r\n",like_count);
jksoft 9:561182aac695 590 sprintf(&tmp[0],"%d",like_count);
jksoft 9:561182aac695 591 //cfg.setValue("COUNT", tmp);
jksoft 9:561182aac695 592 if(cfg.write("/local/env.ini"))
jksoft 9:561182aac695 593 {
jksoft 9:561182aac695 594 printf("SET COUNT\r\n");
jksoft 9:561182aac695 595 }
jksoft 9:561182aac695 596 else
jksoft 9:561182aac695 597 {
jksoft 9:561182aac695 598 printf("SET ERR\r\n");
jksoft 9:561182aac695 599 }
jksoft 9:561182aac695 600 old_like_count = like_count;
jksoft 9:561182aac695 601 }
jksoft 9:561182aac695 602
jksoft 9:561182aac695 603 idle_cycle(like_count);
jksoft 0:92848fdd9379 604
jksoft 9:561182aac695 605 stat_led4 = !stat_led4;
jksoft 9:561182aac695 606
jksoft 0:92848fdd9379 607 }
jksoft 0:92848fdd9379 608 }
jksoft 0:92848fdd9379 609
jksoft 0:92848fdd9379 610 void onpush(MQTT::MessageData& md)
jksoft 0:92848fdd9379 611 {
jksoft 0:92848fdd9379 612 MQTT::Message &message = md.message;
jksoft 9:561182aac695 613 DataElement de = DataElement((char*)message.payload);
jksoft 9:561182aac695 614 printf("onpush\n\r");
jksoft 9:561182aac695 615 like_count++;
jksoft 9:561182aac695 616 }
jksoft 9:561182aac695 617
jksoft 9:561182aac695 618