fs
Dependents: ARAI45th 3servotest 1stcomp 3rdcompfixstart ... more
Diff: locate.h
- Revision:
- 0:265d8ad19d2a
- Child:
- 1:3513a2fbd81f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locate.h Fri Sep 02 12:40:36 2016 +0000 @@ -0,0 +1,65 @@ +#ifndef Locate_H +#define Locate_H + +#include <math.h> +#include "Encoder.h" + +/****************定数定義***************************/ + +#define OUTERRING_D 140 //外輪間距離(mm) +#define INNERRING_D 136 //内輪間距離(mm) +#define PI 3.14159 //π +#define RESOLUSION 400 //P/R(分解能) +#define DIAMETER 31.8 //タイヤの直径(mm) +#define ROUND_HOSEI 1.05 //角度のズレを補正 + +// エンコーダの1ステップあたりの距離(mm) +#define LOCATE_STEP (DIAMETER*PI / RESOLUSION) +//タイヤ間距離(mm) +#define TIRE_DISTANCE ((OUTERRING_D + INNERRING_D) / 2) +//機体が1回転するために必要なステップ数の”逆数” +#define ROUND ((PI * DIAMETER / (RESOLUSION * TIRE_DISTANCE)) * ROUND_HOSEI) + +/****************************************************************/ + + + + +/********以下関数宣言*****************/ + +//最初に一回だけ行う +void setup(); + +//位置情報を更新する。r,lはエンコーダから +void update (); + +//xをmm換算して整数値として返す +short coordinateX(); + +//yをmm換算して整数値として返す +short coordinateY(); + +//thetaを返す +float coordinateTheta(); + +//encorderの値を回転数に変換。update内部で使われる +int convert_enc_count(int16_t pulse, int8_t direction); + +//x, y, thetaを0にする +void erase(); + +/**********************************/ +#endif + + + + + +/**************Encoderライブラリで使う定義**************************/ + +#ifdef TARGET_STM32F3 +#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) +#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) +#endif + +/***************************************************************/