Serial_LED(f303k8)

Dependencies:   mbed PololuLedStrip

Committer:
hamaken1018
Date:
Mon Jan 25 07:18:17 2021 +0000
Revision:
0:e4b3c79f95c0
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hamaken1018 0:e4b3c79f95c0 1 #include "mbed.h"
hamaken1018 0:e4b3c79f95c0 2 #include "PololuLedStrip.h"
hamaken1018 0:e4b3c79f95c0 3
hamaken1018 0:e4b3c79f95c0 4 PololuLedStrip ledStrip1(PB_1);
hamaken1018 0:e4b3c79f95c0 5 PololuLedStrip ledStrip2(PB_0);
hamaken1018 0:e4b3c79f95c0 6 PololuLedStrip ledStrip3(PA_11);
hamaken1018 0:e4b3c79f95c0 7 PololuLedStrip ledStrip4(PA_7);
hamaken1018 0:e4b3c79f95c0 8
hamaken1018 0:e4b3c79f95c0 9 #define LED_COUNT 37 //LEDの数
hamaken1018 0:e4b3c79f95c0 10 rgb_color colors[LED_COUNT];
hamaken1018 0:e4b3c79f95c0 11 rgb_color colors2[LED_COUNT];
hamaken1018 0:e4b3c79f95c0 12 rgb_color colors3[LED_COUNT];
hamaken1018 0:e4b3c79f95c0 13 rgb_color colors4[LED_COUNT];
hamaken1018 0:e4b3c79f95c0 14
hamaken1018 0:e4b3c79f95c0 15 Serial Xbee(PA_9,PA_10,19200); //TX,RX,クロックレート
hamaken1018 0:e4b3c79f95c0 16 Serial pc(SERIAL_TX,SERIAL_RX); //pc(USBTX,USBRX)
hamaken1018 0:e4b3c79f95c0 17 unsigned char RX_data;
hamaken1018 0:e4b3c79f95c0 18
hamaken1018 0:e4b3c79f95c0 19 DigitalOut LED(PA_3);
hamaken1018 0:e4b3c79f95c0 20 AnalogIn FT(PA_4);
hamaken1018 0:e4b3c79f95c0 21
hamaken1018 0:e4b3c79f95c0 22 Ticker flipper; //タイマー
hamaken1018 0:e4b3c79f95c0 23
hamaken1018 0:e4b3c79f95c0 24 //RS-555 rpm == 3610
hamaken1018 0:e4b3c79f95c0 25 //rad/s == 378.0383159819718
hamaken1018 0:e4b3c79f95c0 26 //ギア比は1:2だから上の2倍のはず
hamaken1018 0:e4b3c79f95c0 27
hamaken1018 0:e4b3c79f95c0 28 //フォトリフレクタ
hamaken1018 0:e4b3c79f95c0 29 double fot;
hamaken1018 0:e4b3c79f95c0 30 int h = 0;
hamaken1018 0:e4b3c79f95c0 31 int b = 0;
hamaken1018 0:e4b3c79f95c0 32 //↓LED色
hamaken1018 0:e4b3c79f95c0 33 int R = 1;
hamaken1018 0:e4b3c79f95c0 34 int G = 2;
hamaken1018 0:e4b3c79f95c0 35 int B = 3;
hamaken1018 0:e4b3c79f95c0 36 int Y = 4;
hamaken1018 0:e4b3c79f95c0 37 int L = 5;
hamaken1018 0:e4b3c79f95c0 38 int P = 6;
hamaken1018 0:e4b3c79f95c0 39 int W = 7;
hamaken1018 0:e4b3c79f95c0 40 int O = 8;
hamaken1018 0:e4b3c79f95c0 41
hamaken1018 0:e4b3c79f95c0 42 int LED_CON = 1;
hamaken1018 0:e4b3c79f95c0 43 int con = 0;
hamaken1018 0:e4b3c79f95c0 44 int FT_con = 0;
hamaken1018 0:e4b3c79f95c0 45
hamaken1018 0:e4b3c79f95c0 46 void Xbee_RX(){
hamaken1018 0:e4b3c79f95c0 47 RX_data = Xbee.getc(); //Xbeeから送られてきた文字Zに代入
hamaken1018 0:e4b3c79f95c0 48 pc.putc(RX_data); //値をpcに表示
hamaken1018 0:e4b3c79f95c0 49 }
hamaken1018 0:e4b3c79f95c0 50
hamaken1018 0:e4b3c79f95c0 51 rgb_color COLOR(float H,int n){
hamaken1018 0:e4b3c79f95c0 52
hamaken1018 0:e4b3c79f95c0 53 float r = 0, g = 0, b = 0;
hamaken1018 0:e4b3c79f95c0 54 H = 100; //光の強さ
hamaken1018 0:e4b3c79f95c0 55 switch (n){
hamaken1018 0:e4b3c79f95c0 56 case 1:r = H; g = 0; b = 0; break; //赤
hamaken1018 0:e4b3c79f95c0 57 case 2:r = 0; g = H; b = 0; break; //緑
hamaken1018 0:e4b3c79f95c0 58 case 3:r = 0; g = 0; b = H; break; //青
hamaken1018 0:e4b3c79f95c0 59 case 4:r = H; g = H; b = 0; break; //黄色
hamaken1018 0:e4b3c79f95c0 60 case 5:r = 0; g = H; b = H; break; //水色
hamaken1018 0:e4b3c79f95c0 61 case 6:r = H; g = 0; b = H; break; //紫
hamaken1018 0:e4b3c79f95c0 62 case 7:r = H; g = H; b = H; break; //白
hamaken1018 0:e4b3c79f95c0 63 case 8:r = H; g = H * 0.5; b = 0; break; //オレンジ
hamaken1018 0:e4b3c79f95c0 64 }
hamaken1018 0:e4b3c79f95c0 65 return (rgb_color){r,g,b};
hamaken1018 0:e4b3c79f95c0 66 }
hamaken1018 0:e4b3c79f95c0 67
hamaken1018 0:e4b3c79f95c0 68 //タイマー処理
hamaken1018 0:e4b3c79f95c0 69 void LED_not(){
hamaken1018 0:e4b3c79f95c0 70 for(h = 0; h < LED_COUNT; h++){
hamaken1018 0:e4b3c79f95c0 71 uint8_t phase =(h << 1);
hamaken1018 0:e4b3c79f95c0 72 colors[h] = COLOR(phase, 0);
hamaken1018 0:e4b3c79f95c0 73 ledStrip1.write(colors, LED_COUNT);
hamaken1018 0:e4b3c79f95c0 74 }
hamaken1018 0:e4b3c79f95c0 75 }
hamaken1018 0:e4b3c79f95c0 76
hamaken1018 0:e4b3c79f95c0 77
hamaken1018 0:e4b3c79f95c0 78
hamaken1018 0:e4b3c79f95c0 79
hamaken1018 0:e4b3c79f95c0 80 int main(){
hamaken1018 0:e4b3c79f95c0 81 Xbee.attach(&Xbee_RX, Serial::RxIrq); //割り込み
hamaken1018 0:e4b3c79f95c0 82 pc.baud(115200); //pcクロックレート
hamaken1018 0:e4b3c79f95c0 83
hamaken1018 0:e4b3c79f95c0 84 while(1){
hamaken1018 0:e4b3c79f95c0 85 // if(RX_data == 'A'){
hamaken1018 0:e4b3c79f95c0 86
hamaken1018 0:e4b3c79f95c0 87 if(FT < 0.8){
hamaken1018 0:e4b3c79f95c0 88 FT_con++;
hamaken1018 0:e4b3c79f95c0 89 //Xbee.printf("%f",FT);
hamaken1018 0:e4b3c79f95c0 90 while(FT < 0.8){
hamaken1018 0:e4b3c79f95c0 91 //Xbee.printf("%f",FT);
hamaken1018 0:e4b3c79f95c0 92 }
hamaken1018 0:e4b3c79f95c0 93 }
hamaken1018 0:e4b3c79f95c0 94 // if(RX_data == 'A' && con == 0){
hamaken1018 0:e4b3c79f95c0 95 // con = 1;
hamaken1018 0:e4b3c79f95c0 96 // }
hamaken1018 0:e4b3c79f95c0 97 if(con == 0){
hamaken1018 0:e4b3c79f95c0 98 if(10 <= FT_con && FT_con < 20){
hamaken1018 0:e4b3c79f95c0 99 for(h = 0; h < LED_COUNT; h++){
hamaken1018 0:e4b3c79f95c0 100 uint8_t phase =(h << 1);
hamaken1018 0:e4b3c79f95c0 101 colors[1] = COLOR(phase, B);
hamaken1018 0:e4b3c79f95c0 102 ledStrip1.write(colors, LED_COUNT);
hamaken1018 0:e4b3c79f95c0 103
hamaken1018 0:e4b3c79f95c0 104 }
hamaken1018 0:e4b3c79f95c0 105 LED_not();
hamaken1018 0:e4b3c79f95c0 106 }
hamaken1018 0:e4b3c79f95c0 107 }
hamaken1018 0:e4b3c79f95c0 108
hamaken1018 0:e4b3c79f95c0 109
hamaken1018 0:e4b3c79f95c0 110
hamaken1018 0:e4b3c79f95c0 111 }
hamaken1018 0:e4b3c79f95c0 112 }