Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: RotationMat_ SDFileSystem math mbed trigonometric_fanc
Revision 1:64ca0218709d, committed 2016-02-03
- Comitter:
- shuhei2306
- Date:
- Wed Feb 03 11:07:45 2016 +0000
- Parent:
- 0:28d0b65a60fe
- Child:
- 2:b09caaa3de96
- Commit message:
- test
Changed in this revision
| Adafruit_DotStar.h | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Adafruit_DotStar.h Mon Feb 01 13:53:13 2016 +0000
+++ b/Adafruit_DotStar.h Wed Feb 03 11:07:45 2016 +0000
@@ -87,8 +87,8 @@
// Setup the spi for 8 bit data,
// second edge capture, with a 1MHz clock rate
spi.format(8, 0); // mode0 POL:positive PHA:ラッチ先行
- // spi.frequency(19000000);
- spi.frequency(1000000);
+ spi.frequency(19000000);
+ // spi.frequency(1000000);
}
void Adafruit_DotStar::show(void)
--- a/main.cpp Mon Feb 01 13:53:13 2016 +0000
+++ b/main.cpp Wed Feb 03 11:07:45 2016 +0000
@@ -163,7 +163,8 @@
RotationMat rMat;
-Vector3D position_vec;
+Vector3D position_vec(0,0,0);
+Vector3D target_vec(0,1,0);
Vector3D rAxis(1,0,0);
const Vector3D xAxis(1,0,0);
const Vector3D yAxis(0,1,0);
@@ -179,9 +180,11 @@
short longtitude;
short latitude;
+float angles;
+
#define NUMPIXELS 178
#define NUM_LINE 9
-#define NUM_TAPE 1
+#define NUM_TAPE 6
Adafruit_DotStar strip(NUMPIXELS, DOTSTAR_RGB);
DigitalOut decoder_in_a(p24);
@@ -209,234 +212,31 @@
void updateRotation()
{
rMat.calMat(angular_velocity, rAxis.x, rAxis.y, rAxis.z);
- //バレーボール6枚
- for(int i_tape =0; i_tape < NUM_TAPE ; i_tape++)
- {
- //バレーボール1枚あたりのLEDの本数
- for(int i_line=0; i_line< NUM_LINE; i_line++)
- {
- switch(i_line)
- {
- case 0:
- for(int i_pixel =0; i_pixel < LED_0_8_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 1:
- for(int i_pixel =0; i_pixel < LED_1_7_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 2:
- for(int i_pixel =0; i_pixel < LED_2_6_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 3:
- for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 4:
- for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 5:
- for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 6:
- for(int i_pixel =0; i_pixel < LED_2_6_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 7:
- for(int i_pixel =0; i_pixel < LED_1_7_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- case 8:
- for(int i_pixel =0; i_pixel < LED_0_8_NUM ; i_pixel++)
- {
- x_ = v_leds[i_tape][i_line][i_pixel][0];//x
- y_ = v_leds[i_tape][i_line][i_pixel][1];//y
- z_ = v_leds[i_tape][i_line][i_pixel][2];//z
- v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
- v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
- v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
- }
- break;
- }
- }
- }
-}
-
-
-void setPixelcolor(int i_lednum)
-{
- // pc.printf("i_lednum:%d \n", i_lednum);
- if(i_lednum >= 176 ) //最後の白色消す用
- {
- strip.setPixelColor(i_lednum,
- 0, //r
- 0, //g
- 0);//b
- }
- else if(longtitude>=0&&longtitude<45)
- {
- strip.setPixelColor(i_lednum,
- pixels0_45[longtitude][latitude][0], //r
- pixels0_45[longtitude][latitude][1], //g
- pixels0_45[longtitude][latitude][2]);//b
- /*
- pc.printf("pixels0_45[0]:%d \n", pixels0_45[longtitude][latitude][0]);
- pc.printf("pixels0_45[1]:%d \n", pixels0_45[longtitude][latitude][1]);
- pc.printf("pixels0_45[2]:%d \n", pixels0_45[longtitude][latitude][2]);
- */
-
- }
- else if(longtitude>=45&&longtitude<90)
- {
- strip.setPixelColor(i_lednum,
- (uint8_t)pixels45_90[longtitude-45][latitude][0], //r
- (uint8_t)pixels45_90[longtitude-45][latitude][1], //g
- (uint8_t)pixels45_90[longtitude-45][latitude][2]);//b
- /*
- pc.printf("pixels45_90[0]:%d \n", pixels45_90[longtitude-45][latitude][0]);
- pc.printf("pixels45_90[1]:%d \n", pixels45_90[longtitude-45][latitude][1]);
- pc.printf("pixels45_90[2]:%d \n", pixels45_90[longtitude-45][latitude][2]);
- */
- }
- else if(longtitude>=90&&longtitude<135)
- {
- strip.setPixelColor(i_lednum,
- pixels90_135[longtitude-90][latitude][0], //r
- pixels90_135[longtitude-90][latitude][1], //g
- pixels90_135[longtitude-90][latitude][2]);//b
- /*
- pc.printf("pixels90_135[0]:%d \n", pixels90_135[longtitude-90][latitude][0]);
- pc.printf("pixels90_135[1]:%d \n", pixels90_135[longtitude-90][latitude][1]);
- pc.printf("pixels90_135[2]:%d \n", pixels90_135[longtitude-90][latitude][2]);
- */
- }
- else if(longtitude>=135&&longtitude<180)
- {
- strip.setPixelColor(i_lednum,
- pixels135_180[longtitude-135][latitude][0], //r
- pixels135_180[longtitude-135][latitude][1], //g
- pixels135_180[longtitude-135][latitude][2]);//b
- /*
- pc.printf("pixels135_180[0]:%d \n", pixels135_180[longtitude-135][latitude][0]);
- pc.printf("pixels135_180[1]:%d \n", pixels135_180[longtitude-135][latitude][1]);
- pc.printf("pixels135_180[2]:%d \n", pixels135_180[longtitude-135][latitude][2]);
- */
- }
- else if(longtitude>=180&&longtitude<225)
- {
- strip.setPixelColor(i_lednum,
- pixels180_225[longtitude-135][latitude][0], //r
- pixels180_225[longtitude-135][latitude][1], //g
- pixels180_225[longtitude-135][latitude][2]);//b
- }
- else if(longtitude>=225&&longtitude<270)
- {
- strip.setPixelColor(i_lednum,
- pixels225_270[longtitude-225][latitude][0], //r
- pixels225_270[longtitude-225][latitude][1], //g
- pixels225_270[longtitude-225][latitude][2]);//b
- }
- else if(longtitude>=270&&longtitude<315)
- {
- strip.setPixelColor(i_lednum,
- pixels270_315[longtitude-270][latitude][0], //r
- pixels270_315[longtitude-270][latitude][1], //g
- pixels270_315[longtitude-270][latitude][2]);//b
- }
- else if(longtitude>=315&&longtitude<=360)
- {
- strip.setPixelColor(i_lednum,
- pixels315_361[longtitude-315][latitude][0], //r
- pixels315_361[longtitude-315][latitude][1], //g
- pixels315_361[longtitude-315][latitude][2]);//b
- }
+ x_ = target_vec.x;//x
+ y_ = target_vec.y;//y
+ z_ = target_vec.z;//z
+ target_vec.x = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ target_vec.y = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ target_vec.z = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
}
void set_strip_color(int i_tape, int i_line, int i_pixel, int i_lednum)
{
- //calc longtitude
position_vec.x = v_leds[i_tape][i_line][i_pixel][0];
position_vec.y = v_leds[i_tape][i_line][i_pixel][1];
position_vec.z = v_leds[i_tape][i_line][i_pixel][2];
- if(position_vec.x > 0)
+ angles = angle(target_vec , position_vec);
+
+ if(angles<40)
{
- longtitude = (short)floor( angle(zAxis, position_vec) );
+ strip.setPixelColor(i_lednum,100,0,0);
}
else
{
- longtitude = (short)floor( 360.0f - angle(zAxis, position_vec));
+ strip.setPixelColor(i_lednum,0,0,0);
}
-
- //calc latitude
- position_vec.x = v_leds[i_tape][i_line][i_pixel][0];
- position_vec.y = v_leds[i_tape][i_line][i_pixel][1];
- position_vec.z = v_leds[i_tape][i_line][i_pixel][2];
-
- latitude = (short)floor( angle(yAxis, position_vec) );
-
-
-
- setPixelcolor(i_lednum);
+
}
void init()
@@ -599,4 +399,116 @@
pc.printf("sdData[2]: %d\n", (int)(sdData[2]));
}
}
- */
\ No newline at end of file
+ */
+
+ /*
+ //バレーボール6枚
+ for(int i_tape =0; i_tape < NUM_TAPE ; i_tape++)
+ {
+ //バレーボール1枚あたりのLEDの本数
+ for(int i_line=0; i_line< NUM_LINE; i_line++)
+ {
+ switch(i_line)
+ {
+ case 0:
+ for(int i_pixel =0; i_pixel < LED_0_8_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 1:
+ for(int i_pixel =0; i_pixel < LED_1_7_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 2:
+ for(int i_pixel =0; i_pixel < LED_2_6_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 3:
+ for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 4:
+ for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 5:
+ for(int i_pixel =0; i_pixel < LED_3_4_5_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 6:
+ for(int i_pixel =0; i_pixel < LED_2_6_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 7:
+ for(int i_pixel =0; i_pixel < LED_1_7_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ case 8:
+ for(int i_pixel =0; i_pixel < LED_0_8_NUM ; i_pixel++)
+ {
+ x_ = v_leds[i_tape][i_line][i_pixel][0];//x
+ y_ = v_leds[i_tape][i_line][i_pixel][1];//y
+ z_ = v_leds[i_tape][i_line][i_pixel][2];//z
+ v_leds[i_tape][i_line][i_pixel][0] = rMat.r1*x_+rMat.r2*y_+rMat.r3*z_;
+ v_leds[i_tape][i_line][i_pixel][1] = rMat.r4*x_+rMat.r5*y_+rMat.r6*z_;
+ v_leds[i_tape][i_line][i_pixel][2] = rMat.r7*x_+rMat.r8*y_+rMat.r9*z_;
+ }
+ break;
+ }
+ }
+ } */
\ No newline at end of file