fs

Dependents:   ARAI45th 3servotest 1stcomp 3rdcompfixstart ... more

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
+
+/***************************************************************/