amt102-vのライブラリです

incenc.cpp

Committer:
taisyou
Date:
2020-02-20
Revision:
0:60d903b5752f

File content as of revision 0:60d903b5752f:

#include "incenc.h"
//Xは使いませええん!!なので4ピンでだいじょうぶでs
incEnc::incEnc(PinName p1,PinName p2):A(p1), B(p2)
{
    A.rise(&Ar_f);//関数に引数を入れてはいけない
    A.fall(&Af_f);
    B.rise(&Br_f);
    B.fall(&Bf_f);  
}
incEnc incenc[enc_MAX]= {
    incEnc(PC_10,PC_9),
    incEnc(PC_3,PC_4)
};
void Ar_f()//引数なしにするために
{
    Ar(incenc,enc_MAX);
}
void Af_f()
{
    Af(incenc,enc_MAX);
}
void Br_f()
{
    Br(incenc,enc_MAX);
}
void Bf_f()
{
    Bf(incenc,enc_MAX);
}
void Ar(incEnc *e,uint8_t MAX)
{
    for(int i=0; i<MAX; i++) {
        if(e[i].B==0)e[i].read_buf++;
        else e[i].read_buf--;
        e[i].degree=e[i].read_buf*360/8192;
    }
}
void Af(incEnc *e,uint8_t MAX)
{
    for(int i=0; i<MAX; i++) {
        if(e[i].B==1)e[i].read_buf++;
        else e[i].read_buf--;
        e[i].degree=e[i].read_buf*360/8192;
    }
}
void Br(incEnc *e,uint8_t MAX)
{
    for(int i=0; i<MAX; i++) {
        if(e[i].A==1)e[i].read_buf++;
        else e[i].read_buf--;
        e[i].degree=e[i].read_buf*360/8192;
    }
}
void Bf(incEnc *e,uint8_t MAX)
{
    for(int i=0; i<MAX; i++) {
        if(e[i].A==0)e[i].read_buf++;
        else e[i].read_buf--;
        e[i].degree=e[i].read_buf*360/8192;
    }
}