amt102-vのライブラリです
Diff: incenc.cpp
- Revision:
- 0:60d903b5752f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/incenc.cpp Thu Feb 20 08:59:27 2020 +0000 @@ -0,0 +1,61 @@ +#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; + } +} \ No newline at end of file