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; } }