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.
YKNCT_I2C.h
00001 #ifndef INCLUDED_I2C_h_ 00002 #define INCLUDED_I2C_h_ 00003 00004 #include "mbed.h" 00005 /* マクロ定義 ----------------------------------------------------------------*/ 00006 00007 /** 00008 @brief MDデータ構造内のモーターに出力するPWM値をセットする 00009 @param __MD_DATA__: MDデータ構造 00010 @param __NUMBER__: MDデータ構造の番号 00011 @param __PWMVAL__: セットするPWMの値 00012 @retval None 00013 */ 00014 #define MD_SET_PWM(__MD_DATA__, __NUMBER__, __PWMVAL__) \ 00015 (((__MD_DATA__) + (__NUMBER__))->PWMVal = (__PWMVAL__)) 00016 00017 /** 00018 @brief MD用データ構造内のモーターの動作状態をセットする 00019 @param __MD_DATA__: MDデータ構造 00020 @param __NUMBER__: MDデータ構造の番号 00021 @param __STATUS__: 動作させたいモーターの状態 00022 @arg MD_BRAKE ブレーキ 00023 @arg MD_FORWARD 正転 00024 @arg MD_REVERSE 逆転 00025 @retval None 00026 */ 00027 #define MD_SET_DRIVE(__MD_DATA__, __NUMBER__, __STATUS__) \ 00028 (((__MD_DATA__) + (__NUMBER__))->DriveStatus = (__STATUS__)) 00029 00030 /** 00031 @brief MD用にMDデータ構造にセットされたPWM値を取得する 00032 @param __MD_DATA__: MDデータ構造 00033 @param __NUMBER__: MDデータ構造の番号 00034 @retval PWM値 00035 */ 00036 #define MD_GET_PWM(__MD_DATA__, __NUMBER__) \ 00037 (((__MD_DATA__) + (__NUMBER__))->PWMVal) 00038 00039 /** 00040 @brief MD用にMDデータ構造にセットされたモーターの動作状態を取得する 00041 @param __MD_DATA__: MDデータ構造 00042 @param __NUMBER__: MDデータ構造の番号 00043 @retval モーターの動作状態 00044 */ 00045 #define MD_GET_DRIVE(__MD_DATA__, __NUMBER__) \ 00046 (((__MD_DATA__) + (__NUMBER__))->DriveStatus) 00047 00048 00049 00050 #define GET_IN(__IN_I2C_Data__,__NUM__) (__IN_I2C_Data__+(__NUM__)) -> in_data 00051 #define GET_ADC(__ADC_I2C_Data__,__NUM__) (__ADC_I2C_Data__+(__NUM__)) ->adc_data 00052 #define GET_ENC(__ENC_I2C_Data__,__NUM__) (__ENC_I2C_Data__ + (__NUM__))->enc_data 00053 00054 00055 typedef struct { 00056 uint8_t DevAddress; /* 通信相手デバイスのアドレス */ 00057 uint8_t Number; /* PICから出力出来る2つのMDの出力先指定(0or1) */ 00058 uint8_t PWMVal; /* モーターに出力するPWM値(0~100) */ 00059 uint8_t DriveStatus; /* モーターの動作状態MD_DriveStatus_TypeDefを代入 */ 00060 char pData[2]; /* PICに送信するデータ用領域 */ 00061 } MD_I2C_Data_TypeDef; 00062 00063 typedef struct { 00064 uint8_t DevAddress; 00065 uint8_t Number; 00066 bool out_data; 00067 } OUT_I2C_Data_TypeDef; 00068 00069 typedef struct { 00070 uint8_t DevAddress; 00071 uint8_t Number; 00072 bool in_data; 00073 } IN_I2C_Data_TypeDef; 00074 00075 typedef struct { 00076 uint8_t DevAddress; 00077 uint8_t Number; 00078 uint16_t adc_data; 00079 } ADC_I2C_Data_TypeDef; 00080 00081 typedef struct { 00082 uint8_t DevAddress; 00083 int32_t enc_data; 00084 } ENC_I2C_Data_TypeDef; 00085 00086 typedef struct { 00087 uint8_t DevAddress; 00088 uint8_t Number; 00089 uint16_t pulse; 00090 } SERVO_I2C_Data_TypeDef; 00091 00092 typedef enum { 00093 MD_BRAKE = 0x00U, 00094 MD_FORWARD = 0x01U, 00095 MD_REVERSE = 0x02U 00096 } MD_DriveStatus_TypeDef; 00097 00098 class Y_I2C 00099 { 00100 private: 00101 I2C i2c; 00102 00103 public: 00104 Y_I2C(PinName sda, PinName scl); 00105 void Out_Set(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t num, uint8_t value); 00106 void Out(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t MAX); 00107 void Servo_Set(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t num, uint16_t pulse); 00108 void Servo(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t MAX); 00109 void In(IN_I2C_Data_TypeDef *IN_I2C_Data, uint8_t num); 00110 void Adc(ADC_I2C_Data_TypeDef *ADC_I2C_Data, uint8_t num); 00111 void Enc(ENC_I2C_Data_TypeDef *ENC_I2C_Data, uint8_t num); 00112 void MD_I2C(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num); 00113 void MD_I2C_Empty(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num); 00114 }; 00115 00116 #endif
Generated on Mon Jul 25 2022 18:34:01 by
1.7.2