masato yasuhara / Mbed 2 deprecated sekkeiseisaku_week3

Dependencies:   mbed QEI

main.cpp

Committer:
uchikimi
Date:
2018-09-26
Revision:
0:9d2545148cbf
Child:
1:bab46c2f0263

File content as of revision 0:9d2545148cbf:

//-------------------------------------------------------------------
//QEIライブラリ使用
//-------------------------------------------------------------------

//mbed用ライブラリ
#include "mbed.h"
//エンコーダ用ライブラリ
#include "QEI.h"

//プロトタイプ宣言
void putPWM(float);

//作業用変数
PwmOut Servo1(D7);          //Pwm出力Servo1の初期化
PwmOut Servo2(D6);          //Pwm出力Servo2の初期化

//変数宣言
//1回転でのパルス数
#define ROTATE_PER_REVOLUTIONS  360

//エンコーダのチャンネルAとBの初期状態を決める
QEI wheel(P1_0, P1_1, NC, ROTATE_PER_REVOLUTIONS, QEI::X4_ENCODING);

//メイン関数
int main()
{
    //作業用変数
    long delt_ms = 1;
    
    //---------------------------------------------------------
    /*デューティー比を変更する場合は以下の数値を変える(-100%≦DUTY≦100%)*/
    float DUTY=50;
    
    //---------------------------------------------------------
    
    float PWM=DUTY/100;
    wait_ms(delt_ms);

    while(1) {
        
        //エンコーダ値格納用変数
        static double y;
        //エンコーダの値(生)の取得
        y=(double)wheel.getPulses();
        //エンコーダの値を角度に変換
        y=y*360/(ROTATE_PER_REVOLUTIONS);
        //エンコーダ値(角度)の表示(TeraTerm)
        //printf("(%-10f)¥0",y);
        printf("%f\r\n",y);

        putPWM(PWM);
        wait(delt_ms);

    }

}


/*モータの回転方向と速度を与える putPWM関数*/
void putPWM(float u)
{
    
    //回転方向と速度の条件分け
    if(u > 0) {
        //CCW(動かして確認)
        Servo1.write(u);
        Servo2.write(0);
    } else if(u < 0) {
        //CW(動かして確認)
        u=abs(u);
        Servo1.write(0);
        Servo2.write(u);
    } else {
        Servo1.write(0);
        Servo2.write(0);
    }

}