a

Dependencies:   mbed

Committer:
Tom0108
Date:
Sun Sep 15 11:43:13 2019 +0000
Revision:
13:48c4a4c95e77
Parent:
12:7e33e400a48d
Child:
14:e6d16095ffa8
Move arm manually

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tom0108 0:761a63c6d020 1 /**
Tom0108 0:761a63c6d020 2 ******************************************************************************
Tom0108 0:761a63c6d020 3 * @file main.h
Tom0108 0:761a63c6d020 4 * @author You
Tom0108 0:761a63c6d020 5 * @version V?.?.?
Tom0108 0:761a63c6d020 6 * @date Today
Tom0108 0:761a63c6d020 7 * @brief メインのヘッダファイル
Tom0108 0:761a63c6d020 8 ******************************************************************************
Tom0108 0:761a63c6d020 9 */
Tom0108 0:761a63c6d020 10
Tom0108 0:761a63c6d020 11 /* ヘッダ再呼び出し防止のための定義 ------------------------------------------*/
Tom0108 0:761a63c6d020 12
Tom0108 0:761a63c6d020 13 #ifndef _MAIN_H_
Tom0108 0:761a63c6d020 14 #define _MAIN_H_
Tom0108 0:761a63c6d020 15
Tom0108 0:761a63c6d020 16 /* ファイル追加 --------------------------------------------------------------*/
Tom0108 0:761a63c6d020 17 #include "YKNCT.h"
Tom0108 0:761a63c6d020 18 #include "mbed.h"
Tom0108 6:040d001acb12 19 #include "YKNCT_I2C.h"
Tom0108 6:040d001acb12 20 #include <math.h>
Tom0108 10:7c73e1577742 21 #include "BNO055.h"
Tom0108 0:761a63c6d020 22
Tom0108 0:761a63c6d020 23 /* 定数定義 ------------------------------------------------------------------*/
Tom0108 6:040d001acb12 24 #define CIRCLE sbdbt.CIRCLE
Tom0108 6:040d001acb12 25 #define SQUARE sbdbt.SQUARE
Tom0108 6:040d001acb12 26 #define CROSS sbdbt.CROSS
Tom0108 6:040d001acb12 27 #define TRIANGLE sbdbt.TRIANGLE
Tom0108 6:040d001acb12 28 #define LEFTkey sbdbt.LEFTkey
Tom0108 6:040d001acb12 29 #define RIGHTkey sbdbt.RIGHTkey
Tom0108 6:040d001acb12 30 #define UPkey sbdbt.UPkey
Tom0108 6:040d001acb12 31 #define DOWNkey sbdbt.DOWNkey
Tom0108 0:761a63c6d020 32
Tom0108 10:7c73e1577742 33 #define M_PI 3.14159265359
Tom0108 10:7c73e1577742 34
Tom0108 0:761a63c6d020 35 /* マクロ定義 ----------------------------------------------------------------*/
Tom0108 8:b79d21c8178b 36 //#define PALETTE(color)\
Tom0108 8:b79d21c8178b 37 //for(int s=0; s<3; s++) LED[s]=color&1<<s
Tom0108 6:040d001acb12 38 #define PALETTE(color)\
Tom0108 12:7e33e400a48d 39 for(int s=0; s<3; s++)\
Tom0108 11:c1a22e2e3534 40 i2c.Out_Set(Out_Data, s+6, color&1<<s);\
Tom0108 13:48c4a4c95e77 41 i2c.Out(Out_Data, 9);
Tom0108 0:761a63c6d020 42
Tom0108 0:761a63c6d020 43 /* 型定義 --------------------------------------------------------------------*/
Tom0108 12:7e33e400a48d 44 typedef enum {
Tom0108 12:7e33e400a48d 45 test_motor,
Tom0108 12:7e33e400a48d 46 test_motor2,
Tom0108 12:7e33e400a48d 47 test_motor3,
Tom0108 12:7e33e400a48d 48 test_motor4,
Tom0108 12:7e33e400a48d 49 test_motor5,
Tom0108 12:7e33e400a48d 50 test_motor6,
Tom0108 12:7e33e400a48d 51 test_motor7,
Tom0108 12:7e33e400a48d 52 test_motor8,
Tom0108 12:7e33e400a48d 53 Motor_MAX
Tom0108 0:761a63c6d020 54 } _Motor_;
Tom0108 0:761a63c6d020 55
Tom0108 0:761a63c6d020 56
Tom0108 12:7e33e400a48d 57 typedef enum {
Tom0108 0:761a63c6d020 58 limit,
Tom0108 0:761a63c6d020 59 limit1,
Tom0108 0:761a63c6d020 60 limit2,
Tom0108 0:761a63c6d020 61 limit3,
Tom0108 0:761a63c6d020 62 limit4,
Tom0108 0:761a63c6d020 63 limit5,
Tom0108 0:761a63c6d020 64 limit6,
Tom0108 0:761a63c6d020 65 limit7,
Tom0108 0:761a63c6d020 66 IN_MAX
Tom0108 12:7e33e400a48d 67 } _limit_;
Tom0108 12:7e33e400a48d 68 typedef enum {
Tom0108 0:761a63c6d020 69 out1,
Tom0108 0:761a63c6d020 70 out2,
Tom0108 0:761a63c6d020 71 out3,
Tom0108 0:761a63c6d020 72 out4,
Tom0108 0:761a63c6d020 73 ExTowel,
Tom0108 0:761a63c6d020 74 OUT_MAX
Tom0108 12:7e33e400a48d 75 } _OUT_;
Tom0108 6:040d001acb12 76
Tom0108 6:040d001acb12 77 typedef enum {
Tom0108 6:040d001acb12 78 BLACK,
Tom0108 12:7e33e400a48d 79 BLUE,
Tom0108 8:b79d21c8178b 80 RED,
Tom0108 6:040d001acb12 81 MAGENTA,
Tom0108 12:7e33e400a48d 82 GREEN,
Tom0108 12:7e33e400a48d 83 CYAN,
Tom0108 12:7e33e400a48d 84 YELLOW,
Tom0108 12:7e33e400a48d 85 WHITE,
Tom0108 6:040d001acb12 86
Tom0108 6:040d001acb12 87 COLOR_MAX
Tom0108 6:040d001acb12 88
Tom0108 6:040d001acb12 89 } _COLOR_;
Tom0108 6:040d001acb12 90
Tom0108 6:040d001acb12 91 MD_I2C_Data_TypeDef MD_Data[Motor_MAX] = {
Tom0108 6:040d001acb12 92 { 8, 0, 0, 0, {0}}, //足回り
Tom0108 6:040d001acb12 93 { 9, 1, 0, 0, {0}},
Tom0108 6:040d001acb12 94 {10, 0, 0, 0, {0}},
Tom0108 6:040d001acb12 95 {11, 1, 0, 0, {0}},
Tom0108 6:040d001acb12 96 {12, 0, 0, 0, {0}}, // 洗濯物回収
Tom0108 6:040d001acb12 97 {13, 1, 0, 0, {0}}, // 上下機構
Tom0108 6:040d001acb12 98 {14, 0, 0, 0, {0}}, // 洗濯物排出
Tom0108 6:040d001acb12 99 {15, 1, 0, 0, {0}} // 左右移動
Tom0108 6:040d001acb12 100 };
Tom0108 6:040d001acb12 101
Tom0108 6:040d001acb12 102 IN_I2C_Data_TypeDef In_Data[] = {
Tom0108 6:040d001acb12 103 {1,0,0}, // 洗濯物排出(初期位置)
Tom0108 6:040d001acb12 104 {1,1,0}, // 洗濯物排出(停止)
Tom0108 6:040d001acb12 105 {1,2,0}, // 腕(最大 タオル)
Tom0108 6:040d001acb12 106 {1,3,0}, // 腕(初期位置)
Tom0108 6:040d001acb12 107 {3,0,0}, // 上下機構(上)
Tom0108 6:040d001acb12 108 {3,1,0}, // (下)
Tom0108 6:040d001acb12 109 {3,2,0}, // 腕(シーツ兼シャツ)
Tom0108 6:040d001acb12 110 };
Tom0108 6:040d001acb12 111
Tom0108 6:040d001acb12 112 OUT_I2C_Data_TypeDef Out_Data[] = {
Tom0108 6:040d001acb12 113 {0,0,0}, // 腕の上下
Tom0108 6:040d001acb12 114 {0,1,0}, // 爪
Tom0108 6:040d001acb12 115 {0,2,0}, // タオルの先
Tom0108 6:040d001acb12 116 {0,3,0}, // タオル展開
Tom0108 6:040d001acb12 117 {1,0,0}, // タオルの中央
Tom0108 11:c1a22e2e3534 118 {1,1,0}, // 全体
Tom0108 12:7e33e400a48d 119 {41,0,0}, // g
Tom0108 12:7e33e400a48d 120 {41,1,0}, // r
Tom0108 12:7e33e400a48d 121 {41,2,0}, // b;
Tom0108 6:040d001acb12 122 };
Tom0108 12:7e33e400a48d 123 /* 変数宣言 ------------------------------------------------------------------*/
Tom0108 0:761a63c6d020 124
Tom0108 12:7e33e400a48d 125 /* 関数宣言 ------------------------------------------------------------------*/
Tom0108 6:040d001acb12 126 //メカナム基本動作
Tom0108 12:7e33e400a48d 127 void mecanum_Move(int lx, int ly, int rx);
Tom0108 0:761a63c6d020 128
Tom0108 6:040d001acb12 129 //角度補正
Tom0108 6:040d001acb12 130 //n_angle: 現在の角度
Tom0108 6:040d001acb12 131 //t_angle: 目標の角度
Tom0108 12:7e33e400a48d 132 void AngleCorrection(double n_angle, double t_angle);
Tom0108 0:761a63c6d020 133
Tom0108 12:7e33e400a48d 134 /*クラス宣言-------------------------------------------------------------------*/
Tom0108 12:7e33e400a48d 135 Y_I2C i2c(PB_9, PB_8); // I2C
Tom0108 12:7e33e400a48d 136 SBDBT sbdbt(PA_0, PA_1, 9600); // SDBDT
Tom0108 12:7e33e400a48d 137 BNO055 bno(PC_9, PA_8);
Tom0108 12:7e33e400a48d 138 DigitalOut LED[]= {PA_10,PB_4,PB_5};
Tom0108 12:7e33e400a48d 139 Serial pc(USBTX, USBRX, 115200);
Tom0108 0:761a63c6d020 140
Tom0108 6:040d001acb12 141 //半自動の時に使う
Tom0108 12:7e33e400a48d 142 Timer tim;
Tom0108 0:761a63c6d020 143
Tom0108 6:040d001acb12 144 //角度補正の時に使う
Tom0108 12:7e33e400a48d 145 Timer drift_tim;
Tom0108 12:7e33e400a48d 146
Tom0108 12:7e33e400a48d 147 //上下移動の保持に使う
Tom0108 12:7e33e400a48d 148 Timer keep_tim[2];
Tom0108 0:761a63c6d020 149
Tom0108 0:761a63c6d020 150 #endif /* _MAIN_H_ */
Tom0108 0:761a63c6d020 151
Tom0108 12:7e33e400a48d 152 /******************************** END OF FILE *********************************/