Ligth animation fore hall

Dependencies:   FastPWM HCSR04 NeoStrip mbed

Committer:
gert_lauritsen
Date:
Tue Sep 08 15:23:32 2015 +0000
Revision:
0:dcef095e5883
Med ekstra filter p? sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gert_lauritsen 0:dcef095e5883 1 #include "mbed.h"
gert_lauritsen 0:dcef095e5883 2 #include "HCSR04.h"
gert_lauritsen 0:dcef095e5883 3 #include "NeoStrip.h"
gert_lauritsen 0:dcef095e5883 4
gert_lauritsen 0:dcef095e5883 5 #define MinDist 150
gert_lauritsen 0:dcef095e5883 6 #define PeriodeTime 100
gert_lauritsen 0:dcef095e5883 7 #define Nsensor 6
gert_lauritsen 0:dcef095e5883 8
gert_lauritsen 0:dcef095e5883 9 HCSR04 *sensor1;
gert_lauritsen 0:dcef095e5883 10 HCSR04 *sensor2;
gert_lauritsen 0:dcef095e5883 11 HCSR04 *sensor3;
gert_lauritsen 0:dcef095e5883 12 HCSR04 *sensor4;
gert_lauritsen 0:dcef095e5883 13 HCSR04 *sensor5;
gert_lauritsen 0:dcef095e5883 14 HCSR04 *sensor6;
gert_lauritsen 0:dcef095e5883 15
gert_lauritsen 0:dcef095e5883 16 Timeout Delay;
gert_lauritsen 0:dcef095e5883 17
gert_lauritsen 0:dcef095e5883 18 Serial pc(USBTX, USBRX);
gert_lauritsen 0:dcef095e5883 19 //int SectionSize[8]={16,16,16,16,16,16,16,16};
gert_lauritsen 0:dcef095e5883 20 int SectionSize[8]= {500,343,285,270,395,443,16,16};
gert_lauritsen 0:dcef095e5883 21 int N=2268;
gert_lauritsen 0:dcef095e5883 22
gert_lauritsen 0:dcef095e5883 23 int TimeToNet=0;
gert_lauritsen 0:dcef095e5883 24 int CallAgain=0;
gert_lauritsen 0:dcef095e5883 25 bool ThereAreSomeThing=0;
gert_lauritsen 0:dcef095e5883 26 int ThereAreNothing=0;
gert_lauritsen 0:dcef095e5883 27
gert_lauritsen 0:dcef095e5883 28 //int N=128;
gert_lauritsen 0:dcef095e5883 29
gert_lauritsen 0:dcef095e5883 30 NeoStrip strip(p22, N);
gert_lauritsen 0:dcef095e5883 31
gert_lauritsen 0:dcef095e5883 32 double LED[8]; //power status
gert_lauritsen 0:dcef095e5883 33 int LedOnOff[8]; //Hvis 1 sættes skal den lave et loop
gert_lauritsen 0:dcef095e5883 34 bool InAktive;
gert_lauritsen 0:dcef095e5883 35 int color[3]= {255,255,255};
gert_lauritsen 0:dcef095e5883 36
gert_lauritsen 0:dcef095e5883 37 long DistArr[6];
gert_lauritsen 0:dcef095e5883 38 int SensorTOCall=0;
gert_lauritsen 0:dcef095e5883 39
gert_lauritsen 0:dcef095e5883 40 int hueToRGB(float h);
gert_lauritsen 0:dcef095e5883 41 void CallNewSensor();
gert_lauritsen 0:dcef095e5883 42 void pattern1();
gert_lauritsen 0:dcef095e5883 43 extern "C" void mbed_reset();
gert_lauritsen 0:dcef095e5883 44 // display a shifting rainbow, all colors have maximum
gert_lauritsen 0:dcef095e5883 45 // saturation and value, with evenly spaced hue
gert_lauritsen 0:dcef095e5883 46 void pattern1()
gert_lauritsen 0:dcef095e5883 47 {
gert_lauritsen 0:dcef095e5883 48 static float dh = 360.0 / N;
gert_lauritsen 0:dcef095e5883 49 static float x = 0;
gert_lauritsen 0:dcef095e5883 50
gert_lauritsen 0:dcef095e5883 51 for (int i = 0; i < N; i++)
gert_lauritsen 0:dcef095e5883 52 strip.setPixel(i, hueToRGB((dh * i) - x));
gert_lauritsen 0:dcef095e5883 53
gert_lauritsen 0:dcef095e5883 54 x += 1;
gert_lauritsen 0:dcef095e5883 55 if (x > 360)
gert_lauritsen 0:dcef095e5883 56 x = 0;
gert_lauritsen 0:dcef095e5883 57 }
gert_lauritsen 0:dcef095e5883 58
gert_lauritsen 0:dcef095e5883 59 // Converts HSV to RGB with the given hue, assuming
gert_lauritsen 0:dcef095e5883 60 // maximum saturation and value
gert_lauritsen 0:dcef095e5883 61 int hueToRGB(float h)
gert_lauritsen 0:dcef095e5883 62 {
gert_lauritsen 0:dcef095e5883 63 // lots of floating point magic from the internet and scratching my head
gert_lauritsen 0:dcef095e5883 64 float r, g, b;
gert_lauritsen 0:dcef095e5883 65 if (h > 360)
gert_lauritsen 0:dcef095e5883 66 h -= 360;
gert_lauritsen 0:dcef095e5883 67 if (h < 0)
gert_lauritsen 0:dcef095e5883 68 h += 360;
gert_lauritsen 0:dcef095e5883 69 int i = (int)(h / 60.0);
gert_lauritsen 0:dcef095e5883 70 float f = (h / 60.0) - i;
gert_lauritsen 0:dcef095e5883 71 float q = 1 - f;
gert_lauritsen 0:dcef095e5883 72
gert_lauritsen 0:dcef095e5883 73 switch (i % 6) {
gert_lauritsen 0:dcef095e5883 74 case 0:
gert_lauritsen 0:dcef095e5883 75 r = 1;
gert_lauritsen 0:dcef095e5883 76 g = f;
gert_lauritsen 0:dcef095e5883 77 b = 0;
gert_lauritsen 0:dcef095e5883 78 break;
gert_lauritsen 0:dcef095e5883 79 case 1:
gert_lauritsen 0:dcef095e5883 80 r = q;
gert_lauritsen 0:dcef095e5883 81 g = 1;
gert_lauritsen 0:dcef095e5883 82 b = 0;
gert_lauritsen 0:dcef095e5883 83 break;
gert_lauritsen 0:dcef095e5883 84 case 2:
gert_lauritsen 0:dcef095e5883 85 r = 0;
gert_lauritsen 0:dcef095e5883 86 g = 1;
gert_lauritsen 0:dcef095e5883 87 b = f;
gert_lauritsen 0:dcef095e5883 88 break;
gert_lauritsen 0:dcef095e5883 89 case 3:
gert_lauritsen 0:dcef095e5883 90 r = 0;
gert_lauritsen 0:dcef095e5883 91 g = q;
gert_lauritsen 0:dcef095e5883 92 b = 1;
gert_lauritsen 0:dcef095e5883 93 break;
gert_lauritsen 0:dcef095e5883 94 case 4:
gert_lauritsen 0:dcef095e5883 95 r = f;
gert_lauritsen 0:dcef095e5883 96 g = 0;
gert_lauritsen 0:dcef095e5883 97 b = 1;
gert_lauritsen 0:dcef095e5883 98 break;
gert_lauritsen 0:dcef095e5883 99 case 5:
gert_lauritsen 0:dcef095e5883 100 r = 1;
gert_lauritsen 0:dcef095e5883 101 g = 0;
gert_lauritsen 0:dcef095e5883 102 b = q;
gert_lauritsen 0:dcef095e5883 103 break;
gert_lauritsen 0:dcef095e5883 104 default:
gert_lauritsen 0:dcef095e5883 105 r = 0;
gert_lauritsen 0:dcef095e5883 106 g = 0;
gert_lauritsen 0:dcef095e5883 107 b = 0;
gert_lauritsen 0:dcef095e5883 108 break;
gert_lauritsen 0:dcef095e5883 109 }
gert_lauritsen 0:dcef095e5883 110
gert_lauritsen 0:dcef095e5883 111 // scale to integers and return the packed value
gert_lauritsen 0:dcef095e5883 112 uint8_t R = (uint8_t)(r * 255);
gert_lauritsen 0:dcef095e5883 113 uint8_t G = (uint8_t)(g * 255);
gert_lauritsen 0:dcef095e5883 114 uint8_t B = (uint8_t)(b * 255);
gert_lauritsen 0:dcef095e5883 115
gert_lauritsen 0:dcef095e5883 116 return (R << 16) | (G << 8) | B;
gert_lauritsen 0:dcef095e5883 117 }
gert_lauritsen 0:dcef095e5883 118
gert_lauritsen 0:dcef095e5883 119 void update()
gert_lauritsen 0:dcef095e5883 120 {
gert_lauritsen 0:dcef095e5883 121 int LEDNr=0;
gert_lauritsen 0:dcef095e5883 122 for (int j=0; j<Nsensor; j++) {
gert_lauritsen 0:dcef095e5883 123 for (int i=0; i<SectionSize[j]; i++) {
gert_lauritsen 0:dcef095e5883 124 strip.setPixel(LEDNr,LED[j]*color[0],LED[j]*color[1],LED[j]*color[2]);
gert_lauritsen 0:dcef095e5883 125 LEDNr++;
gert_lauritsen 0:dcef095e5883 126 }
gert_lauritsen 0:dcef095e5883 127 }
gert_lauritsen 0:dcef095e5883 128 strip.write();
gert_lauritsen 0:dcef095e5883 129 }
gert_lauritsen 0:dcef095e5883 130
gert_lauritsen 0:dcef095e5883 131 void ReadColorFactor()
gert_lauritsen 0:dcef095e5883 132 {
gert_lauritsen 0:dcef095e5883 133 LocalFileSystem local("local"); // Create the local filesystem under the name "local"
gert_lauritsen 0:dcef095e5883 134 char str[10];
gert_lauritsen 0:dcef095e5883 135
gert_lauritsen 0:dcef095e5883 136 FILE *fp = fopen("/local/color.txt", "r"); // Open "out.txt" on the local file system for writing
gert_lauritsen 0:dcef095e5883 137 if (fp) {
gert_lauritsen 0:dcef095e5883 138 //fscanf(fp,"%[^\n]",str);
gert_lauritsen 0:dcef095e5883 139 printf("Reading color.txt \r\n");
gert_lauritsen 0:dcef095e5883 140 fgets(str, 10, fp);
gert_lauritsen 0:dcef095e5883 141 printf("%s\r\n",str);
gert_lauritsen 0:dcef095e5883 142 color[0]=atoi(str);
gert_lauritsen 0:dcef095e5883 143 fgets(str, 10, fp);
gert_lauritsen 0:dcef095e5883 144 printf("%s\r\n",str);
gert_lauritsen 0:dcef095e5883 145 color[1]=atoi(str);
gert_lauritsen 0:dcef095e5883 146 fgets(str, 10, fp);
gert_lauritsen 0:dcef095e5883 147 printf("%s\r\n",str);
gert_lauritsen 0:dcef095e5883 148 color[2]=atoi(str);
gert_lauritsen 0:dcef095e5883 149 fclose(fp);
gert_lauritsen 0:dcef095e5883 150 } else
gert_lauritsen 0:dcef095e5883 151 printf("Cant open file\r\n");
gert_lauritsen 0:dcef095e5883 152 }
gert_lauritsen 0:dcef095e5883 153
gert_lauritsen 0:dcef095e5883 154 void CalcNew()
gert_lauritsen 0:dcef095e5883 155 {
gert_lauritsen 0:dcef095e5883 156 for (int i=0; i<Nsensor; i++) {
gert_lauritsen 0:dcef095e5883 157 if ((LedOnOff[i]==2) && (LED[i]>=0)) LED[i]-=0.1; //falder
gert_lauritsen 0:dcef095e5883 158 if (LedOnOff[i]==1) {
gert_lauritsen 0:dcef095e5883 159 LED[i]+=0.1;
gert_lauritsen 0:dcef095e5883 160 //InAktive=0; //stiger
gert_lauritsen 0:dcef095e5883 161 }
gert_lauritsen 0:dcef095e5883 162 if (LED[i]>1) { //Skift til at gå ned igen
gert_lauritsen 0:dcef095e5883 163 LedOnOff[i]=2;
gert_lauritsen 0:dcef095e5883 164 LED[i]=1;
gert_lauritsen 0:dcef095e5883 165 }
gert_lauritsen 0:dcef095e5883 166 if ((LedOnOff[i]==2) && (LED[i]<=0.02)) { //SLuk
gert_lauritsen 0:dcef095e5883 167 LED[i]=0;
gert_lauritsen 0:dcef095e5883 168 LedOnOff[i]=0;
gert_lauritsen 0:dcef095e5883 169 }
gert_lauritsen 0:dcef095e5883 170 }
gert_lauritsen 0:dcef095e5883 171 update();
gert_lauritsen 0:dcef095e5883 172 }
gert_lauritsen 0:dcef095e5883 173
gert_lauritsen 0:dcef095e5883 174
gert_lauritsen 0:dcef095e5883 175 void SetAll(float p)
gert_lauritsen 0:dcef095e5883 176 {
gert_lauritsen 0:dcef095e5883 177 for (int i=0; i<N; i++) {
gert_lauritsen 0:dcef095e5883 178 strip.setPixel(i,p*255,p*255,p*255);
gert_lauritsen 0:dcef095e5883 179 }
gert_lauritsen 0:dcef095e5883 180 strip.write();
gert_lauritsen 0:dcef095e5883 181 }
gert_lauritsen 0:dcef095e5883 182
gert_lauritsen 0:dcef095e5883 183 void SetAllOn()
gert_lauritsen 0:dcef095e5883 184 {
gert_lauritsen 0:dcef095e5883 185 for (int i=0; i<N; i++) {
gert_lauritsen 0:dcef095e5883 186 strip.setPixel(i,color[0],color[1],color[2]);
gert_lauritsen 0:dcef095e5883 187 }
gert_lauritsen 0:dcef095e5883 188 strip.write();
gert_lauritsen 0:dcef095e5883 189 }
gert_lauritsen 0:dcef095e5883 190
gert_lauritsen 0:dcef095e5883 191
gert_lauritsen 0:dcef095e5883 192 void distance6(long Duration)
gert_lauritsen 0:dcef095e5883 193 {
gert_lauritsen 0:dcef095e5883 194 //printf("Distance2: %d %.2f \n\r",Duration, LED[1]);
gert_lauritsen 0:dcef095e5883 195 DistArr[5]=Duration;
gert_lauritsen 0:dcef095e5883 196 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 197 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 198 LedOnOff[5]=1;
gert_lauritsen 0:dcef095e5883 199 CallAgain=0;
gert_lauritsen 0:dcef095e5883 200 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 201 } else {
gert_lauritsen 0:dcef095e5883 202 CallAgain++;
gert_lauritsen 0:dcef095e5883 203 SensorTOCall=6; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 204 }
gert_lauritsen 0:dcef095e5883 205 } else {
gert_lauritsen 0:dcef095e5883 206 LedOnOff[5]=2;
gert_lauritsen 0:dcef095e5883 207 CallAgain=0;
gert_lauritsen 0:dcef095e5883 208 }
gert_lauritsen 0:dcef095e5883 209 }
gert_lauritsen 0:dcef095e5883 210
gert_lauritsen 0:dcef095e5883 211
gert_lauritsen 0:dcef095e5883 212 void distance5(long Duration)
gert_lauritsen 0:dcef095e5883 213 {
gert_lauritsen 0:dcef095e5883 214 //printf("Distance1: %d %.2f \n\r",Duration, LED[0]);
gert_lauritsen 0:dcef095e5883 215 DistArr[4]=Duration;
gert_lauritsen 0:dcef095e5883 216 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 217 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 218 LedOnOff[4]=1;
gert_lauritsen 0:dcef095e5883 219 CallAgain=0;
gert_lauritsen 0:dcef095e5883 220 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 221 } else {
gert_lauritsen 0:dcef095e5883 222 CallAgain++;
gert_lauritsen 0:dcef095e5883 223 SensorTOCall=5; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 224 }
gert_lauritsen 0:dcef095e5883 225 } else {
gert_lauritsen 0:dcef095e5883 226 LedOnOff[4]=2;
gert_lauritsen 0:dcef095e5883 227 CallAgain=0;
gert_lauritsen 0:dcef095e5883 228 SensorTOCall=6;
gert_lauritsen 0:dcef095e5883 229 }
gert_lauritsen 0:dcef095e5883 230 Delay.attach(&CallNewSensor,0.005); //5ms mellem sensor
gert_lauritsen 0:dcef095e5883 231
gert_lauritsen 0:dcef095e5883 232 // sensor6->Trigger();
gert_lauritsen 0:dcef095e5883 233 }
gert_lauritsen 0:dcef095e5883 234
gert_lauritsen 0:dcef095e5883 235 void distance4(long Duration)
gert_lauritsen 0:dcef095e5883 236 {
gert_lauritsen 0:dcef095e5883 237 //printf("Distance4: %d %.2f \n\r",Duration, LED[3]);
gert_lauritsen 0:dcef095e5883 238 DistArr[3]=Duration;
gert_lauritsen 0:dcef095e5883 239 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 240 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 241 LedOnOff[3]=1;
gert_lauritsen 0:dcef095e5883 242 CallAgain=0;
gert_lauritsen 0:dcef095e5883 243 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 244 } else {
gert_lauritsen 0:dcef095e5883 245 CallAgain++;
gert_lauritsen 0:dcef095e5883 246 SensorTOCall=4; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 247 }
gert_lauritsen 0:dcef095e5883 248 } else {
gert_lauritsen 0:dcef095e5883 249 LedOnOff[3]=2;
gert_lauritsen 0:dcef095e5883 250 CallAgain=0;
gert_lauritsen 0:dcef095e5883 251 SensorTOCall=5;
gert_lauritsen 0:dcef095e5883 252 }
gert_lauritsen 0:dcef095e5883 253 Delay.attach(&CallNewSensor,0.005); //5ms mellem sensor
gert_lauritsen 0:dcef095e5883 254
gert_lauritsen 0:dcef095e5883 255 // sensor5->Trigger();
gert_lauritsen 0:dcef095e5883 256 }
gert_lauritsen 0:dcef095e5883 257
gert_lauritsen 0:dcef095e5883 258 void distance3(long Duration)
gert_lauritsen 0:dcef095e5883 259 {
gert_lauritsen 0:dcef095e5883 260 //printf("Distance3: %d %.2f \n\r",Duration, LED[2]);
gert_lauritsen 0:dcef095e5883 261 DistArr[2]=Duration;
gert_lauritsen 0:dcef095e5883 262 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 263 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 264 LedOnOff[2]=1;
gert_lauritsen 0:dcef095e5883 265 CallAgain=0;
gert_lauritsen 0:dcef095e5883 266 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 267 } else {
gert_lauritsen 0:dcef095e5883 268 CallAgain++;
gert_lauritsen 0:dcef095e5883 269 SensorTOCall=3; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 270 }
gert_lauritsen 0:dcef095e5883 271 } else {
gert_lauritsen 0:dcef095e5883 272 LedOnOff[2]=2;
gert_lauritsen 0:dcef095e5883 273 CallAgain=0;
gert_lauritsen 0:dcef095e5883 274 SensorTOCall=4;
gert_lauritsen 0:dcef095e5883 275 }
gert_lauritsen 0:dcef095e5883 276 Delay.attach(&CallNewSensor,0.005); //5ms mellem sensor
gert_lauritsen 0:dcef095e5883 277
gert_lauritsen 0:dcef095e5883 278 //sensor4->Trigger();
gert_lauritsen 0:dcef095e5883 279 }
gert_lauritsen 0:dcef095e5883 280
gert_lauritsen 0:dcef095e5883 281 void distance2(long Duration)
gert_lauritsen 0:dcef095e5883 282 {
gert_lauritsen 0:dcef095e5883 283 //printf("Distance2: %d %.2f \n\r",Duration, LED[1]);
gert_lauritsen 0:dcef095e5883 284 DistArr[1]=Duration;
gert_lauritsen 0:dcef095e5883 285 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 286 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 287 LedOnOff[1]=1;
gert_lauritsen 0:dcef095e5883 288 CallAgain=0;
gert_lauritsen 0:dcef095e5883 289 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 290 } else {
gert_lauritsen 0:dcef095e5883 291 CallAgain++;
gert_lauritsen 0:dcef095e5883 292 SensorTOCall=2; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 293 }
gert_lauritsen 0:dcef095e5883 294 } else {
gert_lauritsen 0:dcef095e5883 295 LedOnOff[1]=2;
gert_lauritsen 0:dcef095e5883 296 CallAgain=0;
gert_lauritsen 0:dcef095e5883 297 SensorTOCall=3;
gert_lauritsen 0:dcef095e5883 298 }
gert_lauritsen 0:dcef095e5883 299 Delay.attach(&CallNewSensor,0.005); //5ms mellem sensor
gert_lauritsen 0:dcef095e5883 300 }
gert_lauritsen 0:dcef095e5883 301
gert_lauritsen 0:dcef095e5883 302
gert_lauritsen 0:dcef095e5883 303 void distance1(long Duration)
gert_lauritsen 0:dcef095e5883 304 {
gert_lauritsen 0:dcef095e5883 305
gert_lauritsen 0:dcef095e5883 306 DistArr[0]=Duration;
gert_lauritsen 0:dcef095e5883 307 if (Duration<MinDist) {
gert_lauritsen 0:dcef095e5883 308 if (CallAgain) {
gert_lauritsen 0:dcef095e5883 309 LedOnOff[0]=1;
gert_lauritsen 0:dcef095e5883 310 CallAgain=0;
gert_lauritsen 0:dcef095e5883 311 ThereAreSomeThing=1;
gert_lauritsen 0:dcef095e5883 312 } else {
gert_lauritsen 0:dcef095e5883 313 CallAgain++;
gert_lauritsen 0:dcef095e5883 314 SensorTOCall=1; //kalder sig selv igen
gert_lauritsen 0:dcef095e5883 315 }
gert_lauritsen 0:dcef095e5883 316 } else {
gert_lauritsen 0:dcef095e5883 317 LedOnOff[0]=2;
gert_lauritsen 0:dcef095e5883 318 CallAgain=0;
gert_lauritsen 0:dcef095e5883 319 SensorTOCall=2;
gert_lauritsen 0:dcef095e5883 320 }
gert_lauritsen 0:dcef095e5883 321 Delay.attach(&CallNewSensor,0.005); //5ms mellem sensor
gert_lauritsen 0:dcef095e5883 322 }
gert_lauritsen 0:dcef095e5883 323
gert_lauritsen 0:dcef095e5883 324 void CallNewSensor()
gert_lauritsen 0:dcef095e5883 325 {
gert_lauritsen 0:dcef095e5883 326 switch (SensorTOCall) {
gert_lauritsen 0:dcef095e5883 327 case 1:
gert_lauritsen 0:dcef095e5883 328 sensor1->Trigger();
gert_lauritsen 0:dcef095e5883 329 break;
gert_lauritsen 0:dcef095e5883 330 case 2:
gert_lauritsen 0:dcef095e5883 331 sensor2->Trigger();
gert_lauritsen 0:dcef095e5883 332 break;
gert_lauritsen 0:dcef095e5883 333 case 3:
gert_lauritsen 0:dcef095e5883 334 sensor3->Trigger();
gert_lauritsen 0:dcef095e5883 335 break;
gert_lauritsen 0:dcef095e5883 336 case 4:
gert_lauritsen 0:dcef095e5883 337 sensor4->Trigger();
gert_lauritsen 0:dcef095e5883 338 break;
gert_lauritsen 0:dcef095e5883 339 case 5:
gert_lauritsen 0:dcef095e5883 340 sensor5->Trigger();
gert_lauritsen 0:dcef095e5883 341 break;
gert_lauritsen 0:dcef095e5883 342 case 6:
gert_lauritsen 0:dcef095e5883 343 sensor6->Trigger();
gert_lauritsen 0:dcef095e5883 344 break;
gert_lauritsen 0:dcef095e5883 345 }
gert_lauritsen 0:dcef095e5883 346 }
gert_lauritsen 0:dcef095e5883 347
gert_lauritsen 0:dcef095e5883 348 int main()
gert_lauritsen 0:dcef095e5883 349 {
gert_lauritsen 0:dcef095e5883 350 pc.baud(115200);
gert_lauritsen 0:dcef095e5883 351 printf("Test af sensor\r\n");
gert_lauritsen 0:dcef095e5883 352 sensor1= new HCSR04(p5,p6,distance1);
gert_lauritsen 0:dcef095e5883 353 sensor2= new HCSR04(p7,p8,distance2);
gert_lauritsen 0:dcef095e5883 354 sensor3= new HCSR04(p9,p10,distance3);
gert_lauritsen 0:dcef095e5883 355 sensor4= new HCSR04(p11,p12,distance4);
gert_lauritsen 0:dcef095e5883 356 sensor5= new HCSR04(p13,p14,distance5);
gert_lauritsen 0:dcef095e5883 357 sensor6= new HCSR04(p15,p16,distance6);
gert_lauritsen 0:dcef095e5883 358 ReadColorFactor();
gert_lauritsen 0:dcef095e5883 359 N=0;
gert_lauritsen 0:dcef095e5883 360 for (int a=0; a<8; a++) N+=SectionSize[a];
gert_lauritsen 0:dcef095e5883 361 printf("Numbers of LED %d\r\n",N);
gert_lauritsen 0:dcef095e5883 362
gert_lauritsen 0:dcef095e5883 363 float bright = 0.2; // 20% is plenty for indoor use
gert_lauritsen 0:dcef095e5883 364 strip.setBrightness(bright); // set default brightness
gert_lauritsen 0:dcef095e5883 365
gert_lauritsen 0:dcef095e5883 366 SetAll(0);
gert_lauritsen 0:dcef095e5883 367
gert_lauritsen 0:dcef095e5883 368 while(1) {
gert_lauritsen 0:dcef095e5883 369 ThereAreSomeThing=0;
gert_lauritsen 0:dcef095e5883 370 sensor1->Trigger();
gert_lauritsen 0:dcef095e5883 371 wait(0.05);
gert_lauritsen 0:dcef095e5883 372 if (ThereAreSomeThing) ThereAreNothing=0; else ThereAreNothing++;
gert_lauritsen 0:dcef095e5883 373 if (ThereAreNothing>6000) { //5 minutter ingenting
gert_lauritsen 0:dcef095e5883 374 InAktive=2; //Inaktiv på den måde at denskal lave noget
gert_lauritsen 0:dcef095e5883 375 }
gert_lauritsen 0:dcef095e5883 376 if ((ThereAreSomeThing==0) && (InAktive==2)) InAktive=0; //gå tilbage til almindeligt mode
gert_lauritsen 0:dcef095e5883 377 if (InAktive) {
gert_lauritsen 0:dcef095e5883 378 if (TimeToNet) TimeToNet--;
gert_lauritsen 0:dcef095e5883 379 if ((InAktive==2) && (TimeToNet==0)) { //gør noget
gert_lauritsen 0:dcef095e5883 380 LED[rand() % 6]=1; //Tænder for en tilfældig
gert_lauritsen 0:dcef095e5883 381 //Der skal gå et stykke tid
gert_lauritsen 0:dcef095e5883 382 TimeToNet=60; //3 sek
gert_lauritsen 0:dcef095e5883 383 CalcNew();
gert_lauritsen 0:dcef095e5883 384 }
gert_lauritsen 0:dcef095e5883 385 }
gert_lauritsen 0:dcef095e5883 386 if (InAktive==0) {
gert_lauritsen 0:dcef095e5883 387 CalcNew();
gert_lauritsen 0:dcef095e5883 388 LedOnOff[0]=2;
gert_lauritsen 0:dcef095e5883 389 LedOnOff[1]=2;
gert_lauritsen 0:dcef095e5883 390 LedOnOff[2]=2;
gert_lauritsen 0:dcef095e5883 391 LedOnOff[3]=2;
gert_lauritsen 0:dcef095e5883 392 LedOnOff[4]=2;
gert_lauritsen 0:dcef095e5883 393 LedOnOff[5]=2;
gert_lauritsen 0:dcef095e5883 394 LedOnOff[6]=2;
gert_lauritsen 0:dcef095e5883 395 LedOnOff[7]=2;
gert_lauritsen 0:dcef095e5883 396 printf("Sensor %d %d %d %d %d %d \r",DistArr[0],DistArr[1],DistArr[2],DistArr[3],DistArr[4],DistArr[5]);
gert_lauritsen 0:dcef095e5883 397 }
gert_lauritsen 0:dcef095e5883 398 if (pc.readable()) {
gert_lauritsen 0:dcef095e5883 399 switch(pc.getc()) {
gert_lauritsen 0:dcef095e5883 400 case '1':
gert_lauritsen 0:dcef095e5883 401 LedOnOff[0]=1;
gert_lauritsen 0:dcef095e5883 402 break;
gert_lauritsen 0:dcef095e5883 403 case '2':
gert_lauritsen 0:dcef095e5883 404 LedOnOff[1]=1;
gert_lauritsen 0:dcef095e5883 405 break;
gert_lauritsen 0:dcef095e5883 406 case '3':
gert_lauritsen 0:dcef095e5883 407 LedOnOff[2]=1;
gert_lauritsen 0:dcef095e5883 408 break;
gert_lauritsen 0:dcef095e5883 409 case '4':
gert_lauritsen 0:dcef095e5883 410 LedOnOff[3]=1;
gert_lauritsen 0:dcef095e5883 411 break;
gert_lauritsen 0:dcef095e5883 412 case '5':
gert_lauritsen 0:dcef095e5883 413 LedOnOff[4]=1;
gert_lauritsen 0:dcef095e5883 414 break;
gert_lauritsen 0:dcef095e5883 415 case '6':
gert_lauritsen 0:dcef095e5883 416 LedOnOff[5]=1;
gert_lauritsen 0:dcef095e5883 417 break;
gert_lauritsen 0:dcef095e5883 418 //case 'a': InAktive=1; break;
gert_lauritsen 0:dcef095e5883 419 case 'k': {
gert_lauritsen 0:dcef095e5883 420 InAktive=1;
gert_lauritsen 0:dcef095e5883 421 SetAllOn();
gert_lauritsen 0:dcef095e5883 422 printf("All On !!!!\r\n");
gert_lauritsen 0:dcef095e5883 423 }
gert_lauritsen 0:dcef095e5883 424 break;
gert_lauritsen 0:dcef095e5883 425 case 'K':
gert_lauritsen 0:dcef095e5883 426 InAktive=0;
gert_lauritsen 0:dcef095e5883 427 break;
gert_lauritsen 0:dcef095e5883 428
gert_lauritsen 0:dcef095e5883 429 case 'c':
gert_lauritsen 0:dcef095e5883 430 printf("Color R %d G %d B %d\r\n",color[0],color[1],color[2]);
gert_lauritsen 0:dcef095e5883 431 break;
gert_lauritsen 0:dcef095e5883 432 case 'r':
gert_lauritsen 0:dcef095e5883 433 mbed_reset();
gert_lauritsen 0:dcef095e5883 434 break;
gert_lauritsen 0:dcef095e5883 435 case 'b': {
gert_lauritsen 0:dcef095e5883 436 bright+=0.1;
gert_lauritsen 0:dcef095e5883 437 if (bright>1.01) bright=0;
gert_lauritsen 0:dcef095e5883 438 strip.setBrightness(bright); // set default brightness
gert_lauritsen 0:dcef095e5883 439 printf("brigth %.2f\r\n",bright);
gert_lauritsen 0:dcef095e5883 440 }
gert_lauritsen 0:dcef095e5883 441 break;
gert_lauritsen 0:dcef095e5883 442 }
gert_lauritsen 0:dcef095e5883 443 }
gert_lauritsen 0:dcef095e5883 444 }
gert_lauritsen 0:dcef095e5883 445 }