school project

Dependencies:   MMA8451Q mbed

Committer:
xlizne01
Date:
Tue Jan 12 18:06:40 2016 +0000
Revision:
3:94bfc4de4ab1
Parent:
2:3278e4fd8fc2
Child:
4:4930b1cb20bd
funkcni adrease bunek {pole}

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xlizne01 0:ae588eb31707 1 #include "mbed.h"
xlizne01 1:b23831b703fe 2 #include "MMA8451Q.h"
xlizne01 1:b23831b703fe 3
xlizne01 1:b23831b703fe 4 #define MMA8451_I2C_ADDRESS (0x1d<<1)
xlizne01 2:3278e4fd8fc2 5 #define MOVE_ANGLE 45 // > degrees for move
xlizne01 2:3278e4fd8fc2 6
xlizne01 2:3278e4fd8fc2 7 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
xlizne01 2:3278e4fd8fc2 8
xlizne01 2:3278e4fd8fc2 9 void accelerometer(void);
xlizne01 3:94bfc4de4ab1 10 void zobrazeni(void);
xlizne01 3:94bfc4de4ab1 11 void barva(int,int);
xlizne01 2:3278e4fd8fc2 12
xlizne01 2:3278e4fd8fc2 13 int i,j,k;
xlizne01 2:3278e4fd8fc2 14 int RED, GREEN, BLUE;
xlizne01 2:3278e4fd8fc2 15 int RledA, RledB, GledA, GledB, BledA, BledB;
xlizne01 3:94bfc4de4ab1 16
xlizne01 2:3278e4fd8fc2 17 char acc_dir;
xlizne01 3:94bfc4de4ab1 18
xlizne01 3:94bfc4de4ab1 19 int pole[3][3]={{0,2,4}, {16,8,2}, {0,0,8}};
xlizne01 1:b23831b703fe 20
xlizne01 0:ae588eb31707 21 DigitalOut prvni(PTE5);
xlizne01 0:ae588eb31707 22 DigitalOut druhy(PTE4);
xlizne01 0:ae588eb31707 23 DigitalOut treti(PTE3);
xlizne01 0:ae588eb31707 24 DigitalOut ctvrty(PTE2);
xlizne01 0:ae588eb31707 25 DigitalOut paty(PTB11);
xlizne01 0:ae588eb31707 26 DigitalOut sesty(PTB10);
xlizne01 0:ae588eb31707 27 DigitalOut sedmy(PTB9);
xlizne01 0:ae588eb31707 28 DigitalOut osmy(PTB8);
xlizne01 0:ae588eb31707 29
xlizne01 0:ae588eb31707 30 DigitalOut Rled1(PTC9);
xlizne01 0:ae588eb31707 31 DigitalOut Rled2(PTC8);
xlizne01 0:ae588eb31707 32 DigitalOut Rled3(PTA5);
xlizne01 0:ae588eb31707 33 DigitalOut Rled4(PTA4);
xlizne01 0:ae588eb31707 34 DigitalOut Rled5(PTA12);
xlizne01 0:ae588eb31707 35 DigitalOut Rled6(PTD4);
xlizne01 0:ae588eb31707 36 DigitalOut Rled7(PTA1);
xlizne01 0:ae588eb31707 37 DigitalOut Rled8(PTA2);
xlizne01 0:ae588eb31707 38
xlizne01 0:ae588eb31707 39 DigitalOut Gled1(PTA13);
xlizne01 0:ae588eb31707 40 DigitalOut Gled2(PTD5);
xlizne01 0:ae588eb31707 41 DigitalOut Gled3(PTD0);
xlizne01 0:ae588eb31707 42 DigitalOut Gled4(PTD2);
xlizne01 0:ae588eb31707 43 DigitalOut Gled5(PTD3);
xlizne01 0:ae588eb31707 44 DigitalOut Gled6(PTD1);
xlizne01 0:ae588eb31707 45 DigitalOut Gled7(PTE31);
xlizne01 0:ae588eb31707 46 DigitalOut Gled8(PTB0);
xlizne01 0:ae588eb31707 47
xlizne01 0:ae588eb31707 48 DigitalOut Bled1(PTC1);
xlizne01 0:ae588eb31707 49 DigitalOut Bled2(PTE29);
xlizne01 0:ae588eb31707 50 DigitalOut Bled3(PTC2);
xlizne01 0:ae588eb31707 51 DigitalOut Bled4(PTB3);
xlizne01 0:ae588eb31707 52 DigitalOut Bled5(PTB2);
xlizne01 0:ae588eb31707 53 DigitalOut Bled6(PTE21);
xlizne01 0:ae588eb31707 54 DigitalOut Bled7(PTE20);
xlizne01 0:ae588eb31707 55 DigitalOut Bled8(PTB1);
xlizne01 0:ae588eb31707 56
xlizne01 0:ae588eb31707 57
xlizne01 0:ae588eb31707 58 int main()
xlizne01 0:ae588eb31707 59 {
xlizne01 0:ae588eb31707 60
xlizne01 3:94bfc4de4ab1 61 while(1)
xlizne01 3:94bfc4de4ab1 62 {
xlizne01 3:94bfc4de4ab1 63 accelerometer();
xlizne01 3:94bfc4de4ab1 64 zobrazeni();
xlizne01 3:94bfc4de4ab1 65
xlizne01 2:3278e4fd8fc2 66 switch(acc_dir)
xlizne01 2:3278e4fd8fc2 67 {
xlizne01 2:3278e4fd8fc2 68 case 'D':
xlizne01 2:3278e4fd8fc2 69 RED=10;
xlizne01 2:3278e4fd8fc2 70 break;
xlizne01 2:3278e4fd8fc2 71 case 'R':
xlizne01 2:3278e4fd8fc2 72 BLUE=10;
xlizne01 2:3278e4fd8fc2 73 break;
xlizne01 2:3278e4fd8fc2 74 case 'U':
xlizne01 2:3278e4fd8fc2 75 GREEN=10;
xlizne01 2:3278e4fd8fc2 76 break;
xlizne01 2:3278e4fd8fc2 77 case 'L':
xlizne01 2:3278e4fd8fc2 78 RED=10;
xlizne01 2:3278e4fd8fc2 79 BLUE=10;
xlizne01 2:3278e4fd8fc2 80 break;
xlizne01 2:3278e4fd8fc2 81 default:
xlizne01 2:3278e4fd8fc2 82 break;
xlizne01 2:3278e4fd8fc2 83 }
xlizne01 0:ae588eb31707 84 }
xlizne01 3:94bfc4de4ab1 85 }
xlizne01 3:94bfc4de4ab1 86
xlizne01 3:94bfc4de4ab1 87 void zobrazeni()
xlizne01 3:94bfc4de4ab1 88 {
xlizne01 3:94bfc4de4ab1 89 for(k=0;k<4;k++)
xlizne01 3:94bfc4de4ab1 90 {
xlizne01 3:94bfc4de4ab1 91 prvni=0;
xlizne01 3:94bfc4de4ab1 92 druhy=0;
xlizne01 3:94bfc4de4ab1 93 treti=0;
xlizne01 3:94bfc4de4ab1 94 ctvrty=0;
xlizne01 3:94bfc4de4ab1 95 paty=0;
xlizne01 3:94bfc4de4ab1 96 sesty=0;
xlizne01 3:94bfc4de4ab1 97 sedmy=0;
xlizne01 3:94bfc4de4ab1 98 osmy=0;
xlizne01 3:94bfc4de4ab1 99
xlizne01 3:94bfc4de4ab1 100 if(k==0)
xlizne01 0:ae588eb31707 101 {
xlizne01 3:94bfc4de4ab1 102 prvni=1;
xlizne01 3:94bfc4de4ab1 103 druhy=1;
xlizne01 0:ae588eb31707 104 }
xlizne01 3:94bfc4de4ab1 105
xlizne01 3:94bfc4de4ab1 106 if(k==1)
xlizne01 0:ae588eb31707 107 {
xlizne01 3:94bfc4de4ab1 108 treti=1;
xlizne01 3:94bfc4de4ab1 109 ctvrty=1;
xlizne01 0:ae588eb31707 110 }
xlizne01 3:94bfc4de4ab1 111
xlizne01 3:94bfc4de4ab1 112 if(k==2)
xlizne01 0:ae588eb31707 113 {
xlizne01 3:94bfc4de4ab1 114 paty=1;
xlizne01 3:94bfc4de4ab1 115 sesty=1;
xlizne01 0:ae588eb31707 116 }
xlizne01 3:94bfc4de4ab1 117
xlizne01 3:94bfc4de4ab1 118 if(k==3)
xlizne01 0:ae588eb31707 119 {
xlizne01 3:94bfc4de4ab1 120 sedmy=1;
xlizne01 3:94bfc4de4ab1 121 osmy=1;
xlizne01 0:ae588eb31707 122 }
xlizne01 0:ae588eb31707 123
xlizne01 3:94bfc4de4ab1 124 for(j=0;j<4;j++)
xlizne01 3:94bfc4de4ab1 125 {
xlizne01 3:94bfc4de4ab1 126
xlizne01 3:94bfc4de4ab1 127 barva(j,k);
xlizne01 3:94bfc4de4ab1 128
xlizne01 3:94bfc4de4ab1 129 for(i=11;i>0;i--)
xlizne01 3:94bfc4de4ab1 130 {
xlizne01 3:94bfc4de4ab1 131 if(RED>0)
xlizne01 3:94bfc4de4ab1 132 {
xlizne01 3:94bfc4de4ab1 133 RledA=1;
xlizne01 3:94bfc4de4ab1 134 RledB=1;
xlizne01 3:94bfc4de4ab1 135 }
xlizne01 3:94bfc4de4ab1 136 else
xlizne01 3:94bfc4de4ab1 137 {
xlizne01 3:94bfc4de4ab1 138 RledA=0;
xlizne01 3:94bfc4de4ab1 139 RledB=0;
xlizne01 3:94bfc4de4ab1 140 }
xlizne01 0:ae588eb31707 141
xlizne01 3:94bfc4de4ab1 142 if(GREEN>0)
xlizne01 3:94bfc4de4ab1 143 {
xlizne01 3:94bfc4de4ab1 144 GledA=1;
xlizne01 3:94bfc4de4ab1 145 GledB=1;
xlizne01 3:94bfc4de4ab1 146 }
xlizne01 3:94bfc4de4ab1 147 else
xlizne01 3:94bfc4de4ab1 148 {
xlizne01 3:94bfc4de4ab1 149 GledA=0;
xlizne01 3:94bfc4de4ab1 150 GledB=0;
xlizne01 3:94bfc4de4ab1 151 }
xlizne01 3:94bfc4de4ab1 152
xlizne01 3:94bfc4de4ab1 153 if(BLUE>0)
xlizne01 3:94bfc4de4ab1 154 {
xlizne01 3:94bfc4de4ab1 155 BledA=1;
xlizne01 3:94bfc4de4ab1 156 BledB=1;
xlizne01 3:94bfc4de4ab1 157 }
xlizne01 3:94bfc4de4ab1 158 else
xlizne01 3:94bfc4de4ab1 159 {
xlizne01 3:94bfc4de4ab1 160 BledA=0;
xlizne01 3:94bfc4de4ab1 161 BledB=0;
xlizne01 3:94bfc4de4ab1 162 }
xlizne01 0:ae588eb31707 163
xlizne01 3:94bfc4de4ab1 164 if(j==0)
xlizne01 3:94bfc4de4ab1 165 {
xlizne01 3:94bfc4de4ab1 166 Rled1=RledA;
xlizne01 3:94bfc4de4ab1 167 Rled2=RledB;
xlizne01 3:94bfc4de4ab1 168 Gled1=GledA;
xlizne01 3:94bfc4de4ab1 169 Gled2=GledB;
xlizne01 3:94bfc4de4ab1 170 Bled1=BledA;
xlizne01 3:94bfc4de4ab1 171 Bled2=BledB;
xlizne01 3:94bfc4de4ab1 172 }
xlizne01 3:94bfc4de4ab1 173
xlizne01 3:94bfc4de4ab1 174 if(j==1)
xlizne01 3:94bfc4de4ab1 175 {
xlizne01 3:94bfc4de4ab1 176 Rled3=RledA;
xlizne01 3:94bfc4de4ab1 177 Rled4=RledB;
xlizne01 3:94bfc4de4ab1 178 Gled3=GledA;
xlizne01 3:94bfc4de4ab1 179 Gled4=GledB;
xlizne01 3:94bfc4de4ab1 180 Bled3=BledA;
xlizne01 3:94bfc4de4ab1 181 Bled4=BledB;
xlizne01 3:94bfc4de4ab1 182 }
xlizne01 3:94bfc4de4ab1 183
xlizne01 3:94bfc4de4ab1 184 if(j==2)
xlizne01 3:94bfc4de4ab1 185 {
xlizne01 3:94bfc4de4ab1 186 Rled5=RledA;
xlizne01 3:94bfc4de4ab1 187 Rled6=RledB;
xlizne01 3:94bfc4de4ab1 188 Gled5=GledA;
xlizne01 3:94bfc4de4ab1 189 Gled6=GledB;
xlizne01 3:94bfc4de4ab1 190 Bled5=BledA;
xlizne01 3:94bfc4de4ab1 191 Bled6=BledB;
xlizne01 3:94bfc4de4ab1 192 }
xlizne01 3:94bfc4de4ab1 193
xlizne01 3:94bfc4de4ab1 194 if(j==3)
xlizne01 3:94bfc4de4ab1 195 {
xlizne01 3:94bfc4de4ab1 196 Rled7=RledA;
xlizne01 3:94bfc4de4ab1 197 Rled8=RledB;
xlizne01 3:94bfc4de4ab1 198 Gled7=GledA;
xlizne01 3:94bfc4de4ab1 199 Gled8=GledB;
xlizne01 3:94bfc4de4ab1 200 Bled7=BledA;
xlizne01 3:94bfc4de4ab1 201 Bled8=BledB;
xlizne01 3:94bfc4de4ab1 202 }
xlizne01 3:94bfc4de4ab1 203
xlizne01 3:94bfc4de4ab1 204 wait(0.00001);
xlizne01 3:94bfc4de4ab1 205 RED--;
xlizne01 3:94bfc4de4ab1 206 BLUE--;
xlizne01 3:94bfc4de4ab1 207 GREEN--;
xlizne01 3:94bfc4de4ab1 208 }
xlizne01 3:94bfc4de4ab1 209 }
xlizne01 3:94bfc4de4ab1 210 }
xlizne01 3:94bfc4de4ab1 211 }
xlizne01 3:94bfc4de4ab1 212
xlizne01 3:94bfc4de4ab1 213 void barva(int j , int k)
xlizne01 3:94bfc4de4ab1 214 {
xlizne01 3:94bfc4de4ab1 215 RED=pole[j][k];
xlizne01 3:94bfc4de4ab1 216 GREEN=pole[j][k];
xlizne01 3:94bfc4de4ab1 217 BLUE=pole[j][k];
xlizne01 0:ae588eb31707 218 }
xlizne01 3:94bfc4de4ab1 219
xlizne01 2:3278e4fd8fc2 220
xlizne01 2:3278e4fd8fc2 221 void accelerometer()
xlizne01 2:3278e4fd8fc2 222 {
xlizne01 2:3278e4fd8fc2 223
xlizne01 2:3278e4fd8fc2 224 float ax, ay, az;
xlizne01 2:3278e4fd8fc2 225 float xAngle, yAngle;
xlizne01 2:3278e4fd8fc2 226
xlizne01 2:3278e4fd8fc2 227 ax = acc.getAccX();
xlizne01 2:3278e4fd8fc2 228 ay = acc.getAccY();
xlizne01 2:3278e4fd8fc2 229 az = acc.getAccZ();
xlizne01 2:3278e4fd8fc2 230
xlizne01 2:3278e4fd8fc2 231 xAngle = atan( ax / (sqrt((ay)*(ay) + (az)*(az)))) * 60;
xlizne01 2:3278e4fd8fc2 232 yAngle = atan( ay / (sqrt((ax)*(ax) + (az)*(az)))) * 60;
xlizne01 2:3278e4fd8fc2 233
xlizne01 2:3278e4fd8fc2 234
xlizne01 2:3278e4fd8fc2 235 if(abs(xAngle) >= abs(yAngle))
xlizne01 2:3278e4fd8fc2 236 {
xlizne01 2:3278e4fd8fc2 237 if(xAngle >= MOVE_ANGLE)
xlizne01 2:3278e4fd8fc2 238 {
xlizne01 2:3278e4fd8fc2 239 acc_dir = 'U'; // +X
xlizne01 2:3278e4fd8fc2 240 }
xlizne01 2:3278e4fd8fc2 241
xlizne01 2:3278e4fd8fc2 242 if(xAngle <= -MOVE_ANGLE)
xlizne01 2:3278e4fd8fc2 243 {
xlizne01 2:3278e4fd8fc2 244 acc_dir = 'D'; // -X
xlizne01 2:3278e4fd8fc2 245 }
xlizne01 2:3278e4fd8fc2 246 }
xlizne01 2:3278e4fd8fc2 247
xlizne01 2:3278e4fd8fc2 248 else
xlizne01 2:3278e4fd8fc2 249 {
xlizne01 2:3278e4fd8fc2 250 if(yAngle >= MOVE_ANGLE)
xlizne01 2:3278e4fd8fc2 251 {
xlizne01 2:3278e4fd8fc2 252 acc_dir = 'L'; // +Y
xlizne01 2:3278e4fd8fc2 253 }
xlizne01 2:3278e4fd8fc2 254
xlizne01 2:3278e4fd8fc2 255 if(yAngle <= -MOVE_ANGLE)
xlizne01 2:3278e4fd8fc2 256 {
xlizne01 2:3278e4fd8fc2 257 acc_dir = 'R'; // -Y
xlizne01 2:3278e4fd8fc2 258 }
xlizne01 2:3278e4fd8fc2 259 }
xlizne01 2:3278e4fd8fc2 260
xlizne01 3:94bfc4de4ab1 261 }